Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-09-2003
Avatar de NickName
NickName NickName is offline
Miembro
 
Registrado: may 2003
Ubicación: Guerrero, México
Posts: 96
Poder: 21
NickName Va por buen camino
asignar valores por default

Hola

tengo lo sig.

Código:
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....
Responder Con Cita
  #2  
Antiguo 13-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
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.

Cita:
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.

Cita:
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.
Responder Con Cita
  #3  
Antiguo 14-09-2003
Avatar de NickName
NickName NickName is offline
Miembro
 
Registrado: may 2003
Ubicación: Guerrero, México
Posts: 96
Poder: 21
NickName Va por buen camino
Thumbs up

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.

Cita:
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.
Responder Con Cita
  #4  
Antiguo 14-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:04:55.


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
Copyright 1996-2007 Club Delphi