PDA

Ver la Versión Completa : ID must have a value


JairoC
04-02-2012, 02:26:58
Hola gente del foro.... El problema surge cuando hago el post, sale un cartel que dice ID mus have a value... el código que tengo es el siguiente:DM.Ibdataset_miembros.open;
DM.Ibdataset_miembros.Append;
DM.Ibdataset_miembros.edit;
//...
//...
//...
DM.Ibdataset_miembros.post;
DM.Transaction.CommitRetaining;

antes me fuicionaba bien.. después le agregué código, le saqué y se me armo el lio..Podrian ayudarme?? Gracias....

Caral
04-02-2012, 02:31:51
Hola
Que bueno seria ver que hay en el espacio vacio ????.
//....
//....
//...
Saludos

JairoC
04-02-2012, 03:06:37
esto es lo que hay en medio..

DM.IBDataSet_MiembrosESTADO.Value:=1;
DM.IBDataSet_MiembrosID_VIVIENDA.Value:= DM.IBDataSet_ViviendasID_VIVIENDA.Value;
DM.IBDataSet_MiembrosFECHA_NACIMIENTO.Value:= DateTimePicker1.Date;



y antes de esto tengo varios RadioButtonn... y en el evento onclick de cada uno tengo este codigo:

dm.IBDataSet_Miembros.Edit;
DM.IBDataSet_MiembrosVINCULO.Value:='JEFE/A DE HOGAR';
le puse el edit porque me salia que no esta ba en modo de edicion...

Caral
04-02-2012, 03:18:31
Hola
El mensaje dice: ID mus have a value
Los unicos ID que veo estan en esta linea :
DM.IBDataSet_MiembrosID_VIVIENDA.Value:= DM.IBDataSet_ViviendasID_VIVIENDA.Value;
Si esta pidiendo un ID me parece que
DM.IBDataSet_ViviendasID_VIVIENDA.Value;
No esta iniciado o no ve el dato.

Revisa que el dato exista asi:
Showmessage(DM.IBDataSet_ViviendasID_VIVIENDA.AsString); // muestra el dato
DM.Ibdataset_miembros.open;
DM.Ibdataset_miembros.Append;
DM.Ibdataset_miembros.edit;
DM.IBDataSet_MiembrosESTADO.Value:=1;
DM.IBDataSet_MiembrosID_VIVIENDA.Value:= DM.IBDataSet_ViviendasID_VIVIENDA.Value;
DM.IBDataSet_MiembrosFECHA_NACIMIENTO.Value:= DateTimePicker1.Date;
DM.Ibdataset_miembros.post;
DM.Transaction.CommitRetaining;
saludos

JairoC
04-02-2012, 03:42:38
PERDON NO ME ESPECIFIQUE BIEN dice ID_MIEMBRO MUS HAVE A VALUE...

Caral
04-02-2012, 03:47:18
Hola
Pues no lo veo.
Lo tendras en la ventana de permanentes ?
Dale doble click a la table miembros, estan los campos permanentes ahi ?.
Como digo, en los datos que proporcionas no veo ningun campo o dato con ese nombre.
Saludos

JairoC
09-02-2012, 19:47:44
Sisi me fijé y si tengo los campos en los dataset... El error es cuando hago el post en el dataset_miembros.
Le cuento mas omenos como es el fucionamiento.
Primero hago:
DM.Ibdataset_miembros.open;
despues tengo varios optionbutton, que cada uno tiene como caption (JEFE DE HOGAR, HIJO, MADRE, ETC)... Al hacer click sobre cualquiera tengo esto:

dm.IBDataSet_Miembros.Edit;
DM.IBDataSet_MiembrosVINCULO.Value:='JEFE/A DE HOGAR';
y ASI CON TODOS LOS DEMÁS....
Y DESPUES SIGO CARGANDO LOS DAtOS....
Apreto un boton para seguir guardar y sale el error... Probe con guardar el ID_Miembro es una variable para verlo cuando debugueo, pero el valor es 0 ...Saludos-.

kapcomx
09-02-2012, 20:40:25
a mi sa ha salido ese problema cuando empece con interbase, te comento.
en el datamodule tenia un dataset ... digamos dsproductos.
a este dsproductos le daba sqlselect una consulta diigamos
select * from productos where status=1
despues le asignaba true en su propiedad active
al darle doble clic me sale la lista de campos asignados a este.
digamos qe mi mensaje de error era "ID_PROD" must have a value.
entonces activaba el campo ID_PROD. y en la ventana de propiedades marcaba como false la propiedad Required.

puede ser tambien que desde la estructura de tu tabla el campo que mencionas debe estar marcado ese campo como not null.

marcoszorrilla
09-02-2012, 21:09:00
Se supone que has creado un campo autoincrementado ID?, para lo cual tienes que crear un generador y un Trigger, luego puedes desde el IbDataset correspondiente cual es el generado y que campo recibirá el valor automáticamente.

Aquí te dejo un Script de ejemplo:
/******************************************************************************/
/* LineasCompras */
/******************************************************************************/
Create Table Lineascompras (
Id Bigint Not Null,
Numfactur Varchar(10) Not Null,
Codproduct Varchar(8) Not Null,
Producto Varchar(40) Not Null,
Unidades Integer,
Pcompra Dm_Euro /* Dm_Euro = Numeric(12,2) Default 0 */,
Importe Dm_Euro /* Dm_Euro = Numeric(12,2) Default 0 */
);


/******************************************************************************/
/* Primary Keys */
/******************************************************************************/

Alter Table Lineascompras Add Constraint Pk_Lineascompras Primary Key (Id);



/******************************************************************************/
/* LineasCompras */
/******************************************************************************/
Create Generator Gn_Lineascompras_Id;
Set Generator Gn_LineasCompras_ID To 0;

Set Term ^ ;

/* Trigger: Lineascompras_Bi */
Create Trigger Lineascompras_Bi For Lineascompras
Active Before Insert Position 0
As
Begin
If (New.Id Is Null) Then
New.Id = Gen_Id(Gn_Lineascompras_Id,1);
End
^

Set Term ; ^


Commit;

Un Saludo.

JairoC
24-02-2012, 23:44:33
Ya solucioné el problema... LO que hice fue poner un Dataset nuevo y eliminar el otro... Muchísimas gracias a todos por su aporte!!! :)
Saludos!!!