多表查询,你在sql.add('select ksh,zkzh,xm')中的ksh,zkzh,xm要加入是那个表的字段。如:t_dd.ksh .用prepare 不要忘了用unprepare.

解决方案 »

  1.   

    你试试这样写行不行?procedure TForm1.Button1Click(Sender: TObject);
    var
    name:string;
    begin
      name:=inputbox('输入姓名','请输入学生姓名:','');
      query1.Close;
      with query1 do
      begin
        sql.Clear;
        sql.Add('select a.ksh,a.zkzh,a.xm');//写出ksh,zkzh,xm出自那个表,这里假设你出自t_tdd
        sql.add('from t_tdd a,fp b');//用别名
        sql.Add('where a.ksh=b.ksh and a.xm=:name');
        params[0].AsString:=name;
        prepare;
        open;
      end;
    end;
        
      

  2.   

    注意SQL中的空格
    sql.Add('select ksh,zkzh,xm');
    sql.add(' from t_tdd,fp');
    sql.Add(' where t_tdd.ksh=fp.ksh and t_tdd.xm=:name');
      

  3.   

      我现在的问题是程序运行后,dbgrid1中的数据为空。例如:在t_tdd表中存在一条记录的xm字段值为"纪亮"(xm类型为char(64)).但我在程序运行后在inputbox的对话框中输入"纪亮"后dbgrid1中的数据为空。若我将程序代码改为如下:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      query1.Close;
      with query1 do
      begin
        sql.Clear;
        sql.Add('select ksh,zkzh,xm');
        sql.add('from t_tdd,fp');
        sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm=“纪亮"');
        prepare;
        open;
      end;
    end;
    程序运行正常,dbgrid1中会显示出数据。请教专家这是怎么回事?
      

  4.   

    sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm=“纪亮"');
    要这么写sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm='纪亮'');    
      

  5.   

    我的问题是如下程序什么地方出错了?
    procedure TForm1.Button1Click(Sender: TObject);
    var
    name:string;
    begin
      name:=inputbox('输入姓名','请输入学生姓名:','');
      query1.Close;
      with query1 do
      begin
        sql.Clear;
        sql.Add('select ksh,zkzh,xm');
        sql.add('from t_tdd,fp');
        sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm=:name');
        params[0].AsString:=name;
        prepare;
        open;
      end;
    end;
    程序运行后按下button1后在inputbox对话框中输入纪亮后,dbgrid1中不显示任何数据。而在t_tdd表中有xm=“纪亮",但查不出来,是怎么回事?
      

  6.   

    楼上真是个势利小人,我就这点分了我有什么办法。你自己不会就别在这里jjyy.你不懂得什么是助人为乐吗?你根本就不懂什么是“路漫漫其修远兮,吾将上下而求索“。
      

  7.   

    多表查询需要指明那个表里的字段
    比如tab1中的字段a 需要这么写tab1.a才可以,你的sql语句有问题:)
      

  8.   

    sql.Add(' where t_tdd.ksh=fp.ksh and t_tdd.xm=name');
    改为
    sql.Add(' where t_tdd.ksh=fp.ksh and t_tdd.xm='''+name+'''');