Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Copiar DataSnap server a otra PC (https://www.clubdelphi.com/foros/showthread.php?t=93430)

Carlos Lopez 25-09-2018 04:59:36

Copiar DataSnap server a otra PC
 
Hola gente. Estoy desrrollando una app que usa una base de datos firebird, conectado con datasnap. En la PC donde fue desarrollada la aplicacion anda perfectamente. Pero me sucede que al intentar correr el archivo "DNserver.exe" en otra computadora no conecta con la base de datos. Podrian guiarme por donde puede estar el error, o lo que tengo que hacer?
Estube leyendo sobre agregas las dll. a la pc destino, pero a pesar de mis intentos no hubo exito.

Casimiro Notevi 25-09-2018 09:09:29

Te aconsejo nuestra guía de estilo, saludos.

Carlos Lopez 25-09-2018 23:12:43

mis disculpas si no supe preguntar o es confuso.
si es por duplicar, he buscado el tema y no existe, al menos como he hecho las busquedas.

manelb 26-09-2018 07:21:55

Podrías decirnos que error te sale exactamente ???

Podría ser el antivirus ?? o el cortafuegos ?? Algún problema con el puerto ??

Saludos

Neftali [Germán.Estévez] 26-09-2018 09:19:24

Estaría saber qué DLL's has copiado.
¿Has probado a connectar desde el PC usando algunas de las herramientas para Firebird? Para saber si el único que no conecta es el Server o no conecta nadie.
El error que te da, tal como comentan los compañeros, también estaría bien saberlo.

Carlos Lopez 26-09-2018 18:49:18

Muchas gracias por responder... con sus respuestas me guian para seguir probando.


las dos computadoras (32 bits) tienen el mismo servidor firebird 2.5. instalado y corriendo.

las aplicaciones "VCL form 32 bits" conectan a la misma base de datos sin problemas desde ambas PC.
el problema lo tengo al conectar el movil con el servidor datasnap (copiado a la pc sin delphi instalado)
y no me da ningun error y es lo que me llama la atención


recuerden que no puedo correr el debug ya que en la pc (con delphi) si funciona.



bien, inicia correcto el DSserver (agregue unos label para que me indique por donde pasa...).
creo que el error esta en el TSQLconnection (server method) por que agregue un contador en el evento beforeconnect y hace los intentos pero no se envia datos al celular.
y nunca llega al evento after connect tambien cargue unos labels.

agregue en uses todos las librerias que encontre en la web. midas, las de dbexpress y las winapi

agregue unos dll (en la carpeta del exe, en system 32 y wow64) (me falta en la papelera de reciclaje :') :') :') ) que tambien estuve leyendo: midas, fbclient, dbxfb.

antivirus y firewall desactivados.

de nuevo agradezco mucho su ayuda...

Casimiro Notevi 26-09-2018 19:14:57

Cita:

Empezado por Carlos Lopez (Mensaje 528619)
agregue en uses todos las librerias que encontre en la web. midas, las de dbexpress y las winapi
agregue unos dll (en la carpeta del exe, en system 32 y wow64) (me falta en la papelera de reciclaje :') :') :') ) que tambien estuve leyendo: midas, fbclient, dbxfb.

Es que así no se hacen las cosas, hay que ir paso a paso, uno a uno, anotando lo que se hace, el resultado que da. Dejarlo como estaba si no funciona. Y volver a empezar con otro paso...
De esa forma puedes hacer miles de cosas distintas y jamás vas a saber cuál es el problema, suponiendo que se solucione por casualidad.

Carlos Lopez 26-09-2018 19:40:44

buenas tardes casimiro muchas gracias por responder.


todas las modificaciones fueron hechas paso a paso, segun las fui encontrando en la red.
De hecho creo versiones de cada una en carpetas deferentes por si se rompe todo.



appmovil_v1 - midas
appmovil_v2 - dbexpress
appmovil_v3 - las dos anterioes combinadas.
y asi... hasta la v17 que estoy ahora

todos los dll y uses que fui agregando llegaban las mismo punto

entrar al beforeconnect del sqlconnection
y nunca llega al afterconnect

llegue a un comentario que habla de las versiones de las librerias dbclient, y dbxfb.
voy a verificar y ver si es eso (aunque usé el mismo instaldor de firebird server para ambas computadoras)

Casimiro Notevi 26-09-2018 19:46:37

Bien hecho, entonces.
Yo probaría a hacer un proyecto simple de pruebas, un simple botón que conecte y punto. A ver si así funciona.

Carlos Lopez 27-09-2018 05:02:16

Buenas.
Hice una app que me de alguna señal de vida al iniciar el servicio dsserver

Al iniciar el componente indi responde al IP del servidor y funciona bien.
Pero necesito que funcione con la base de datos y ahí estoy perdido.



No se o no entiendo que hace delphi con su ejecutable.

Que hace que no funcione en otra pc.


No puede ser que tenga que instalar delphi en todos los servidores

Casimiro Notevi 27-09-2018 10:06:30

El problema, al igual que te han preguntado otros compañeros, es que no sabemos exactamente qué haces ni qué problema tienes, errores, código, etc...
Falta información clara.

Carlos Lopez 02-10-2018 21:09:37

buenas tardes. gracias a todos los colaboran con el problema que tengo,

agrego el codigo de la aplicacion servidor, a ver si se ilumina el caino.


como dije antes en la app del celular ni en la aplicacion, no me figura ningun error, solo no muestra nada en la grilla del celular.



unit ServerMethodsUnit1;

interface

uses System.SysUtils, System.Classes, System.Json,
DataSnap.DSProviderDataModuleAdapter,
Datasnap.DSServer, Datasnap.DSAuth, Data.DBXFirebird, Data.FMTBcd,
Datasnap.Provider, Data.DB, Data.SqlExpr,
// librerias de testeo
winapi.windows, datasnap.dsconnect, datasnap.dbclient, midaslib, midas;

type
TServerMethods1 = class(TDSServerModule)
coneccion: TSQLConnection;
itemactivo: TSQLDataSet;
itemactivoDSP: TDataSetProvider;
procedure coneccionBeforeConnect(Sender: TObject);
procedure coneccionAfterConnect(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function EchoString(Value: string): string;
function ReverseString(Value: string): string;
function editarconecciontype(): integer;
end;

var

implementation

{$R *.dfm}

uses System.StrUtils, principalfrmdn;

function TServerMethods1.EchoString(Value: string): string;
begin
Result := Value;
end;

function TServerMethods1.ReverseString(Value: string): string;
begin
Result := System.StrUtils.ReverseString(Value);
end;

// ----------------------- mis agregados ------------------------------

procedure TServerMethods1.coneccionAfterConnect(Sender: TObject);
begin
principal.labelestado.Caption := principal.labelestado.Caption + ' - OK';
end;

procedure TServerMethods1.coneccionBeforeConnect(Sender: TObject);
begin
editarconecciontype;
end;

function TServerMethods1.editarconecciontype() :integer;
begin
inc(contador);
principal.pathbd.Caption := coneccion.Params.Values['Database']+' -> '+ IntToStr(contador);
end;

end.


unit ServerContainerUnit1;

interface

uses System.SysUtils, System.Classes,
Datasnap.DSTCPServerTransport,
Datasnap.DSServer, Datasnap.DSCommonServer,
IPPeerServer, IPPeerAPI, Datasnap.DSAuth,
// librerias de testeo
winapi.windows, Data.SqlExpr, Datasnap.Provider, datasnap.dsconnect, datasnap.dbclient, midaslib, midas;

type
TServerContainer1 = class(TDataModule)
DSServer1: TDSServer;
DSTCPServerTransport1: TDSTCPServerTransport;
DSServerClass1: TDSServerClass;
procedure DSServerClass1GetClass(DSServerClass: TDSServerClass;
var PersistentClass: TPersistentClass);
private
{ Private declarations }
public
end;

var
ServerContainer1: TServerContainer1;

implementation

{$R *.dfm}

uses
ServerMethodsUnit1;

procedure TServerContainer1.DSServerClass1GetClass(
DSServerClass: TDSServerClass; var PersistentClass: TPersistentClass);
begin
PersistentClass := ServerMethodsUnit1.TServerMethods1;
end;

end.





unit principalfrmdn;

interface

uses Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls, WinSock, Data.DB, Data.SqlExpr, Vcl.ExtCtrls,
// librerias de testeo
winapi.windows, Datasnap.Provider, datasnap.dsconnect, datasnap.dbclient, midaslib, midas;

type
Tprincipal = class(TForm)
labeltitulo: TLabel;
labelestado:TLabel;
pathbd: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;

var
principal: Tprincipal;
contador : integer;

implementation

uses ServerMethodsunit1, servercontainerunit1;

{$R *.dfm}

end.




itemactivoDSP.DataSet = itemactivo


itemactivo.SQLConnection = coneccion
itemactivo.CommandText = 'Select * From item where item.activo like 0'



coneccion.Driver = 'firebird'

Casimiro Notevi 02-10-2018 23:20:51

Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración :)

Y recuerda poner los tags al código fuente, ejemplo:



Gracias :)

Carlos Lopez 03-10-2018 17:35:00

Buenas dias.


Pese a mis intentos mas ferreos no pude lograr que funcione y ya me decepcioné.
Pero una solucion que me recomendaron por otros foros fue que intente con otros componentes de manejo de base de datos firebird.
Buscando por todos lados se evidencia que (aparentemente) fireDAC no necesita el cúmulo de drivers que necesita dbexpress. No se si es asi pero...

reemplace los componentes dbexpress por FireDAC
... y salio funcionando como debia hacerlo, al grito de "Eureka" como si hubiese descubierto algo.


segun opiones de otros medios mi problema con dbexpress puede ser la incompatibilidad con los drivers. (copie los mismo dll a todas las maquinas donde intenté pero bueno).

En algun otro momento con mas tiempo intentare probar otras versiones para ver si logro conectar con dbexpress.


Agradezco el tiempo y la sabiduría que me han ofrecido, y pido disculpas por las fallas cometidas.


La franja horaria es GMT +2. Ahora son las 01:38:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi