我把这个代码放在一个speedbutonclick但是当我试图执行它时,我得到的消息说,字段num_med无法修改,代码是
procedure TAddEdiMedForm.SpeedButton1Click(Sender: TObject);
begin
DM.MedicamentTable.InsertRecord([ Edit1.Text, Edit2.Text, Edit3.text,
Edit4.Text, Edit5.Text, Edit6.Text,
Edit7.Text]);
CloseModal;
end;
问题是尝试为您正在尝试使用InsertRecord
语句的AutoInc字段插入一个值。您需要在插入新行后检索AutoInc值(从服务器),而不是尝试从客户端强制一个值!
由于添加新行时无法为AutoInc字段指定值,因此需要避免使用InsertRecord
。相反,在数据集上调用Insert
,通过单独的赋值语句填充其他(非AutoInc)字段,然后调用Post
。如何最好地检索AutoInc值取决于后端服务器,虽然FireDAC通常可以很好地为您执行此操作 - 查找如何从联机帮助中获取值或谷歌它。
您应该已经提到Num_med
字段是您的q中的AutoInc,而不是轻率地说它是评论中的Int
字段,以回复您应该首先提供的信息的查询。将来,请通过在初始q中包含所有相关信息,为读者进行一些考虑。