if table1.FieldByName('id') = table2.Fieldbyname ('id') then
begin
messagedlg('你已经添加过了这道试题',mtwarning,[mbok],0);
table2.Next;
endtable1.fieldbyname('id')=table2.~~~~~
这一行你是不是要先搜一下table1,不然后你怎么知道相等????????
begin
messagedlg('你已经添加过了这道试题',mtwarning,[mbok],0);
table2.Next;
endtable1.fieldbyname('id')=table2.~~~~~
这一行你是不是要先搜一下table1,不然后你怎么知道相等????????
你干脆用if table1['id']=table2['id'],有没有单引号我不记得了,反正可以直接这样用,还有你的目的无非是想看表格里先有没有这条记录,你用locate岂不是
更好,这样一条一条用while语句,还有eof到底是最后一条记录还是到最后一条记录
的后面值得测试考究一下,建议你把insert改成append
while not table2.Eof do
if table1.FieldByName('id') = table2.Fieldbyname ('id') then
begin
messagedlg('你已经添加过了这道试题',mtwarning,[mbok],0);
table2.Next;
end
else....
感觉只要table2的第一条的ID和table1的ID相同,就会向table2中加记录啊,再加上循环,记录数据会不会远超出预料值,是不是逻辑上有点问题,
另外 table1.FieldByName('id')返回TFIELD,需不需要加上AsString
又不添加,没有就添加
----------------------------------------------------------
procedure TMainform.N8Click(Sender: TObject);
begin
Table1.First;
while Not (Table1.Eof) do
begin
if table2.RecordCount = 0 then
begin
table2.insert;
table2.Fields[0].AsString := table1.Fields[0].AsString ;
table2.Fields[1].AsString := table1.Fields[1].AsString ;
table2.Fields[2].AsString := table1.Fields[2].AsString ;
table2.Fields[3].AsString := table1.Fields[3].AsString ;
table2.Fields[4].AsString := table1.Fields[4].AsString ;
table2.Fields[5].AsString := table1.Fields[5].AsString ;
table2.FieldByName('graphic').Assign (table1.FieldByName('graphic'));
table2.Post;
end
else
begin
table2.First;
while not table2.Eof do
if table1.FieldByName('id').asstring = table2.Fieldbyname ('id').asstring then
begin
messagedlg('你已经添加过了这道试题',mtwarning,[mbok],0);
table2.Next;
end
else
begin
table2.Insert;
table2.Fields[0].AsString := table1.Fields[0].AsString ;
table2.Fields[1].AsString := table1.Fields[1].AsString ;
table2.Fields[2].AsString := table1.Fields[2].AsString ;
table2.Fields[3].AsString := table1.Fields[3].AsString ;
table2.Fields[4].AsString := table1.Fields[4].AsString ;
table2.Fields[5].AsString := table1.Fields[5].AsString ;
table2.FieldByName('graphic').Assign (table1.FieldByName('graphic'));
table2.Post;
end
end
end;
end;