Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como buscar un nombre (https://www.clubdelphi.com/foros/showthread.php?t=88559)

rufo 23-06-2015 04:46:39

Como buscar un nombre
 
Buenas noches amigos, quiero pedirles su apoyo resulta que tengo una tabla en el cual tengo el campo nombre del acreedor entonces quiero hacer una consulta en esta tabla pero desde delphi que al poner el nombre del acreedor me arroje los registros que tenga este, les pongo mi codigo en el cual me arroja un error y es ahi donde estoy atorado y solicito su apoyo, de antemano gracias.

Código Delphi [-]

procedure TModificar1.Button1Click(Sender: TObject);
begin
  if edit5.Text<>'' then
 begin
    with dm1.Q_cacreedor do
    begin
      active:=false;
      sql.Clear;
      sql.add('select * from Cacreedor');
      sql.add('where nacredor='+edit5.text);
      active:=true;
      if recordcount=0 then
         messagedlg('No se encontro el ningun movimiento, intente de nuevo',mtinformation,[mbok],0);
          begin
           combobox2.Text:=fieldbyname('tipoacre').asstring;
           edit6.Text:=fieldbyname('fecha').asstring;
           edit10.Text:=fieldbyname('monto').asstring;
         end;
     end;
  end;
end;

El error que me arroja al dar clic en el boton es el siguiente:

"Project Principal.exe raised exception class EDBEngineError with message 'General SQL error. Pocos parametros, se esperaba 1"

Espero su ayuda y gracias de antemano.

ralf8727 23-06-2015 05:17:18

Código Delphi [-]
procedure TModificar1.Button1Click(Sender: TObject); 
begin   
  if edit5.Text<>'' then  
  begin     
    with dm1.Q_cacreedor do     
    begin       
      active:=false;       
      sql.Clear;       
      sql.add('select * from Cacreedor');       
      sql.add('where nacredor=:acreedor');
      Parameters.ParamByName('acreedor').Value:=edit5.text
      active:=true;       
      if recordcount=0 then          
        messagedlg('No se encontro el ningun movimiento, intente de nuevo',mtinformation,[mbok],0);           
      begin            
        combobox2.Text:=fieldbyname('tipoacre').asstring;            
        edit6.Text:=fieldbyname('fecha').asstring;            
        edit10.Text:=fieldbyname('monto').asstring;          
      end;      
    end;   
  end;
end;
pasa el edit5 como un parametro

AgustinOrtu 23-06-2015 06:02:14

Definitivamente la mejor solucion es usar parametros
Por curiosidad cual era el contenido de Edit5.Text cuando te da error? Siempre te da error?

rufo 23-06-2015 17:13:38

Disculpen mi ignorancia pero como le hago para que mi edit se pase a parametros y de antemano gracias por su ayuda.

AgustinOrtu 23-06-2015 17:32:30

En el código que publicaron se pasa el contenido del edit por parámetro

ralf8727 23-06-2015 20:21:33

cuando generes consultas pasas los parametros asi

ejemplo

Código Delphi [-]
ADOQuery2.sql.add('select nombre,telefono from clientes where id=:arametro1 and activo=:arametro2')
ADOQuery2.Parameters.ParamByName('arametro1').Value:=el parametro
ADOQuery2.Parameters.ParamByName('arametro2').Value:=el parametro
ADOQuery2.ExecSQL;
ADOQuery2.open;
los dos puntos le dicen a delphi que son parametros

otra opcion es guardar la consulta en un string

ejemplo

Código Delphi [-]
var
sql:string;

begin

sql:= 'select nombre,telefono from clientes where id='+id.text+' and '+ 'activo='+activo.text;

adoquery2.sql.add(sql);
ADOQuery2.ExecSQL;
ADOQuery2.open;


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

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