Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con consulta SQL (https://www.clubdelphi.com/foros/showthread.php?t=42641)

n03l 18-04-2007 20:51:35

Ayuda con consulta SQL
 
Hola me podrian hechar una manito en este codigo cuando lo ejecuto me funciona bien, pero si lo vuelvo a ejecutar me da error


Frm_reporte.ADOQuery1.Close;
Frm_reporte.ADOQuery1.SQL.Add('WHERE numero = ' + DBEdit1.Text);
]Frm_reporte.ADOQuery1.Open;
Frm_reporte.QuickRep1.Preview;

ContraVeneno 18-04-2007 21:16:35

Voy a utilizar mis poderes de adivino.... *concentrado* ... mmm... nop, no funciona, sin saber cuál es el error es muy dificil poder ayudarte. :rolleyes:

Ya en serio, ¿cuál es el error que te marca y que línea te marca error?

egostar 18-04-2007 21:21:26

Te hace falta "Limpiar" el Query, pero además mete la sentecia SELECT en el mismo bloque

Código SQL [-]
Frm_reporte.ADOQuery1.Close; 
Frm_reporte.ADOQuery1.Clear; 
Frm_reporte.ADOQuery1.SQL.Add('SELECT * FROM TABLA');
Frm_reporte.ADOQuery1.SQL.Add('WHERE numero = ' + DBEdit1.Text); 
Frm_reporte.ADOQuery1.Open; 
Frm_reporte.QuickRep1.Preview;

O usar Lo siguiente

Código SQL [-]
Frm_reporte.ADOQuery1.Close; 
Frm_reporte.ADOQuery1.SQL.Text := 'SELECT * FROM TABLA WHERE numero = ' + DBEdit1.Text; 
Frm_reporte.ADOQuery1.Open; 
Frm_reporte.QuickRep1.Preview;

Salud OS.

roman 18-04-2007 21:24:15

Aunque opino también que debes dar todos los datos posibles, imagino que tu problema es que la segunda vez que ejecutas, la clásula WHERE se añade a la que ya tenías de la primera vez:

Código SQL [-]
select bla, bla, bla
WHERE numero = 4
WHERE numero = 5

Lo que tendrías que hacer, según creo, es parametrizar la consulta:


Código SQL [-]
select bla, bla, bla
WHERE numero = :parametro

y sustituir el parámetro cada vez:

Código Delphi [-]
Frm_reporte.ADOQuery1.Close;
Frm_reporte.ADOQuery1.Parameters.ParamByName('parametro').Value = StrToInt(DBEdit1.Text);
Frm_reporte.ADOQuery1.Open;

// Saludos

n03l 18-04-2007 22:03:40

jeje tienes razon contraveneno, el error es el siguiente:

raise exception class EOleExteception with message 'Error de Sintaxis (falta operador) en la expresion de consulta 'numero = 266 WHERE numero =266". Process stopped. Use step or run to continue

gracias a todos por responder tan rapido... boy a probar todas las sugerencias que me dieron.

salu2.


La franja horaria es GMT +2. Ahora son las 11:10:25.

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