我想我的表有AUTOINC场,但使用ClientDataSet的原因“字段值必须是”错误就可以做一个插件。 这似乎DataSnap服务器不知道它应该产生一个本身并预期值。 在演示中,我创建一个简单的表仅具有2个字段:ID(AUTOINC)和日期(VARCHAR)。 该数据库是SQLite的。
procedure TForm3.Button1Click(Sender: TObject);
begin
ClientDataSet1.Insert;
ClientDataSet1.FieldByName('DATE').Value:= DateUtils.DateOf(PlannerCalendar1.Date);
ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(0);
if ClientDataSet1.ApplyUpdates(0) = 0 then
ClientDataSet1.Refresh;
为了对付我用鲍勃博士建议的AUTOINC问题:
procedure TForm3.ClientDataSet1NewRecord(DataSet: TDataSet);
const {$J+}
ID: Integer = -1;
begin
DataSet.FieldByName('ID').AsInteger := ID;
DEC(ID) ;
end;
虽然AUTOINC计数倒退,我可以忍受的。 但是......得到的记录在网格而不是添加到数据库中!?
所以,有人可以请赐教如何处理这个AUTOINC噩梦? 看使用的数据集的onreconcile事件,但手动更正错误的一些建议是不适合我。 我试图插入的ID字段希望DataSnap服务器会纠正错误零值,但它是所有闪光我调和对话,所以我可以解决此问题。 救命 !
结束;