PDA

Ver la Versión Completa : Error EDatabase Error


leandro_matiasp
24-01-2012, 16:39:43
Hola a todos gracias por ayudarme con el error anterior pero ahora tengo otro que me desaliente mucho mas aun, el caso es que tengo implementada la misma consulta en otro sistema y anda perfecto. Les comento que tengo un componente TMyQuery conectado con el MydbConection. Es una consulta sencilla en SQL se las paso

SELECT * FROM cliente WHERE nombre LIKE : pnombre (el espacio entre ":" y "pnombre" es por que me salia :p esto por eso)

la consulta esta en la propiedad SQL del componente

el codigo que ejecuta la consulta es el siguiente

procedure Tform_buscarcliente.ed_nombreChange(Sender: TObject);
var nombre :string;
begin
with modulo_db.consulta_cliente do
begin
Active:=False;
nombre:=ed_nombre.Text+'%';
ParamByName('pnombre').Value:=nombre;
Active:=True;
grilla_clientes.DataSource:=fuente_clientes;
grilla_clientes.DataSource.DataSet.Refresh;

end;

el error me da en tiempo de ejecución donde me dice que el el parametro pnombre no se encontro "Class EDatabase Error parameter pnombre not found" me esta volviendo loco como puede ser que no le pase el parametro si esta ahi, ya se me murio la ultima neurona que tenia tratando de saber por que; intente otras consultas y si anda pero esta en particular no. Si alguien me puede ayudar a resolverlo se lo agradeceria.

BlueSteel
24-01-2012, 17:06:44
Hola

por que no pruebas con esto

SELECT * FROM cliente WHERE nombre Like'+QuotedStr('%'+pnombre+'%')

Salu2:D

juanlaplata
27-01-2012, 14:20:09
Intenta agregando "Params" delante.
Es decir :Params.ParamByName('pnombre').Value:=nombre;
Otra alternativa seria :Params[0].Value:=nombre;
Donde 0, es el 1er parametro en la sentencia SQL.
Asi es como los uso.
Saludos.

ecfisa
27-01-2012, 14:47:02
Hola Leandro.

Creo que el problema se te presenta al no componer la consulta para cada cambio del TEdit, yo haría de este modo:

procedure Tform_buscarcliente.ed_nombreChange(Sender: TObject);
begin
with modulo_db.consulta_cliente do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM CLIENTE WHERE NOMBRE LIKE :PNOMBRE');
ParamByName('PNOMBRE').AsString:= ed_nombre.Text + '%';
Open;
...
end;
end;



(el espacio entre ":" y "pnombre" es por que me salia :p esto por eso)
Para evitar las 'caritas' usa las etiquetas , en el caso anterior sería: 'SELECT * FROM CLIENTE WHERE NAME LIKE :PNOMBRE'

Saludos.