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)
-   -   consultas con y sin parámetros. (https://www.clubdelphi.com/foros/showthread.php?t=20986)

fjardelphi 03-05-2005 10:18:34

consultas con y sin parámetros.
 
Hola.
Utilizo interbase y DBExpress en una aplicación. Tengo una consulta qrClientes, y un TClientDataSet clientes. Enlazados con un proveedor.
Las siguientes sentencias funcionan perfectamente:

moddatos.qrClientes.ParamCheck := True;
moddatos.qrClientes.SQL.Clear;
moddatos.qrClientes.SQL.ADD('SELECT * FROM V1CLIENTES WHERE nombre starting :pbusca');
label1.Caption:='Nombre';
moddatos.Clientes.FetchParams;
moddatos.Clientes.Params[0].AsString:='';
moddatos.Clientes.Open;

Sin embargo

moddatos.qrClientes.SqlClear;
moddatos.qrClientes.Sql.Add('Select * from v1clientes');
moddatos.clientes.FetchParams;
moddatos.Clientes.Open;

No funciona. Da un error de unasigned code. ¿Cuál puede ser el problema?
saludos y gracias.

delphi.com.ar 03-05-2005 14:08:07

¿No sobra el FetchParams en el segundo bloque de código?.... por otro lado, veo que "limpias" (falta un .) y asignas la sentencia Sql al objeto qrClientes pero luego abris un objeto llamado Clientes.... ¿es correcto?

fjardelphi 04-05-2005 08:50:51

más datos
 
Si es correcto.
El punto ha sido un error de escritura, en el código si que está.
qrClientes es una consulta mientras que Clientes es un componente TClientDataSet enlazado a la consulta con un proveedor.
El tema es que con parámetros todo funciona correctamente, pero no consigo que funcione en consultas sin parámetros.
Un saludo

Ryu 06-05-2005 22:35:21

mi pregunta ?
 
:confused: en tu consulta sin paramentros por q no pones el metodo
execsql?

:D podrias hacerlo eje

qrcliente.close;
qrcliente.sql.clear;
qrcliente.sql.add('select * from tabla')
qrcliente.execsql;
qrcliente.open;


:cool: para mi debe funcionar si lo que usas es un query

roman 06-05-2005 22:49:15

Cita:

Empezado por fjardelphi
qrClientes es una consulta mientras que Clientes es un componente TClientDataSet enlazado a la consulta con un proveedor.

¿Y entonces por qué alteras directamente el SQL de qrClientes? Creo que deberías usar la propiedad CommandText del ClientDataSet (poniendo la opción poAllowCommandText al provider). De otra forma no me queda claro para qué usas providers.

Además yo insistiría en lo que te preguntó Federico. Si no usas parámetros (segundo bloque) entonces para qué usas FetchParams. ¿Qué parámetros vas a recibir si no hay ninguno?


Cita:

Empezado por Ryu
por q no pones el metodo execsql?

ExecSQL sólo se usa para consultas que no devuelven registros.

// Saludos


La franja horaria es GMT +2. Ahora son las 08:56:30.

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