PDA

Ver la Versión Completa : asignar valores por default


NickName
13-09-2003, 06:35:57
Hola

tengo lo sig.



CREATE DOMAIN SI_NO AS
VARCHAR(2) CHARACTER SET ISO8859_1
DEFAULT 'NO' COLLATE ISO8859_1


CREATE TABLE CLIENTES (
IDCLIENTE CADENA,
NOMBRECLIENTE CADENA,
FECHAREGISTRO DATE default 'Now',
DEBE SI_NO,
OBSCLIENTE BLOB SUB_TYPE 1 SEGMENT SIZE 80
);


y mi problema es que a la hora de guardar los datos me dice Error en la validación para el campo DEBE, Value "***Null***".

se supone que el servidor de interbase me tiene que dar los valores por default y asignarlos.

Uso los IbDataset

que tengo que hacer para cuando yo diga nuevo muestre los valores por default o guarde los valores por deFault.


Saludos....

kinobi
13-09-2003, 11:11:30
Hola,

Posteado originalmente por NickName
y mi problema es que a la hora de guardar los datos me dice Error en la validación para el campo DEBE, Value "***Null***".

El valor NULL es un valor SQL. Es nulo semánticamente, pero sintácticamente es un valor.

Posteado originalmente por NickName
se supone que el servidor de interbase me tiene que dar los valores por default y asignarlos.

Sí, siempre que en la sentencia INSERT o UPDATE no pases la columna en cuestión.

Haz una prueba con IBConsole o ISQL: pasa al servidor una sentencia INSERT, primero sin pasar explícitamente el nombre de la columna "DEBE" (el servidor le dará el valor por defecto). Después crea otra sentencia INSERT, pero pasando en la misma el nombre de la columna "DEBE" y asinándole el valor NULL, verás que ése (NULL) es el valor que le dará el servidor y no el valor por defecto.

Posteado originalmente por NickName
Uso los IbDataset

que tengo que hacer para cuando yo diga nuevo muestre los valores por default o guarde los valores por deFault.

Reescribir las sentencias INSERT y UPDATE de tu IBDataSet para que cuando el valor de la columna sea NULL, ésta no aparezca en la sentencias. Otra opción es recuperar el valor por defecto del servidor y utilizarlo en el cliente cuando sea necesario.

Saludos.

NickName
14-09-2003, 03:35:16
Hola.

Muchas gracias por contestar Kinobi , tenias razon, si quito el registro de las sentencias insert funciona no me manda el error que el valor es nulo.

Oyes Kinobi, gracias por tu ayuda, explicas las cosas perfectamente, y la verdad se te agradece que nos regales un poco de tu tiempo, para ayudar a los que lo necesitamos.

Quiero aprovechar para preguntar sobre.

Otra opción es recuperar el valor por defecto del servidor y utilizarlo en el cliente cuando sea necesario.

Como puedo hacer eso que comentas.....

Saludos.

Héctor Acosta S.

kinobi
14-09-2003, 12:01:43
Hola,

hace tiempo que no utilizo IBX, y no recuerdo si desde los Dataset's IBX se pueden recuperar los valores por defecto de una columna. Si hay alguien que lo sepa que lo comente en el hilo, yo no puedo siquiera mirarlo ya que no tengo instalado Delphi.

En todo caso, el "plan B" consistiría en echar mano de las tablas del sistema. Concretamente la tabla RDB$FIELDS, dentro de la columna RDB$DEFAULT_SOURCE se almancena la declaración del valor por defecto para la columna (columna o dominio). Ten en cuenta que seguramente debas "parsear" el valor que tengas allí, ya que será una cadena ASCII con la expresión que hayas dado para la columna/dominio (probablemente, no estoy seguro, lleve incluso la subcadena "DEFAULT VALUE ...").

Saludos.