使用Table来访问Sql中没有主健的表:(产生下面的问题)
比如使用下面的语句:
with table1 do
begin
   first;
   while not eof do
   begin
     edit;
     fieldbyname('00').asstring := '00';
     post;
     next;
   end;
end;
纪录只停留在第一条上,没有往下循环。并且会产生和第一条纪录相同的一条纪录(只是在显示界面上,没有真正的插到数据库中)。如果给此表加一个主健,则程序能正确的运行?注:如果使用ADOConnection , ADOTable 则不会出现上面的问题有知道的朋友吗?请帮忙!

解决方案 »

  1.   

    肯定不行啦,post后数据又回到了第一条记录,死循环了。
    用update 表 set 字段='0.00'  就可以嘛
      

  2.   

    with ADOQuery1 do 
    begin
      SQL.Clear;
      SQL.Text := 'UPDATE yourTable SET yourField=''00''  ';
      ExecSQL;
    end;(注:用TADOQuery则不会出现上面的问题)
      

  3.   

    补充说明:若使用BDE、用TQuery也不会出现上面的问题。
         TQuery的使用方法与TADOQuery基本相同... 
      

  4.   

    但是有主健的时候好用啊,现在在改一个老程序,使用Database 和 table.
    如果换ADOtable的话,工作量太大了。
      

  5.   

    post后数据又回到了第一条记录,死循环了。
      

  6.   

    这样:
    with table1 do
    begin
       first;
       while not eof do
       begin
          edit;
          fieldbyname().asboolean := not fieldbyname().asboolean;
          next;
        end;
    end;如果table1对应的表没有主健也是死循环。
    但是如果table1对应的表有主健的话,可以执行。但是如果用adotable搭配adoconnection的话,没有主健也是可以执行的。
      

  7.   

    楼主:为了解决你的问题,不是换ADOtable,而是选择用TQuery控件(TTable控件的兄弟),很簡単with Query1 do 
    begin
      SQL.Clear;
      SQL.Text := 'UPDATE yourTable SET yourField=''00''  ';
      ExecSQL;
    end;