Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2010
Uni-Sol Uni-Sol is offline
Registrado
 
Registrado: may 2007
Posts: 4
Poder: 0
Uni-Sol Va por buen camino
Consulta con mas de 4096 caracteres

Buenos días.

Tengo un problema con una consulta realizada en una Tquery y es que mi consulta es un poco bestia y ocupa mas de 4096 carácteres con lo cual al realizarla sobre un tquery me corta el codigo sql. Esta query la quiero volcar en un dbgrid.

¿Sabeis si hay alguna forma de poner un consulta con mas 4096 caracteres en un tquery?

Muchas gracias de antemano y un saludo.
Responder Con Cita
  #2  
Antiguo 12-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Un tquery de qué componentes?
Responder Con Cita
  #3  
Antiguo 12-04-2010
Uni-Sol Uni-Sol is offline
Registrado
 
Registrado: may 2007
Posts: 4
Poder: 0
Uni-Sol Va por buen camino
No se si te refieres a esto pero utilizo el componente TQuery que viene en la pestaña del Data Access de delphi 5. Utilizo el TQuery, el TDataSource y un TDBGrid.
Responder Con Cita
  #4  
Antiguo 12-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Quiéres decir que metes la sentencia, lo guardas y cuando lo abres ya lo ha recortado?, ¿y a cuánto te lo corta?, he hecho una pruebecita con un proyecto nuevo, he puesto un tquery del que comentas y he metido un texto de más de 5000 caracteres en su propiedad 'sql', lo he guardado, cerrado el proyecto, lo he vuelto a abrir y ahí estaban todos los caracteres, con delphi 5 también.
Responder Con Cita
  #5  
Antiguo 12-04-2010
Uni-Sol Uni-Sol is offline
Registrado
 
Registrado: may 2007
Posts: 4
Poder: 0
Uni-Sol Va por buen camino
Tienes razón, he probado lo que has dicho de poner la consulta entera dentro de la propiedad sql del tquery y si que me funciona. Pero yo lo hago rellenando la query desde código. Te pongo el principio del código para que veas como añado la consulta.
Código Delphi [-]
Qry_Principal.Active := False;
Qry_Principal.sql.Clear;
Qry_Principal.SQL.Add('select distinct d.area_s,tp,mer,ter,eer,aer,mec,tec,dc,eec,aec,dp,pm,aep,mrs,ers');
Qry_Principal.SQL.Add(' from detall_q_sit d,');
// Total Pendientes
Qry_Principal.SQL.Add('(select area, count(*) as tp');
Qry_Principal.SQL.Add(' from detall_q_sit');
Qry_Principal.SQL.Add(' group by area) t_p,');
.
.
.
.

Qry_Principal.Active := True;
Asi voy añadiendo la consulta en la Tquery. El problema viene cuando al ejecutarla me da un error de que falta un parentesis en la consulta y para ver que me ha generado me detengo justo antes de que active la query y miro la consulta que me ha generado. Veo el chorro de la consulta y justo en el caracter 4096 se corta y empiezan unos serie de caracteres (muchos) como estos "#0#0#0#0#0#0#0#0#0#0#0#0#8',R'#0'È~-'#7'Dª'#0".

No se si me he explicado bien . Pero bueno ahi reside mi duda. ¿Porque no me genera correctamente la sentencia justo cuando llega a ese número de caracteres?

Última edición por marcoszorrilla fecha: 12-04-2010 a las 18:43:29.
Responder Con Cita
  #6  
Antiguo 12-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, eso es un problema, pero es del delphi, que dejaron poco espacio para presentar el código, de todas formas, si lo seleccionas entero y lo pegas a un editor cualquiera verás que está el código completo.
Responder Con Cita
  #7  
Antiguo 12-04-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puede ser que al añadirla "a trazos" te esté incluyendo caracteres de LF y CR (Final de carro y salto de línea).
Tal vez deberías utilizar alias para intentar hacerla más pequeña o intentar eliminar esos caracteres a medida que añades las partes.

Otra opción que puedes probar es acceder vía la propiedad Text:

Código Delphi [-]
...
Qry_Principal.SQL.Text := Qry_Principal.SQL.Text + ' from detall_q_sit d,';
...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 12-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Uni-Sol Ver Mensaje
[..] Veo el chorro de la consulta y justo en el caracter 4096 se corta y empiezan unos serie de caracteres (muchos) como estos "#0#0#0#0#0#0#0#0#0#0#0#0#8',R'#0'È~-'#7'Dª'#0".

No se si me he explicado bien . Pero bueno ahi reside mi duda. ¿Porque no me genera correctamente la sentencia justo cuando llega a ese número de caracteres?
Seguramente la sentencia tiene realmente un error.
Para más comodidad puedes hacer lo que dice Neftalí, usar la propiedad text:


Cita:
Empezado por Neftali Ver Mensaje
Puede ser que al añadirla "a trazos" te esté incluyendo caracteres de LF y CR (Final de carro y salto de línea).
Tal vez deberías utilizar alias para intentar hacerla más pequeña o intentar eliminar esos caracteres a medida que añades las partes.
Otra opción que puedes probar es acceder vía la propiedad Text:[..]
Neftalí, puede ser que el fallo también esté ahí, pero lo que he comentado antes ocurre con delphi5, ese 'edit' está limitado a 4 kb.

Responder Con Cita
  #9  
Antiguo 12-04-2010
Uni-Sol Uni-Sol is offline
Registrado
 
Registrado: may 2007
Posts: 4
Poder: 0
Uni-Sol Va por buen camino
Tienes razón Casimiro, en la ventana de evaluate/modify accedía a la propiedad text para coger la consulta y por lo visto es lo que tu dices, está limitado a 4kb y por eso después del carácter 4096 me ponía los caracteres que he comentado antes, no sabía que pasaba esto en delphi 5. He pasado la propiedad Tquery.SQL.text a un memo y me ha puesto la consulta correctamente y de allí ya he podido ver donde residía el error, que he solucionado y ya me muestra los datos en el dbgrid.

Muchísimas gracias Casimiro y a ti también Naftalí sin vuestra ayuda no me hubiera salido.

Un saludo!!
Responder Con Cita
  #10  
Antiguo 12-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ya me tocó en su día luchar con ese problema hasta descubrirlo
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
Consulta en Delphi de más de 255 caracteres PallyRS SQL 6 17-02-2009 22:19:18
Reconocimiento de caracteres (OCR) Bauhaus1975 Varios 2 03-10-2008 09:36:11
Conversor de Caracteres Drake OOP 4 21-03-2007 12:51:42
Almacenar mas de 255 caracteres kloud Firebird e Interbase 1 05-05-2006 09:46:35
Codificación de caracteres elcigarra Varios 4 25-11-2005 22:13:15


La franja horaria es GMT +2. Ahora son las 13:06:32.


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