procedure TFrom2.BitBenClick(Sender:Tobject);
begin
  if Query1.Active then
  Query1.Active :=Flase;
  Query1.ParamByName('zdm').AsString :=C_Zd.Text;
  Query1.ParamByName('zym').AsString :=C_cc.Text;
  Query1.ParamByName('ccm').AsString :=C_Zy.Text;
  Query1.ParamByName('nj').AsString :=C_nj.Text;
  Query1.Active :=True;
end;
end.TQuery 中的SQL语句为:
  sdlect xsxcb.xh,xsxcb.xm,zddhb.zdm,ccdhb.ccm,zydhb.zyh,xsxcb.nj
  from xdxcb,zddhb,zydhb,ccdhb
  where xsxcb.zdh=zddhb.zdh and xsxcb.cch=ccdhb.cch and xsxcb.zyh=zydhb.zyh
         and zddhb.zdm=:zdh and ccdhb.ccm=:ccm and xsxcb.nj=:nj 
         and zydhb.zyh=:zyh
我在编译时没有错,但是单击BitBen按扭时没有反应!可以看到数据库在查询,但是没有结果
为什么呀?

解决方案 »

  1.   

    Query1 是不是没有绑定到什么 DBGrid 上呀?或者是如果一开始你的 Query1.Active 为 False 的话,你的代码是不会被执行的,是不是这些问题?
      

  2.   

    把Query1.ParamByName('zdm').AsString :=C_Zd.Text;
      Query1.ParamByName('zym').AsString :=C_cc.Text;
    改为
      Query1.ParamByName('zdh').AsString :=C_Zd.Text;
      Query1.ParamByName('zyh').AsString :=C_cc.Text;
    或者把
      where xsxcb.zdh=zddhb.zdh and xsxcb.cch=ccdhb.cch and    xsxcb.zyh=zydhb.zyh
             and zddhb.zdm=:zdh and ccdhb.ccm=:ccm and xsxcb.nj=:nj 
             and zydhb.zyh=:zyh
    改为
      where xsxcb.zdh=zddhb.zdh and xsxcb.cch=ccdhb.cch and xsxcb.zyh=zydhb.zyh
             and zddhb.zdm=:zdm and ccdhb.ccm=:ccm and xsxcb.nj=:nj 
             and zydhb.zyh=:zym
    试一下
      

  3.   

    好像是Query1.parameters.ParamByName('zdm').AsString :=C_Zd.Text 把
      

  4.   

    procedure TFrom2.BitBenClick(Sender:Tobject);
    begin
      Query1.Active :=Flase;
      Query1.ParamByName('zdm').AsString :=C_Zd.Text;
      Query1.ParamByName('zym').AsString :=C_cc.Text;
      Query1.ParamByName('ccm').AsString :=C_Zy.Text;
      Query1.ParamByName('nj').AsString :=C_nj.Text;
      Query1.Active :=True;
    end;
    end.
      

  5.   

    Query1.parameters.ParamByName('zdm').AsString :=C_Zd.Text
      

  6.   

    why query is closed first?
    i think it should be opened first,then 
    query1.fieldbyname('name').asstring:=.....;
      

  7.   

    对,前面的人说的对,如果你先把query1关闭了,那么你的记录就很难显示了,我以前也是那样做的,不过我后来发现我错了。
      

  8.   

    同意上面的人,怎么还用bde啊,???/
      

  9.   

    if 保证查询没有问题,在SQL上运行一下=true then  if 保证控件连接没有问题=true then    if 利用单步追踪看看=true then      MessageBox("","如果还不行,无能为力。");