Вот непонятный кусок кода из модуля "M1":
Код:
procedure TForm3.Button1Click(Sender: TObject);
begin
.....
DM.OtvetTestera.Open;
DM.OtvetTestera.Append;
if (RadioButton1.Checked = False) and (RadioButton2.Checked = False) and
(RadioButton3.Checked = False) and (RadioButton4.Checked = False) and
(RadioButton5.Checked = False) then
MessageDlg('Выберите вариант ответа!', mtWarning, [mbOK], 0)
else
begin
if RadioButton1.Checked = True then
begin
if not (DM.OtvetTestera.FieldByName('ID_user').IsNull) then
DM.OtvetTestera.FieldByName('ID_user').AsInteger := strtoint(DM.Testiruemiy.FieldValues['ID_user']);
if not (DM.OtvetTestera.FieldByName('№VO').IsNull) then
DM.OtvetTestera.FieldByName('№VO').AsInteger := strtoint(DM.M1V1.FieldValues['№VO']);
DM.OtvetTestera.Post;
.....
Зачем здесь проверки полей на IsNull? Ведь перед этим была добавлена новая, пустая запись (через Append), поэтому очевидно что все поля будут IsNull (пустые).
Или по крайней мере нужно изменить условие на обратное, а то получается, что если поле не пустое (т.е.
not null, что в данном случае никогда не будет), то делаем в нём изменения, а если поле было пустое (что в данном случае будет всегда), то оно таким пустым и останется и в результате будет попытка записать полностью пустую запись.