PDA

Ver la Versión Completa : problemas con parametros en adoquery


elsamurai
18-12-2010, 08:27:46
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


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í:
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:
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
select * from cliente where nombre=:variable le puse el nombre de variable a mi parametro y en el codigo del boton tengo esto
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
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
select * from cliente where nombre=:variable <-- ;)
entonces debes buscarlo con ese mismo nombre >
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
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
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> ;)

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 finalwith 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.