if table1.FieldByName('id') = table2.Fieldbyname ('id') then
          begin
             messagedlg('你已经添加过了这道试题',mtwarning,[mbok],0);
             table2.Next;
       endtable1.fieldbyname('id')=table2.~~~~~
这一行你是不是要先搜一下table1,不然后你怎么知道相等????????

解决方案 »

  1.   

    table1.FieldByName('id') = table2.Fieldbyname ('id') 这句有点问题吧
    你干脆用if table1['id']=table2['id'],有没有单引号我不记得了,反正可以直接这样用,还有你的目的无非是想看表格里先有没有这条记录,你用locate岂不是
    更好,这样一条一条用while语句,还有eof到底是最后一条记录还是到最后一条记录
    的后面值得测试考究一下,建议你把insert改成append
      

  2.   

    table2.First;
          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
      

  3.   

    我的意思是,向Table2中添加纪录时,先看一下,table2 中是否有相同的记录,如果有就不添加了,
      

  4.   

    我的意思是在向table2中添加纪录时先看一下table2中有没有相同的记录,
    又不添加,没有就添加
      

  5.   

    嘻嘻嘻嘻这样导表啊?嘻嘻嘻嘻,那就和您的思路来改一改
    ----------------------------------------------------------
    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;