PDA

Ver la Versión Completa : Duda en consulta con SQL


rufo
24-03-2012, 01:48:38
Buenas tardesnoches amigos, resulta que estoy atoradillo en una consulta en la cual no le veo en donde pueda estar la falla o el porque el error, les anexo este codigo:


procedure TDEPRECIACIONES.Button3Click(Sender: TObject);
begin
if combobox4.Text<>'' then
begin
with dm1.Q_activos do
begin
active:=false;
sql.Clear;
sql.add('select * from Activos_fijos');
sql.add('where id_activof='+combobox4.Text);
active:=true;
if recordcount=0 then
messagedlg('No se encontro el Activo Fijo, intente de nuevo',mtinformation,[mbok],0);
begin
label16.Caption:=fieldbyname('costo').asstring;
label18.Caption:=fieldbyname('fecha').asstring;
end;
end;
end;
end;


El anterior codigo es en un boton en el cual eligo una opcion de un combobox y al da clic en el boton me dice que Error que me falta un operador pero no se que operador se refiera, bueno espero que me ayuden y de antemano gracias.

P.D. Uso Delphi 2007

ecfisa
24-03-2012, 02:09:47
Hola rufo.

Te faltó aclarar con que componentes estas trabajando, pero reemplazá estas líneas:

...
sql.add('select * from Activos_fijos');
sql.add('where id_activof='+combobox4.Text);
...


Por estas:

...
sql.add('select * from Activos_fijos');
sql.add('where id_activof = :DATO');
ParamByName('DATO').AsString:= combobox4.Text;
...

Si es un ADOQuery, sería :

Parameters.ParamByName('DATO').AsString:= combobox4.Text;


Saludos.

Caral
24-03-2012, 02:25:51
Hola
Aparte de lo que dice mi amigo yo lo haria asi:

procedure TDEPRECIACIONES.Button3Click(Sender: TObject);
begin
if combobox4.Text<>'' then
begin
with dm1.Q_activos do
begin
active:=false;
sql.Text:= ' select * from Activos_fijos '+
' where id_activof = :combo4';
Parameters[0].Value:= combobox4.Text;
active:=true;
if recordcount=0 then
messagedlg('No se encontro el Activo Fijo, intente de nuevo',mtinformation,[mbok],0);
begin
label16.Caption:=fieldbyname('costo').asstring;
label18.Caption:=fieldbyname('fecha').asstring;
end;
end;
end;
end;
No me gusta el add.;)
Saludos

maru_onofre
26-03-2012, 17:19:07
Yo lo realizo de esta manera espero sea de tu ayuda


dm.ADOQuery_libros_filtro.Close;
dm.ADOQuery_libros_filtro.SQL.Clear;
dm.ADOQuery_libros_filtro.SQL.Add('Select* from libros where couter like :cod');
dm.ADOQuery_libros_filtro.Parameters.ParamByName('cod').Value:= '%'+txtdato.Text+'%';
dm.ADOQuery_libros_filtro.Open;


if (dm.ADOQuery_libros_filtro.IsEmpty) then
begin
ShowMessage('El Dato ('+txtdato.Text+') No Esta Registrado ');
end
else
begin
DBGrid1.Visible:= true;
DBGrid1.DataSource:= dm.DsFiltro;

rufo
26-03-2012, 18:52:53
Ok gracias a los que me respondieron pero he puesto en los ejemplos que me han dado pero no me devuelve nada de informacion ni un error y los componentes que estoy utilizando es un combobox en el cual dentro de este mismo esta una lista y la cual eligiendo una opcion me muestre sus demas datos en un label, bueno espero que me den mas sugerencias y de antemano gracias.

ecfisa
26-03-2012, 19:45:04
Hola rufo.

No sé que puedas estar haciendo ya que no he visto como implementaste las sugerencias y desconozco los valores de la tabla que usas...

Para que puedas revisar con tranquilidad un ejemplo en funcionamiento, te adjunto uno utilizando ADO sobre la tabla COUNTRY (dbdemos.mdb) que viene con Delphi.

Saludos.

rufo
26-03-2012, 21:34:45
Listo ya me quedo gracias a todos los que me contestaron de todos modos les anexo la solucion


procedure TDEPRECIACIONES.Button3Click(Sender: TObject);
begin
if combobox4.Text<>'' then
begin
with dm1.Q_activos do
begin
active:=false;
sql.Clear;
sql.Add(' select * from Activos_fijos ');
sql.add('where activo = :activo');
ParamByName('activo').Value:= ComboBox4.Text;
active:=true;
if recordcount=0 then
messagedlg('No se encontro el Activo Fijo, intente de nuevo',mtinformation,[mbok],0);
begin
label16.Caption:=fieldbyname('costo').asstring;
label18.Caption:=fieldbyname('fecha').asstring;
end;
end;
end;
end;


Cuando termine mi proyecto Depreciaciones lo subera, y gracias a todos.