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)
-   -   IBDataSet no asigna valores a las variables de campo (https://www.clubdelphi.com/foros/showthread.php?t=5669)

gendelphi 29-11-2003 10:16:21

IBDataSet no asigna valores a las variables de campo
 
Hola a todos, nuevamente yo.

Anteriormente pedi ayuda sobre el mal funcionamiento de un IBDataSet con base de datos con sql dialect 3, he notado que el problema esta en que el IBDataSet no almacena correctamente el valor de las variables de cada campo, por ejemplo:
la propiedad SelectSQL del IBDataSet esta asi:

SELECT campo1, campo2 FROM tabla

lo que significa que existiran dos variables o parametros llamados :campo1 y :campo2, que contienen los valores introducidos desde algun componente de la paleta DataControls, como un DBGrid, o un DBEdit, es decir, que si la propiedad ModifySQL del IBDataSet, esta configurada asi:

UPDATE tabla SET campo1 = :campo1, campo2 = :campo2
WHERE campo1 =:OLD_campo1

despues de hacer un Post al IBDataset, deberia de enviarse al servidor la sentencia SQL que asigna a campo1, el valor de :campo1, y a campo2 el valor de :campo2, es decir, asignar los valores que se tecleen en el DBGrid o DBEdit. Pero no lo hace asi.

Si la base de datos es Dialecto 3, y el componente IBDatabase se configura como Dialecto 1, todo funciona BIEN. Pero si el componente IBDatabase se configura como dialecto 3 los parametros :campo1 y :campo2, no toman los valores que se hayan dado en el DBGrid o DBEdit, sino que :campo1 vale cero, y :campo2 vale 17/11/1858, dado que campo1 es INTEGER y campo2 es DATE.

Podria alguien orientarme, en que estoy haciendo mal?
o acaso IBDataset no funciona con bases de datos Dialecto 3?

Nuevamente: Uso Delphi 5, con los componentes para interbase que ya trae, mi BD esta creada con FireBird 1.02 y en Dialecto 3.

Fita 26-01-2006 23:37:34

Hola...

No entiendo mucho lo que te sucede... yo utilizo IBDataset con dialecto 3 y funciona perfecto. Creo que tu problema esta en la sentencia del update.

Yo lo haría asi:

Tabla1.SelectSql.Clear;
Tabla1.SelectSql.Add('update tabla1 set campo1 = :campo1, campo2 = campo2¡);
Tabla1.SelectSql.add('where campo1 = :old_campo1');
Tabla1.ParamByName('campo1').asstring := dbEdit1.text;
Tabla1.ParamByName('campo2').asCurrency := dbEdit2.field.AsCurrency;
Tabla1.ExcecSql;

Lo de :old_campo1 nunca lo he utilizado de esta manera.

Espero te sirva
Saludos

cuburu 31-01-2006 02:23:11

Hola.

Quizas podría ser que tu versión de Base de Datos no soporte el dialecto tipo 3 debido a que ésta es ya una forma más reciente de manejo de SQL. Trata de probar con una Base de Datos más reciente.... me perece haber leido hace rato que el firebird 1.5 ya trae soporte para dialect 3.


La franja horaria es GMT +2. Ahora son las 02:10:27.

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