我在一张已经有三个字段的表格里(充满数据),插入了新的两列,然后要在这两列中插入已经算好的两个数组MA和Ot,但我要从第四行开始插入数据(前三行和最后三行都没为空)。
我试过将指针移到第四行再开始查数据,但总出现错误。
请求帮助!
还有,按下button2后,在dbgrid1中显示插入两列后的新的表格(这个
表格是和原来表格不是同一个名字)怎么写语句???
以下是我写的语句
procedure TForm1.Button2Click(Sender: TObject);
var
i,j:integer;
begin
  with ADOQuery1 do
  begin
    Active:=False;
    SQL.Clear;
    SQL.LoadFromFile('MODEL1.sql');
    prepared:=true;
    try
      ExecSQL;
     except
    end;
  end;//以上这段可以执行的,我验证过了(插入新的两列)。
      // 问题是下边的这段。
  with ADOQuery1 do
  begin
   Active:=False;
   SQL.Clear;
   SQL.Text:='select * from model_1';
   ADOTable1.TableName:='model_1';//我希望在dbgrid中能显示这张表格。
   ADOTable1.Active:=True;
   Open;
   Edit;
   First;
   for i:=1 to 3 do //我就想用这个来移动指针到第四个记录,以便导入数据
     begin
     i:=i+1;
     Next;
     end;
   for j:=4 to adoquery1.RecordCount-3 do  //这段插入数据的语句我也不知道行不行!
      begin
        ADOTable1.FieldByName('MA').AsFloat:=ma[j-3];
        ADOTable1.FieldByName('Ot').AsFloat:=ot[j-3];
        Post;
      end;  end;
   
end;

解决方案 »

  1.   

    for i:=1 to 3 do //我就想用这个来移动指针到第四个记录,以便导入数据
         begin
         i:=i+1;
         Next;
         end;
    移动指针到第四个记录??中间还要 i:=i+1;
     干什么??
      

  2.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
    i,j:integer;
    begin
      with ADOQuery1 do
      begin
        Active:=False;
        SQL.Clear;
        SQL.LoadFromFile('MODEL1.sql');
        prepared:=true;
        try
          ExecSQL;
         except
        end;
      end;//以上这段可以执行的,我验证过了(插入新的两列)。
          // 问题是下边的这段。
      with ADOQuery1 do
      begin
       Active:=False;
       SQL.Clear;
       SQL.Text:='select * from model_1';
            {ADOTable1.TableName:='model_1';
             ADOTable1.Active:=True;//这两句不要放这里,等记录插入后在用,省得刷新}
       Open;
      for j:=0 to 1 do 
       begin
            append;
            ADOTable1.FieldByName('MA').AsFloat:=ma[j];
            ADOTable1.FieldByName('Ot').AsFloat:=ot[j];
            post;
       end;  end;
       
    end;从第三行开始插的,为什么要从后面开始插入呢,从后面开始插入也不可能跳到第四行去啊,除非你连续用两次APPEND(而且字段不能有不允许为空的限制),
      

  3.   

    由于你采用数组来保存要插入的数据,这就造成不能一次更新只能循环操作,
    所以你可以直接UPDATE操作完成的,只是把数组的算法写到SQL语句而已,
    我觉得你把简单的问题复杂化了,不应该是这样来实现的,
      

  4.   

    那怎么办啊?有什么简便的方法啊?
    我快郁闷死了。
    我刚刚才开始学习delphi,不到一个月。老师又非要让我用delphi做。
      

  5.   

    那个append我也是抄书的,我也不知道啥意思!
    那个for....next,开始我用while写的,
    所以用了i:=i+1;忘了删了。
      

  6.   

    Anylib已经推出新版本!主要增加以下功能:
    1.数据库支持
    2.数据分组
    3.分页符
    4.多栏打印
    5.背景图欢迎到我们的网站下载试用版。
    http://www.anylib.com
      

  7.   

    with ADOQuery1 do
      begin
       Active:=False;
       Close;
       SQL.Clear;
       SQL.Text:='select * from model_1';
        adotable1.Open;//运行的时候警告:cannot perform this operation on an open dataset.
                       //我试过改成close,但运行时警告:cannot perform this operation on an closed dataset.           
        ADOTable1.TableName:='model_1';//能在dbgrid中显示这张表格。不知道这样改是不是对。
        ADOTable1.Active:=True;
        Edit;
        First;
       for i:=1 to adoquery1.RecordCount-3 do  //以下是我修改的,那个update在查询分析器
         begin                                 // 里可以添加数据,但怎么在这里写语句我不会啊。
          if i in [1..3] then                   
            next
          else
            ADOTable1.FieldByName('MA').AsFloat:=ma[i-3];
            ADOTable1.FieldByName('Ot').AsFloat:=ot[i-3];
        end;  end;