hi,
If you are using master detail blocks then check the order of blocks master block should be first, some time this error is caused as record existing in interface but do not exist in the database, i am not sure but you can check it

Are you sure you put the right values in the listitem's value property. Sounds like a messup between the shown value and the ID to show. It might help if you could post your create table statements and the code to populate the list.

-- If it does not exist, create it and add the two
-- necessary columns to it.

IF Id_Null(rg_id) THEN
rg_id := Create_Group_From_Query( rg_name,'SELECT to_char(id),to_char(id) FROM emp',FORM_SCOPE,200);
END IF;
IF Not Id_Null(rg_id) THEN
delete_group(rg_id);
rg_id := Create_Group_From_Query( rg_name,'SELECT to_char(id),to_char(id) FROM emp',FORM_SCOPE,200);

*:emp.id:=123; //if I add this instruction, the insertion will be made*

END;

if I select a value from the list, the insertion will be done!! but if I keep the value of the default list I found a mistake! I think that i must give a value to the list by default (departing)
if my explanation is not clear, I'll make a video