Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 29-07-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Tino Va por buen camino
las sqls bien hechas bien parecen

Cita:
Empezado por marcsc

ese %s que pones que se supone que es?? Con toda seguridad eso es lo que hace que la consulta no te funcione, tanto por el WHERE como en el ORDER BY.
Es el %s lo que hace que dé error la SQL, pero no porque esté mal puesto sino porque de seguro que usa la función Format para formar la SQL; una SQL errónea. El error más típico es comparar un campo de tipo texto con una cadena sin entrecomillar (de ahí el type mismatch o error de disparidad de tipos).

Hace una semana, colgué un hilo en el foro sobre el uso de la técnica de usar Format para generar SQLs dinámicas. En verdad, cuando la SQL es muy variable (variabilidad en el FROM o en la SELECT o incluso en el GROUP BY) no es posible usar solo parámetros y en este caso es cuando es muy útil el uso de Format (combinado con el uso de parámetros en lo posible). Bueno, esto perjudica (minimamente) la eficiencia de la consulta y no será muy transportable por si quieres, por ejemplo, migrar de dBase a Informix. Por no hablar del SQL inyectado ....

Tengo esta rútina para depurar SQLs dinámicas que posiblemente os será útil:

Código Delphi [-]
uses Clipbrd;
procedure DepuraString(ATxt: String);
begin
   Clipboard.Clear;
   Clipboard.SetTextBuf(PChar(ATxt));
   ShowMessage(ATxt);
end;


Esta rutina saca una ventana con la SQL que se forma y además la pega en el portapapeles por lo que puedes llevartela a tu editor SQL favorito, ejecutar y ver exactamente donde falla. Para usarla debes llamarla justo antes del Query.Open (cuando ya está formada la SQL):

Código Delphi [-]
   DepuraString(Query.SQL.Text);
   Query.Open;

Una vez capturada la SQL, es muy fácil depurarla.

Saludos.
__________________
El hombre que no lee no tiene ninguna ventaja sobre el que no sabe leer.

Para hacer una buena exposición hay que escribir más de lo que se va a decir, y luego decir más de lo que se escribió.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 03:46:33.


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