Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Tstrings en datasnap (https://www.clubdelphi.com/foros/showthread.php?t=73938)

juank1971 25-05-2011 16:51:52

Tstrings en datasnap
 
Saludos :
Alguien me puede decir como pasar como parametros a un servidor Datasnap un Tstrings, estoy usando delphi XE y DataSanap conectado a MySql funciona todo bien, Cuando paso a un procedimiento del servidor DataSnap un string funciona perfecto pero cuando lo hago con un Tstring me da error

Lo que quiero hacer realmente es ejecutar varios insert en una sentencia pasada al servidor datasnap en un Tstrings

ejemplo
Código SQL [-]
inser into 'documentos' values ('','c:\delphi\delphi.doc',null);
inser into 'documentos' values ('','c:\delphi\delphi1.doc',null);
inser into 'documentos' values ('','c:\delphi\delphi2.doc',null);

este es el procedimiento que uso para ejecutar varias sentencias sql
Código Delphi [-]
procedure TServerMethods1.EjecutaVariasSQL(sql1: Tstrings);
var
  i,j: Integer; s,Sentencia:string;
begin
   for i := 0 to sql1.Count - 1 do
        begin
          s := sql1[i];
          // va ejecutando cad sentencia MySql terminada en ; una a una
          for j := 1 to length(s) do
            if s[j] <> ';' then
              Sentencia := Sentencia + s[j]
            else
            begin
              try
                ServerContainer1.MySqlCon.ExecuteDirect(Sentencia + ';');
                // ejecuta la sentencia independiente
                Sentencia := '';
              except
               // res := 'Error creando tablas de la base de datos'
              end; // try
            end
        end;
end;

este procedimiento funciona bien cuando lo llamo desde el mismo servidor DataSnap con una salva por ejemplo de la base de datos y este procedimiento ejecuta cada sentencia sin problemas, si alguien el sirve lo pueden usar , es ideal para crear y restaurar salvas con sentencias sql

pero al llamarlo del cliente me da error que mas odio en delphi

remote error:accses violation at address in server.exe

y cuando pongo una traza en el servidor el tstrings sql1 llega vacio.

alguna sugerencia de los que estan al asecho .

Gracias por adelantado.

PD:
A veces me da emoción leer una respuesta aqui, incluso cuando veo que tengo una respuesta antes de leer busco un té y me lo tomo mientras leo,
me parece que estoy como en una tertulia de poesia o algo parecedido, y que cada respuesta veo una persona sin rostro que me aconseja como si fuera un medico con una enfermedad grave.

luisgutierrezb 25-05-2011 17:50:45

pues yo siempre batallo con el TStrings, uso el TStringList

juank1971 25-05-2011 19:08:47

en que campo de batalla
 
Gracias por responder:

En que campo de batalla tu te fajas TStrings y tstringlist en servidor Datasnap?

Porque lo probe ahora con TstringsLIst y me da el mismo error, al parecer un servidor Datasnap no recibe parametros Tstrings ni Tstringlist de un cliente, voy a buscar otro tipo de datos a ver

gracias amigo salud y pesetas para ti

juank

Caro 25-05-2011 19:59:25

Hola juank1971, primero aclarar que nose nada de DataSnap. Por lo que dices no tienes problemas al mandar como String, puedes probar de mandar tu StringList como String y al otro lado lo pasas a un StringList nuevamente, para ello puedes utilizar la propiedad CommaText del StringList.

Código Delphi [-]
Valor : String;
..........................
 Valor := StringList1.CommaText;
....................................
....................................
 sql1.CommaText := ValorEnviado;

Saluditos

juank1971 25-05-2011 21:31:40

de donde sacan las ideas aqui
 
Caro perfecto, funciona perfecto, no se de donde sacan las ideas ustedes, primera ves en mi vida que veo CommaText en un tstrings,

Aunque la prueba fue rapida y funciona sin problemas, no se hasta que punto pueda utilizarlo, depende de la cantidad de caracteres que pueda pasar en el string.

porque la idea del Tstrings era porque lo que quiero pasar son muchas lineas , ahora al pasarlas todas unidas en ese string no se hasta cuanto soporte.

Muchas gracias Voy a segir probando, pero ahora en una busqueda por internet me parece que como estoy usando Datasnap y la conexion al servidor Datasnap es mediante DbExpress, los tipos de datos que maneja DbExpress creo que no esta Tstrings, son dbx pero no se cuan sera el equivalente a Tstrings.

De todas formas funciono lo que me digistes Gracias a todos salud y pesetas

juank


La franja horaria es GMT +2. Ahora son las 18:24:11.

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