procedure TForm1.Button1Click(Sender: TObject);
begin
Inc(S);
adotable1.Append;
adotable1['ID'] := S;
adotable1.Post; adotable1.Edit;
adotable1['NAME'] := 'abc';
Adotable1['IDNUMBER'] := 'adklsfj';
Adotable1['STOCK'] := 5000;
adotable1.Post;
end;该表的字段等都是没问题的,但执行时却出现错误:
"无法为更新定位行,一些值可能已在最后一次读取后已更改"
当我把Adotable1表的cursortype设为clUserServer,则没问题,这是什么原因.
如果我在Post后使用Refresh也没问题,但我试过在数据量较大,如800条记录时,则速度慢得不得了,
请各高手,应该如何解决问题?
begin
Inc(S);
adotable1.Append;
adotable1['ID'] := S;
adotable1.Post; adotable1.Edit;
adotable1['NAME'] := 'abc';
Adotable1['IDNUMBER'] := 'adklsfj';
Adotable1['STOCK'] := 5000;
adotable1.Post;
end;该表的字段等都是没问题的,但执行时却出现错误:
"无法为更新定位行,一些值可能已在最后一次读取后已更改"
当我把Adotable1表的cursortype设为clUserServer,则没问题,这是什么原因.
如果我在Post后使用Refresh也没问题,但我试过在数据量较大,如800条记录时,则速度慢得不得了,
请各高手,应该如何解决问题?
在保存时就会提示上述错误
1.数据库中定义个主键
2.有些字段不能设置为可以自动获得默认值,Delphi默认不添加空的重复记录
///////////////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);begin
SampleTable.Append;
SampleTable.FieldValues['ALPHANUMERIC'] := Edit1.text;
SampleTable.FieldValues['INTEGER'] := StrToInt(Edit2.text);
SampleTable.Post;
end;
////////////////////////////////////////////////////////////////
不需要edit
我也遇到过这种问题
你post后如果不关闭数据库,你下次使用数据库的时候,它使用的仍然是以前读入内存的表
主要是因为ACCESS数据库中,好像如果是数值型它自动会设置为默认值为0,所以才会出现这种错误,谢谢各位!结贴!