Str2:=Edit4.Text;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from BigSlipTab where B_Name='''+Str2+'''');
ADOQuery2.Open;我用这段程序来进行查询,当我查到符合条件的记录是,怎么把指针定位在该条记录上?

解决方案 »

  1.   

    procedure TMainFrm.BitBtn4Click(Sender: TObject);
    var
      memsize:integer;
      buffer:pchar;
      myfile:tfilestream;
      stream:TStream;
      i:integer;
      str1,Str2:String;
    begin
             Str1:=Edit3.Text;
             ADOQuery1.Close;
             ADOQuery1.SQL.Clear;
             ADOQuery1.SQL.Add('select * from BigSlipTab where B_Number='''+Str1+'''');
             ADOQuery1.Open;         Str2:=Edit4.Text;
             ADOQuery2.Close;
             ADOQuery2.SQL.Clear;
             ADOQuery2.SQL.Add('select * from BigSlipTab where B_Name='''+Str2+'''');
             ADOQuery2.Open;
             if (ADOQuery1.RecordCount=0) And (ADOQuery2.RecordCount=0) then
               Messagebox(MainFrm.Handle,'没有查到符合条件的信息!','查询提示',MB_OK+MB_ICONINFORMATION)
             else
             begin
    myfile:=tfilestream.create('c:\temp.tmp',fmcreate);with adotable1 do
    begin
    open;
    stream:=createblobstream(fieldbyname('B_Memo'),bmRead);
    memsize:=stream.size;
    inc(memsize);
    buffer:=allocmem(memsize);
    try
    stream.read(buffer^,memsize);
    myfile.write(buffer^,memsize);
    finally
    myfile.Free;
    stream.free;
    end;
    end;
    if fileexists('c:\temp.doc') then
    deletefile('c:\temp.doc');
    if fileexists('c:\temp.tmp') then
    begin
    renamefile('c:\temp.tmp','c:\temp.doc');
    shellexecute(Handle,Nil,'c:\temp.doc',Nil,Nil,SW_SHOWNORMAL);
    end;
    end;
    end;我用这段代码来打开WORD文档,但为什么会打开的总是第一条记录呢?
      

  2.   

    Open记录是就是第一条啊
    ClientDataSet1.RecNo;
    ADOQuery1.RecNo;
      

  3.   

    我用ADOTable1.RecNo来还是不对?
      

  4.   

    你每次都是取的adotable的fieldbyname('B_Memo'),肯定打开的word文件都是一样的。
    应该让adoquery和adotable建立联系才能定位正确的记录