Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Problema al obtener los datos de una SQL query con Lazarus (https://www.clubdelphi.com/foros/showthread.php?t=81809)

Pedrote 20-12-2012 08:06:25

Problema al obtener los datos de una SQL query con Lazarus
 
Buenas,
tengo una consulta que devuelve un único registro, el resultado de esta consulta es bastante largo y en consecuencia de ello, al recoger en Lazarus el valor se corta. ¿Cómo se puede solucionar?. La variable donde la almaceno esta definida con el tipo "Ansistring", aquí os dejo el fragmento de código:

Código Delphi [-]
 SQLQuery1.SQL.Text := 'SELECT ....';
 SQLQuery1.Open;
 prueba:=SQLQuery1.Fields[0].AsString;  // Prueba esta definida como AnsiString

Mencionar que en la unit esta colocada la opción "{$mode objfpc}{$H+}" y en las opciones del proyecto "Usar ansi string -Sh".

Casimiro Noteví 20-12-2012 11:22:25

¿Que se corta?, ¿pero qué se corta?, ¿la sentencia que le pasas?, ¿el resultado se corta?, ¿pero cómo es el resultado?, ¿en cuánto se corta?...
Explica un poco más.

Pedrote 20-12-2012 11:31:55

Se corta el resultado, con esa consulta genero una salida en formato XML (SELECT .... FOR XML RAW). El resultado se corta cuando la longitud de la variable prueba es de 2037 eso es lo que me devuelve Length(prueba).

Casimiro Noteví 20-12-2012 11:43:20

¿Y qué es prueba?, amigo, que hay que sacarte las palabras ;)

Pedrote 20-12-2012 11:45:39

La variable expuesta en el fragmento de código que he puesto en este foro, donde se almacena el resultado de la consulta.

Pedrote 20-12-2012 12:05:09

Se usa MS SQL, Lazarus 1.1 y en Windows.

Casimiro Noteví 20-12-2012 12:54:46

qP:-) .

Pedrote 20-12-2012 13:19:49

¿Cómo???????

anubis 21-12-2012 04:19:22

Hola,
Creo que ya se que lo que te pasa.
Mira lo que yo hice cuando me ha pasado eso es unir las dos cadenas.

Código Delphi [-]
cadena1:='select codigo from tabla where ';
cadena2:=' codigo  ....';
query1.sql.text:=cadena1+cadena2;

Si te hacen falta mas string las creas, eso sí acuérdate de dejar los espacios si son necesarios, al final de cada string sino te dara error.

espero que te sirva

saludos

Casimiro Noteví 21-12-2012 11:59:16

Es que dice que es el resultado lo que se le corta. Por eso le he preguntado de qué tipo es la variable prueba, pero no ha contestado todavía.

Pedrote 26-12-2012 11:07:45

Ya se solucionó fue una confusión mía, resulta que el resultado lo devolvía en más de una fila (yo pensaba que al generar un XML a partir de un select solo devolvería una única fila), pero por lo visto al crecer tanto lo devolvió en varias filas. Así que recorriendo las filas y concatenado en una variable lo solucione. Gracias a todos por la ayuda.


La franja horaria es GMT +2. Ahora son las 20:30:09.

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