我把excel数据读入到advStringgrid中,然后再倒入到数据库中,为什么用了edit不能更新呢?请问如何更新数据库存在的数据呢?
adoTbCarrier.Close;
     adoTbCarrier.Open;
     for i := 0 to asg.RowCount-1 do
     if asg.Cells[0,i] <>'' then
     begin
        adoTbCarrier.Edit;
        //adoTbCarrier.Locate('carrierid',asg.Cells[0,1],[loPartialKey]);
        adoTbCarrier.FieldByName('carrierCode').AsString :=asg.Cells[1,i];
        adoTbCarrier.Post;
        
         {
        adoTbCarrier.Append;
        adoTbCarrier.FieldByName('carrierId').AsString := asg.Cells[0,i];  //小区号
        adoTbCarrier.FieldByName('carrierCode').AsString := asg.Cells[1,i];   //小区名称
        adoTbCarrier.Post;}                                                                    
     end;
     ShowMessage('数据导入成功!');

解决方案 »

  1.   

    1,
    出问题原因可能是你的数据集没有移动;就是adotbcarrier一直指向一条固定记录。
    所以没有出现楼主预期的修改动作;
    你可以试试如下代码:
         adoTbCarrier.Close;
         adoTbCarrier.Open;
         adotbcarrier.first;
         for i := 0 to asg.RowCount-1 do
         if asg.Cells[0,i] <>'' then
         begin
            adoTbCarrier.Edit;
            adoTbCarrier.FieldByName('carrierCode').AsString :=asg.Cells[1,i];
            adoTbCarrier.Post;
            adotbcarrier.next;
         end;
         ShowMessage('数据导入成功!');
      

  2.   

    当执行到adoTbCarrier.Post;的时候,提示数据集不处于edit状态?不知道这是怎么回事
      

  3.   

    其实我就是把excel往数据库里面导入,但是我就是不想导入重复的数据,如果是重复的数据就是修改其他非主键的内容,如果没有重复数据,就用append来添加新数据