Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2012
Pedrote Pedrote is offline
Miembro
 
Registrado: dic 2007
Posts: 35
Poder: 0
Pedrote Va por buen camino
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".

Última edición por Pedrote fecha: 20-12-2012 a las 08:19:16.
Responder Con Cita
  #2  
Antiguo 20-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿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.
Responder Con Cita
  #3  
Antiguo 20-12-2012
Pedrote Pedrote is offline
Miembro
 
Registrado: dic 2007
Posts: 35
Poder: 0
Pedrote Va por buen camino
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).
Responder Con Cita
  #4  
Antiguo 20-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y qué es prueba?, amigo, que hay que sacarte las palabras
Responder Con Cita
  #5  
Antiguo 20-12-2012
Pedrote Pedrote is offline
Miembro
 
Registrado: dic 2007
Posts: 35
Poder: 0
Pedrote Va por buen camino
La variable expuesta en el fragmento de código que he puesto en este foro, donde se almacena el resultado de la consulta.
Responder Con Cita
  #6  
Antiguo 20-12-2012
Pedrote Pedrote is offline
Miembro
 
Registrado: dic 2007
Posts: 35
Poder: 0
Pedrote Va por buen camino
Se usa MS SQL, Lazarus 1.1 y en Windows.
Responder Con Cita
  #7  
Antiguo 20-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
.
Responder Con Cita
  #8  
Antiguo 20-12-2012
Pedrote Pedrote is offline
Miembro
 
Registrado: dic 2007
Posts: 35
Poder: 0
Pedrote Va por buen camino
¿Cómo???????
Responder Con Cita
  #9  
Antiguo 21-12-2012
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 21-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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.
Responder Con Cita
  #11  
Antiguo 26-12-2012
Pedrote Pedrote is offline
Miembro
 
Registrado: dic 2007
Posts: 35
Poder: 0
Pedrote Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener datoa de un query a otra pantalla gEry Conexión con bases de datos 6 20-11-2007 01:43:53
obtener datos de registros de resultado de un query thelibmx MySQL 6 15-11-2007 00:22:45
Problema con query para una base de datos de Access omarifr SQL 3 27-07-2007 00:36:50
[Lazarus] GTK+-devel en SUSE. problema instalar lazarus de esa libreria. sakuragi Lazarus, FreePascal, Kylix, etc. 3 28-09-2006 03:31:09
query y obtener clave primaria monti SQL 6 13-12-2005 21:21:36


La franja horaria es GMT +2. Ahora son las 18:50:28.


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
Copyright 1996-2007 Club Delphi