Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda en consulta con SQL (https://www.clubdelphi.com/foros/showthread.php?t=78156)

rufo 24-03-2012 01:48:38

Duda en consulta con SQL
 
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:

Código:

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:
Código Delphi [-]
     ...
     sql.add('select * from Activos_fijos');
     sql.add('where id_activof='+combobox4.Text);
     ...

Por estas:
Código Delphi [-]
      ...
      sql.add('select * from Activos_fijos');
      sql.add('where id_activof = :DATO');
      ParamByName('DATO').AsString:= combobox4.Text;
      ...
Si es un ADOQuery, sería :
Código Delphi [-]
     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:
Código Delphi [-]
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

Código Delphi [-]
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

Código Delphi [-]
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.


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

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