Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   problemas con parametros en adoquery (https://www.clubdelphi.com/foros/showthread.php?t=71432)

elsamurai 18-12-2010 08:27:46

problemas con parametros en adoquery
 
hola a todo el mundo hace algunos dias pedi ayuda para poder lograr un reporte de un solo cliente y no de toda la base de datos,con ayuda de los expertos del foro entendi como hacerlo,pero ahora tengo una duda,estoy usando un componente adoquery y tengo las siguientes propiedades asi,

sql=select * from clientes

parameters=nombre del tipo isstring

conectionstring =base de datos

y en el boton de imprimir tengo este codigo

Código Delphi [-]
with adocliente do
close;
parameters.parambyname.('nombre').value:=nombre
open
end;
end;
form2.quickrep1.preview;
form2.close;
end;
end.

que ustedes opinan,mi intensión es poder imprimir el cliente que seleccione a través de el dbgrib,cuando tengas tiempo agradecería una pequeña ayuda,gracias desde ahora

rgstuamigo 18-12-2010 16:24:57

Existe dos formas de crear un parametro para un Dataset(Query,Table,etc) una es atraves de la propiedad Parameters, ya sea agregandolo manualmente en tiempo de Diseño o creandolo en ejecucion atraves de los métodos Add ó AddParameter; y la otra forma es atraves de la consulta SQL anteponiendo los dos puntos( : ) a un nombre específico que queramos.;)

¿Pero qué te quiero decir con esto?
Bueno. la cuestion es que en tu consulta SQL que has puesto en ningun momento estas haciendo uso del parametro.;)
Para que lo hagas,tu consulta SQL en tu DataSet(Query) debería ser así:
Código SQL [-]
select * from clientes where Nombre = :Nombre_de_Tu_Parámetro
Al poner los dos Puntos, automáticamente se está creando un parámetro en el DataSet con el nombre "Nombre_de_Tu_Parámetro", lo cual significa que ya no sería necesario crearlo en la propiedad Parameters. ;)
Ahora sí ya se podría hacer algo como:
Código Delphi [-]
with adocliente do
close;
parameters.parambyname.('Nombre_de_Tu_Parámetro').value:=nombre
open
end;
...
...
Saludos...:)

elsamurai 18-12-2010 16:50:42

saludos,gracias por responderme,mira modifique mi consulta y puse
Código SQL [-]
select * from cliente where nombre=:variable
le puse el nombre de variable a mi parametro y en el codigo del boton tengo esto
Código Delphi [-]
with  dm.ADOfactura do
begin
 close;
parameters.ParamByName('nombre').Value:=variable ;
  open;
     if IsEmpty then
      begin
        ShowMessage('Registro no existe...');
        exit;
      end;
end;
rptfactura.quickrep1.preview;
rptfactura.close;


cuando lo intento ejecutar me dice un error que dice que la palabra variable no esta declarada,que crees que pueda ser ?

rgstuamigo 18-12-2010 16:55:25

Cita:

Empezado por elsamurai (Mensaje 385340)
cuando lo intento ejecutar me dice un error que dice que la palabra variable no esta declarada,que crees que pueda ser ?

Debes entender que si has creado un parametro de nombre "variable" en tu consulta SQL
Código SQL [-]
select * from cliente where nombre=:variable  <--  ;)
entonces debes buscarlo con ese mismo nombre >
Código Delphi [-]
with  dm.ADOfactura do
begin
 close;
parameters.ParamByName('variable').Value:=variable ;//<--en esta linea estaba tu error ;)
...
...
Saludos...:)

elsamurai 18-12-2010 17:01:33

mira probe lo que me dices,puse lo siguiente
Código Delphi [-]
with  dm.ADOfactura do
begin
 close;
parameters.ParamByName('variable').Value:= variable ;
  open;
     if IsEmpty then
      begin
        ShowMessage('Registro no existe...');
        exit;
      end;
end;
rptfactura.quickrep1.preview;
rptfactura.close;
y todavia me dice que variable esta sin declarar

rgstuamigo 18-12-2010 17:15:04

Cita:

Empezado por elsamurai (Mensaje 385343)
mira probe lo que me dices
...
...
y todavia me dice que variable esta sin declarar

Haber...Pusiste la consulta SQL en la propiedad SQL de tu DataSet (ADOQuery)?:confused:
Por que si no has puesto pues estamos fritos.:o;); Humm...bueno en todo caso lo vamos a poner por código> ;)

Código Delphi [-]
with dm.ADOfactura do
begin
 Close;
 SQL.Text:='select * from cliente where nombre = :variable';//añado mi consulta SQL que quiero ejecutar
 Parameters.ParamByName('variable').Value:=Edit1.Text;// Asigno lo que tengo e mi Edit a mi parámetro de nombre "Variable"
 Open;
   if IsEmpty then
    begin
     ShowMessage('Registro no existe...');
     exit;
    end;
...
...
Saludos...:)

elsamurai 20-12-2010 06:39:00

muchas gracias rgstuamigo,el codigo que me diste me sirvio mucho y me saco de una gran duda que tenia desde hace tiempo,espero que este tema le pueda servir a otros como me sirvio a mi,gracias de nuevo,asi es como deje el codigo final
Código Delphi [-]
with dm.ADOfactura do
begin
 Close;
 SQL.Text:='select * from clientes where nombre = :variable';//añado mi consulta SQL que quiero ejecutar
 Parameters.ParamByName('variable').Value:=dbedit1.Text;;// Asigno lo que tengo e mi Edit a mi parámetro de nombre "Variable"
 Open;

rptfactura.quickrep1.preview;
rptfactura.close;
  end
end;

end.


La franja horaria es GMT +2. Ahora son las 07:54:51.

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