procedure TForm1.Timer1Timer(Sender: TObject);
var
va:integer;
k:integer;
begin
va:=1000;
if i mod 10 =0 then
begin
adotable1.active:=true;//打开表,记录指针定位到表的第一条记录
for k:=1 to 10 do//在表的末尾添加10条记录,只有“时间”字段有内容
begin
adotable1.append;
adotable1.FieldByName('时间').AsInteger := i+k;
adotable1.post;
adotable1.next;//语句多余,因为当时已经是定位到最后一条记录了,还Next?
end;
adotable1.MoveBy(-10);//记录指针指向前面添加的10条记录的前一条,如果有的话,否则指向10条中的第一条
adotable1.FieldByName('数值').AsInteger := random(va);//将MoveBy语句定位的记录的“数值”字段的值修改,只修改一条记录!!!
i:=i+1;
end;
if i mod 10 <>0 then
begin
adotable1.FieldByName('数值').AsInteger := random(va);//如果i mod 10 <>0,表打开了吗?将当前记录(此时哪条是当前记录???)的“数值”字段值修改。
i:=i+1;
end;
end;
var
va:integer;
k:integer;
begin
va:=1000;
if i mod 10 =0 then
begin
adotable1.active:=true;//打开表,记录指针定位到表的第一条记录
for k:=1 to 10 do//在表的末尾添加10条记录,只有“时间”字段有内容
begin
adotable1.append;
adotable1.FieldByName('时间').AsInteger := i+k;
adotable1.post;
adotable1.next;//语句多余,因为当时已经是定位到最后一条记录了,还Next?
end;
adotable1.MoveBy(-10);//记录指针指向前面添加的10条记录的前一条,如果有的话,否则指向10条中的第一条
adotable1.FieldByName('数值').AsInteger := random(va);//将MoveBy语句定位的记录的“数值”字段的值修改,只修改一条记录!!!
i:=i+1;
end;
if i mod 10 <>0 then
begin
adotable1.FieldByName('数值').AsInteger := random(va);//如果i mod 10 <>0,表打开了吗?将当前记录(此时哪条是当前记录???)的“数值”字段值修改。
i:=i+1;
end;
end;
本人现在将adotable1.next删除,以及改了adotable1.moveby(-9),程序是:procedure TForm1.Timer1Timer(Sender: TObject);
var
va:integer;
k:integer;
begin
va:=1000;
adotable1.active:=true;
if i mod 10 =0 then
begin
for k:=1 to 10 do
begin
adotable1.append;
adotable1.FieldByName('时间').AsInteger := i+k;
adotable1.post;
end;
adotable1.MoveBy(-9);
adotable1.FieldByName('数值').AsInteger := random(va);
i:=i+1;
end;
if i mod 10 <>0 then
begin
adotable1.FieldByName('数值').AsInteger := random(va);
i:=i+1;
end;不知为什么它总显示“dataset not in edit or insert mode”错误信息,麻烦各位再指点。
var
va:integer;
k:integer;
begin
va:=1000;
adotable1.active:=true;
if i mod 10 =0 then
begin
for k:=1 to 10 do
begin
adotable1.append;
adotable1.FieldByName('时间').AsInteger := i+k;
adotable1.post;
end;
adotable1.MoveBy(-9);
adotable1.edit;//使刚才添加的10条记录的第一条处于编辑状态
adotable1.FieldByName('数值').AsInteger := random(va);
adotable1.post;//更新
i:=i+1;
end;
if i mod 10 <>0 then
begin
adotable1.append;//i mod 10<>0 也应该加一条记录吧
adotable1.FieldByName('数值').AsInteger := random(va);
adotable1.post;
i:=i+1;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
va:integer;
k:integer;
begin
va:=1000;
adotable1.active:=true;
if i mod 10 =0 then
begin
for k:=1 to 10 do
begin
adotable1.append;
adotable1.FieldByName('时间').AsInteger := i+k;
adotable1.post;
end;
adotable1.MoveBy(-9);
end;
adotable1.edit;//使刚才添加的10条记录的第一条处于编辑状态
adotable1.FieldByName('数值').AsInteger := random(va);
adotable1.post;//更新
adotable1.next;
i:=i+1;
end;
for k:=1 to 10 do
begin
adotable1.append;
adotable1.FieldByName('时间').AsInteger := i+k;
adotable1.post;
adotable1.next;
end;
adotable1.MoveBy(-10); //你能保证此时记录指针前一定肯10个记录了吗
adotable1.FieldByName('数值').AsInteger := random(va);
i:=i+1;
end;
I是一全程变量吧?
var
va:integer;
k:integer;
begin
va:=1000;
adotable1.active:=true;
for k:=1 to 10 do
begin
adotable1.append;
adotable1.FieldByName('时间').AsInteger := i+k;
adotable1.post;
adotable1.next;
end;
adotable1.MoveBy(-10);
for k:=1 to 10 do
begin
adotable1.Edit ;
adotable1.FieldByName('数值').AsInteger := random(va);
adotable1.Post ;
adotable1.next;
i:=i+1;
end;end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
va:integer;
k:integer;
begin
va:=1000; if i mod 10 =0 then
begin
adotable1.active:=true;
timer1.Enabled:=false;
randomize;
for k:=1 to 10 do
begin
adotable1.append;
adotable1.FieldByName('时间').AsInteger :=i+k;
adotable1.post;
// adotable1.next;
end;
adotable1.MoveBy(-9);
for k:=1 to 10 do
begin
adotable1.Edit ;
adotable1.FieldByName('数值').AsInteger := random(va);
adotable1.Post ;
adotable1.next;
inc(i);
end;
timer1.Enabled:=true;
end;end;