PDA

Ver la Versión Completa : Ayuda con consulta SQL


n03l
18-04-2007, 20:51:35
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


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


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:


select bla, bla, bla
WHERE numero = 4
WHERE numero = 5


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



select bla, bla, bla
WHERE numero = :parametro


y sustituir el parámetro cada vez:


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.