做一个很小的数据库查询程序
遇到一个难题:
我在Form4里的edit1里输入查询条件(id),点击btn1弹出form5显示查询结果(按字段显示在不同的edit里),我不知道这个在不同的窗体里的sql语句怎么写?
请各位看看要实现这个代码该怎么写?
表为:Operator 字段名称有id name sex age;
后面三个字段要显示在三个edit里的,要分三条写吗?

解决方案 »

  1.   

    没必要分三个写,你为什么要放三个edit呢?你放三个dbedit控件的话,自动关联的话一条语句就可以了。
    如果你非要用TEdit空间的话大概象这样:
    select name,sex,age from....
    然后分别赋值:
    edit1.Text:=Fields[0].AsString;//代表记录集的第一个字段
    edit2.Text:=Fields[1].AsString;
    edit3.Text:=Fields[2].AsString;
    回答的够详细了吧:)
      

  2.   

    谢谢你。
    “你为什么要放三个edit呢?”因为我目前只能想到每个edit 前面放一个标签说,我想这样对应,:)
    您说的最简单的那种一条语句搞定的是怎么写的。
    还有,btn1 不在查询显示窗体不要紧的吗》?
      

  3.   

    我的目标就是输入一个ID,在form5里把其他的字段数据全显示出来
      

  4.   

    //Delphi有些生疏了,大概是这个意思,就是从Form4中把参数传给Form5的私有变量,而后在Form5的Show中,执行SQL,把结果显示出来!//Form4
        Form5:=TForm5.Create;
        Form5.para1:=XXX;
        Form5.para2:=YYY;
        Form5.ShowModal;//Form5
    private
      para1,para2,para3:string;
    procedure TForm5.ShowResult;
    begin
      with Query1 do
      begin
       XXXXXXXX;
      end;
    procedure TForm5.Show;
    begin
      ShowResult;
    end;
    end;
      

  5.   

    樓主在form4里定義參數傳給form5就是了
      

  6.   

    Form5只需要放4个Edit,下面是form4的代码unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,ADODB,Unit2;type
      TForm4 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form4: TForm4;
      ADOConnection1: TADOConnection;
      ADOQuery1: TADOQuery;implementation{$R *.dfm}procedure TForm4.Button1Click(Sender: TObject);
    var
        S_ID:integer;
    begin
        if(Edit1.Text<>'')then
        begin
            S_ID  := strtoint(Edit1.text);
            Form2:=TForm2.Create(self);
            Form2.Edit1.Text:=Edit1.text;
            ADOQuery1.Close;
            ADOQuery1.SQL.Clear;
            ADOQuery1.SQL.ADD('select Study_Key,Pat_ID,Pat_Name from StudysList where Study_ID = :S_ID') ;
            ADOQuery1.Open;
            Form2.Edit2.Text  :=  ADOQuery1.Fields[0].AsString;
            Form2.Edit3.Text  :=  ADOQuery1.Fields[1].AsString;
            Form2.Edit4.Text  :=  ADOQuery1.Fields[2].AsString;
            Form2.ShowModal;    end;
    end;procedure TForm4.FormCreate(Sender: TObject);
    begin
       ADOConnection1   :=   TADOConnection.Create(self);
       ADOQuery1        :=   TADOQuery.Create(self);
       ADOConnection1.Close;
       ADOConnection1.ConnectionString :=' Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files\Borland\Delphi6\Projects\Bpl\ADOTest\Atest.mdb;Mode=Share Deny None;Extended ';
       ADOConnection1.LoginPrompt:=false;
       ADOConnection1.CursorLocation := clUseClient;
       ADOQuery1.CacheSize  := 1000;
       ADOQuery1.Prepared   := true;
       ADOQuery1.Connection :=   ADOConnection1;
    end;
    end.
      

  7.   

    sorry   procedure TForm1.Button1Click(Sender: TObject);
    begin
        if(Edit1.Text<>'')then
        begin
            Form2:=TForm2.Create(self);
            ADOQuery1.Close;
            ADOQuery1.SQL.Clear;
            ADOQuery1.SQL.ADD('select Study_Key,Pat_ID,Pat_Name from StudysList where Study_ID   = :Study_ID') ;
            ADOQuery1.Parameters.ParamByName('Study_ID').Value:=strtoint(Edit1.text);
            ADOQuery1.Open;
            Form2.Edit1.Text  :=  Edit1.text;
            Form2.Edit2.Text  :=  ADOQuery1.Fields[0].AsString;
            Form2.Edit3.Text  :=  ADOQuery1.Fields[1].AsString;
            Form2.Edit4.Text  :=  ADOQuery1.Fields[2].AsString;
            Form2.ShowModal;    end;
    end;