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 24-08-2006
paty_rlopez paty_rlopez is offline
Miembro
 
Registrado: ene 2006
Ubicación: Torreón
Posts: 46
Poder: 0
paty_rlopez Va por buen camino
Post Problemas con TIBDATASET

Hola a todos
Tengo una consulta para ustedes resulta que tengo un TIBDataSet con la siguiente consulta:
SelectSQL =
Código:
 
select ce.*, bb.BANCO, bc.NUMERO_CUENTA, g.id_grupo, e.CVE_EMPRESA
from CUENTAS_ELECTRONICAS ce, BANCO__BANCO bb, BANCO__CUENTA bc, GRUPO g, empresa e
where ce.ID_CUENTA = bc.ID_CUENTA
and bc.ID_BANCO = bb.ID_BANCO
and bc.ID_GRUPO = g.ID_GRUPO
and g.ID_EMPRESA_LIDER = e.ID_EMPRESA
InsertSQL =
Código:
 
insert into CUENTAS_ELECTRONICAS
  (ID_CUENTA, STATUS, FECHA_CAPTURA, CAPTURADOR)
values
  (:ID_CUENTA, :STATUS, :FECHA_CAPTURA, :CAPTURADOR)
El problema es que cuando quiero agregar un registro con la instrucción INSERT o APPEND me manda el siguiente error
Cita:
Field 'NUMERO_CUENTA' must have a value


¿Por que me manda ese error si ni siquiera se encuentra en el InserSQL?
¿Qué es lo que estoy haciendo mal?

Gracias por su respuesta.

Última edición por paty_rlopez fecha: 24-08-2006 a las 00:55:54.
Responder Con Cita
  #2  
Antiguo 27-08-2006
PINO72 PINO72 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Málaga - España
Posts: 40
Poder: 0
PINO72 Va por buen camino
Numero Cuenta

HOLA,

¿Has creado el campo NUMERO_CUENTA como clave primaria?, si es así, siempre deberá tener un valor en cualquier inserción que quieras realizar en la tabla.

Saludos.
Responder Con Cita
  #3  
Antiguo 28-08-2006
paty_rlopez paty_rlopez is offline
Miembro
 
Registrado: ene 2006
Ubicación: Torreón
Posts: 46
Poder: 0
paty_rlopez Va por buen camino
Post

Hola PINO72:
El campo Numero_cuenta efectivamente en su tabla está como que no acepta un null, lo que hice fue asignarle un valor antes de post del componente en el que está la consulta que muestro al inicio, lo que me parece muy raro y aun no logro entender, es por que me pide un valor para ese campo si ni siquiera se encuentra en la tabla donde hago el insert, como lo muestro en la consulta del Insert, si me pudieras explicar el ¿por que? de que tenga que agregarle un valor al campo antes del post, te lo agradeceré mucho.
__________________
Saludos Cordiales
Responder Con Cita
  #4  
Antiguo 28-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Asegurate de que no tienes el campo persistente numero_cuenta. Cuando le das doble clic al Ibdataset aparece la lista de campos ¿no? borralo. Lo más seguro es que haciendo pruebas se haya quedado ahí.

De momento es lo que se me ocurre.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 28-08-2006
paty_rlopez paty_rlopez is offline
Miembro
 
Registrado: ene 2006
Ubicación: Torreón
Posts: 46
Poder: 0
paty_rlopez Va por buen camino
No tengo ningun campo persistente. lo solucioné de esta manera
Código:
 
dsCuentasElectronicas.DataSet.FieldByName('STATUS').AsString        := 'ACTIVO';
   dsCuentasElectronicas.DataSet.FieldByName('NUMERO_CUENTA').AsString := lCuenta.Text;
   dsCuentasElectronicas.DataSet.FieldByName('ID_GRUPO').AsInteger     := lEstacion.KeyValue;
   dsCuentasElectronicas.DataSet.FieldByName('CVE_EMPRESA').AsString   := lEstacion.Text;
Agregandoles un valor a los campos que me decia que no podias tener un valor NULL aunque no formen parte de mi query de insercion

Código:
 
insert into CUENTAS_ELECTRONICAS
  (ID_CUENTA, STATUS, FECHA_CAPTURA, CAPTURADOR)
values
  (:ID_CUENTA, :STATUS, :FECHA_CAPTURA, :CAPTURADOR)
__________________
Saludos Cordiales
Responder Con Cita
  #6  
Antiguo 29-08-2006
PINO72 PINO72 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Málaga - España
Posts: 40
Poder: 0
PINO72 Va por buen camino
Campos Persistentes

Hola de nuevo...

La solución es más lógica que otra cosa.

Las reglas de negocio que se incluyen al crear la estructura de las tablas dentro de nuestra base de datos se apoyan en un mejor control de los datos que en el futuro deben contener los registros.

Si insertamos un registro en la tabla sin informar a Interbase del contenido del campo creado como "primary key", es como insertar un valor nulo en este campo y despues agregar el registro, lo que conlleva al error directo del motor de Interbase para salvaguar la integridad de los datos.

no sé si me he explicado bien...
Saludos
Responder Con Cita
  #7  
Antiguo 31-08-2006
djemix djemix is offline
Miembro
 
Registrado: ago 2006
Posts: 46
Poder: 0
djemix Va por buen camino
Post Campo not null

Hola, mira si el campo ese esta puesto como Not null. Cuando haces un insert en una tabla y solo rellenas unos campos y no todos, el motor de firebird se encarga de rellenar los otros campos que no has puesto en el insert y les pone null. Si tienes un campo con el check not null te va a dar error siempre ahi.
Intenta no arreglar el programa con parchecillos del estilo... "pos ahora pongo esto en el post"....
Revisa la estructura de la base de datos antes de hacer esos arreglillos jejeje

Saludosssss!!
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con TIBDataSet lpaburto Conexión con bases de datos 7 04-10-2005 23:13:23
Problemas con el TIBDATASET (VIH)Lestat Conexión con bases de datos 4 03-07-2005 18:19:41
Búsquedas y TIBDataSet Clantt Conexión con bases de datos 0 12-08-2004 01:01:07
Orden en TIBDataset barman Conexión con bases de datos 6 27-11-2003 10:40:25
Orden en TIBDataset barman Firebird e Interbase 6 24-11-2003 21:26:00


La franja horaria es GMT +2. Ahora son las 02:58: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
Copyright 1996-2007 Club Delphi