Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error EDatabase Error (https://www.clubdelphi.com/foros/showthread.php?t=77420)

leandro_matiasp 24-01-2012 16:39:43

Error EDatabase Error
 
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

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

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

Código SQL [-]
SELECT * FROM cliente WHERE nombre Like'+QuotedStr('%'+pnombre+'%')

Salu2:D

juanlaplata 27-01-2012 14:20:09

Intenta agregando "Params" delante.
Es decir :
Código Delphi [-]
Params.ParamByName('pnombre').Value:=nombre;
Otra alternativa seria :
Código Delphi [-]
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:
Código Delphi [-]
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;


Cita:

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

Saludos.


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

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi