在sql中可以用cursor引用select出来的数据,如何逐条引用TQuery select出来的记录?谢谢!

解决方案 »

  1.   

    while  not Query1.eof do
    begin
    .....
    Query1.next;
    end;
      

  2.   

    query1.first;
    while no query1.eof do
    begin 
       edit1.text:=query1.fieldbyname('fieldname').asstring;
    ......
    queryr1.next;
    end;
      

  3.   

    TO: snowtiger2000
    query1.sql.add('select count(*) from table where expression1');
    query1.open;
    counter:=query1.fields[0].AsInteger;
    ......
    query1.sql.add('select field1, field2 from table where expression1');
    for i=1 to counter do
       edit1.text:=query1.fields[i].asstring;
    你是这个意思吗?但是我想问,这时引用的是field1 还是field2 ?如果两个字段我都想引用怎么办?
      

  4.   

    query1.fieldbyname('字段名').asstring;orquery1.fields[i].asstring;i 是你字段的序号,你自己定的 1,2,3按你需要来啊
      

  5.   

    TO:xylyge
    我把代码贴了,你给看看吧
    if Table1.CanModify then
        begin
           Table1.Edit;
           Query1.First;
           while not Query1.Eof do
               begin
                  Table1.Append;
                  Table1field1.Value:=Edit1.Text;
                  Table1field2.Value:=Edit2.Text;
                  Table1field3.Value:=Query1.FieldByName('acno').AsString;
                  Table1.Post;
                  Query1.Next;
               end;
                   showmessage('success!');
        end
    else
        messagedlg('can not modify this time!',mtWarning,[mbOk],0);
    为什么table1追加的只是query1里的第一条,而且是死循环.帮忙看看吧!
      

  6.   

    if Table1.CanModify then
        begin
           
           Query1.First;
           while not Query1.Eof do
               begin
    Table1.Edit;
                  Table1.Append;
                  Table1field1.Value:=Edit1.Text;
                  Table1field2.Value:=Edit2.Text;
                  Table1field3.Value:=Query1.FieldByName('acno').AsString;
                  Table1.Post;
                  Query1.Next;
               end;
                   showmessage('success!');
        end
    else试试看,希望能!
    我这删了DELPHI了!只能靠记了!
      

  7.   

    首先谢谢你,不过还是不行,运行的时候提示错误:
     multiple records found. but only one was expected.
      

  8.   

    如果要使用cacheupdate来更新改变了的一批记录,应该怎么写呢?
    我只知道要将query的cacheupdate和requestlive属性均设为true;
    但是程序应该怎么写阿?
      

  9.   

    谢谢个位,先
    要完成的功能是这样的
            输入项1: Edit1
            输入项2: Edit2
          确定         取消
    根据edit2的输入项在表table1中取字段field1,并将edit1.text 和edit2.text以及从table1中找出来的field1的值逐项插入表table2中.全部代码如下:
    begin
       if Edit1.Text='' then
          begin
             messagedlg('不能为空!',mtWarning,[mbOk],0);
             Edit1.SetFocus;
          end
       else
       if Edit2.Text='' then
          begin
             messagedlg('不能为空!',mtWarning,[mbOk],0);
             Edit2.SetFocus;
          end
       else
       begin
           Query1.Close;
           Query1.SQL.Clear;
           Query1.SQL.Add('select field1 from table1 where cust_name=:custname ');
           Query1.ParamByName('custname').Value:=Edit2.Text;
           Query1.Open;
            if Query1.RecordCount=0 then
                begin
                   messagedlg('没有记录!',mtWarning,[mbOk],0);
                   Edit2.SetFocus;
                end
            else
             if Table2.CanModify then
                begin
                   Query1.First;
                   while not Query1.Eof do
                     begin
                        Table2.Edit;
                        Table2.Append;
                        Table2name.Value:=Edit1.Text;
                        Table2cust_name.Value:=Edit2.Text;
                        Table3field1.Value:=Query1.FieldByName('field1').AsString;
                        Table2.Post;
                        Query1.Next;
                     end;
                   showmessage('success!');
                end
             else
              messagedlg('can not be modified!',mtWarning,[mbOk],0);
         end
    end;
    大家帮忙给看看!
      

  10.   

    Table3field1.Value:=Query1.FieldByName('field1').AsString;
    这一句应该是Table2field1.Value:=Query1.FieldByName('field1').AsString;
      

  11.   

    while not Query1.Eof do
                     begin
                        Table2.Append;
                        Table2name.Value:=(Edit1.Text);
                        Table2cust_name.Value:=(Edit2.Text);
                        Table2.field1.Value:=trim(Query1.FieldByName('field1').AsString);
                        Table2.Post;
                        Query1.Next;
                     end;
      

  12.   

    各位,还是不行呀,仍然是错误提示:multiple records found. but only one was expected.
    是不是跟我的表结构有关系,我的table2没有主键,只有建在name字段上的索引,帮忙想想吧!
      

  13.   

    if Table1.CanModify then
        begin
           
           Query1.First;
           while not Query1.Eof do
               begin
    Table1.Edit;
                  Table1.Append;
                  Table1field1.Value:=Edit1.Text;
                  Table1field2.Value:=Edit2.Text;
                  Table1field3.Value:=Query1.FieldByName('acno').AsString;
                  Table1.Post;
                  Query1.Next;
               end;
                   showmessage('success!');
        end
    else
    这段代码没错
    可能是因为 数据库 表中没有主码,小弟日前也碰到这个问题,查查看,是否这样
      

  14.   

    TO: gaofei8998
    我在库中加了主键,但是运行时还是出错,说插入了重复的键值,这不是说明同一条记录一直在插入吗?什么问题呢?
    TO:LxbWater
    你说的添加自动编号字段什么意思?各位,问题到底出在哪里呢?帮帮忙吧!