我的代码如下:
        with ADOTableDB do
        begin
            TableName:='Resource_tab';
            Active:=True;
            try                
                ANum := ReNum;                
                begin
                    for  i:=6 to ir  do
                    begin
                        Insert;
                        ANum := ANum+1;
                        FieldByName('Resource_num').AsInteger:= ANum;
                         FieldByName('Memo').AsString:= ExcelApp.Cells.Item[i,13].Value;
                    end;
                end;
                Post;
可是在执行时,for循环里的代码只能执行一次,第二次执行时就会报"多步操作产生错误".请问是怎么回事?

解决方案 »

  1.   

    试过了,执行第一次到POST就报相同的问题了
      

  2.   

    你把这一句先去掉,试一下。FieldByName('Memo').AsString:= ExcelApp.Cells.Item[i,13].Value;
      

  3.   

    if循环中只有"FieldByName('Resource_num').AsInteger:= ANum;"一句可以,多加就不可以了.那怎么办,我有好几个字段呢?
      

  4.   

    你的memo字段是什么类型啊,还有就是你用了excel的东西吧,问题可能就在这里,而不是数据库录入的问题。
      

  5.   

    FieldByName('Memo').AsString:= ExcelApp.Cells.Item[i,13].Value;
    先把这句去了,要不你就单独执行这句看看
      

  6.   

    我是用了excel的东西,可是这样用在TABLE里是可以的,为什么在ADOTable中就不行了呢?
      

  7.   

    还有,我就是不用excel,再加另外一句(例如 FieldByName('Urban_num').AsInteger:= 99;),也会报错的.
      

  8.   

    Post放外边是肯定不对的,Insert和Post应该是成对执行的。
      

  9.   

    字段名          字段类型          字段意义          备注
    Resource_num Int(4)          序号          Key
    Urban _num Tinyint(1) 所属城区号 非空
    District_num smallint(2) 所属社区号 非空
    People_name Varchar(20) 土地使用者 非空
    Address          Varchar(30) 地址          非空
    Estate          Varchar(15) 地籍号
    Area          Decimal(6,2) 面积
    Price          Decimal(6,2) 单价
    Summoney          Decimal(6,2) 金额
    Memo          Varchar(50) 备注
      

  10.   

    用个笨方法吧!你调试的时候,先不要用循环,你把
    insert;
    赋值语句
    post;
    insert;
    再次赋值语句
    post;
    写两边,看看行不行。
      

  11.   

    为什么保存的时候会出现"cannot peroform this operation on closed dataset!"?
    我该怎么办?
      

  12.   

    试试下面的代码,问题一定是处在你循环的结构里面。注意你程序中i,anum,ir这些变量的定义,以及程序中begin..end的配对。        with ADOTableDB do
            begin  
                close;
                TableName:='Resource_tab';
                Active:=True;            
                ANum := ReNum;                
                for  i:=6 to ir  do
                begin
                  Insert;
                  inc(anum);
                  FieldByName('Resource_num').AsInteger:= ANum;
                  FieldByName('Memo').AsString:= ExcelApp.Cells.Item[i,13].Value;
                  post;
                end;
             end;
      

  13.   

    cannot peroform this operation on closed dataset!"?
    你的数据集被关闭了,就是说你的adotabledb被关闭了