急急急急急急急急急急急急急急!!ACCESS报错,简单。

leon213 2003-02-21 02:54:00
小弟初学DELPHI编程,有劳各位大侠了:

ACCESS在输入新数据时会出现错误提示(插入第一个N次并没有出现问题):
'无法为更新行集定位:一些值可能以在最后读取后改变’
过程为:
procedure TForm1.Button1Click(Sender: TObject);
var
STC,STN: string;
CT: integer;
begin
STC:=Edit1.Text;
STN:=Edit2.Text;
WITH ADOTable1 DO
BEGIN
first;
if locate('StuClass;StuName',VarArrayOf([STC,STN]),[])
then
begin
Edit;
CT:=FieldByName('count').AsInteger;
Inc(CT);
FieldByName('Count').AsInteger:=CT
end
else
begin
edit;
append;
FieldByName('StuClass').asstring:=STC;
FieldByName('StuName').asstring:=STN;
end;

end;
...全文
22 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
火龙岛主 2003-02-21
  • 打赏
  • 举报
回复
参考意见
procedure TForm1.Button1Click(Sender: TObject);
var
STC,STN: string;
CT: integer;
begin
STC:=Edit1.Text;
STN:=Edit2.Text;
WITH ADOTable1 DO
BEGIN
first;
if locate('StuClass;StuName',VarArrayOf([STC,STN]),[])
then
begin
Edit;
CT:=FieldByName('count').AsInteger;
Inc(CT);
FieldByName('Count').AsInteger:=CT
post;
end
else
begin
append;
FieldByName('StuClass').asstring:=STC;
FieldByName('StuName').asstring:=STN;
post;/////
end;

end;
dingzhongfeng 2003-02-21
  • 打赏
  • 举报
回复
begin
.....

WITH ADOTable1 DO
Close;
Open;
BEGIN
first;
if locate('StuClass;StuName',VarArrayOf([STC,STN]),[])
then
.....

FieldByName('StuClass').asstring:=STC;
FieldByName('StuName').asstring:=STN;
end;
try
post;
except
.....
end;
end;
end;

ysai 2003-02-21
  • 打赏
  • 举报
回复
数据库加主键
所有字段去掉默认值,特别是数值型字段
dancedog 2003-02-21
  • 打赏
  • 举报
回复
每次Edit或者Append后都要Post一下,即为更新数据。
beata88 2003-02-21
  • 打赏
  • 举报
回复
可能是你还没有post又来Edit
所以出错
bluemeteor 2003-02-21
  • 打赏
  • 举报
回复
插入后未刷新
最后一个end;前面加上
post;
close;

然后在
WITH ADOTable1 DO
begin
加上open;
yoisyois 2003-02-21
  • 打赏
  • 举报
回复
好象没有post;

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧