我想在一个查询窗体中建立一个DBGrid1组件,作为查询筛选条件,鼠标点击DBGrid1任意单元格出现下拉框进行选择:
DBGrid1.Coulmns[0]列为SQL数据库的相关字段;
DBGrid1.Coulmns[1]列为固定的操作符号(如:=,>,<=,<,<=,<>等);
DBGrid1.Coulmns[2]列为用户自定义查询条件字段;
DBGrid1.Coulmns[3]列为增加DBGrid第二行时,考虑与其条件是"并连"关系还是"或者"关系;
允许DBGrid录入多个条件,然后根据此条件查询数据库的相应信息,并在DBGrid2中显示出来!高分求解!不够可再加!!

解决方案 »

  1.   

    在dbgrid中有一个picklist的属性,设置后就可以将条件放在这里了.
      

  2.   

    用dbgrideh能满足你的要求
    而且有工具可以把dbgrid全部转成dbgrideh
      

  3.   

    cxgrid完全可以实现以上功能。可以多条件筛选。
      

  4.   

    同意一楼,把查询的相关选项加到dbgird的PickList属性中就可以了
      

  5.   

    我在网上也查到过此方法,但我设置后运行程序时点DBGrid没有反应,也没有Combobox似的下拉框,能不能具体说明一下如何操作?
      

  6.   

    1.双击dbgrid,增加columns,比如增加了column0
    2.
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Dbgrid1.Columns[0].PickList.Add('dd');
      Dbgrid1.Columns[0].PickList.Add('aa');
      Dbgrid1.Columns[0].PickList.Add('bb');
      Dbgrid1.Columns[0].PickList.Add('cc');
      Dbgrid1.Columns[0].PickList.Add('dd');
    end;
    3.但dbgrid因为数据感知控件,需要与一个dataset关联,设置column0的关联字段
      

  7.   

    在Dbgrid可以实现Combobox了,但如何实现多行记录作为新的一个DBGrid2的查询条,然后根据此条件查询数据库的相应信息,并在DBGrid2中显示出来! 
      

  8.   

    我想,这个需要你一个个去拼SQL了
      

  9.   

    能不能以DBGrid有两行查询条件为例,说明一下具体如何拼这个SQL?
      

  10.   

    你的这里已经很清楚了DBGrid1.Coulmns[0]列为SQL数据库的相关字段;
    DBGrid1.Coulmns[1]列为固定的操作符号(如:=,>, <=, <, <=, <>等);
    DBGrid1.Coulmns[2]列为用户自定义查询条件字段;
    DBGrid1.Coulmns[3]列为增加DBGrid第二行时,考虑与其条件是"并连"关系还是"或者"关系; 就做循环取值,一行行的取 进行拼接
      

  11.   

    可是DBGrid1的条件行数是变动的,而且每行有字段、操作符、条件、条件关系等,如何变动地取出这些信息,然后作为DBGrid2的查询条件,我是菜鸟,真的不会,劳请zxf_feng 以说明一下具体如何拼这个SQL?
      

  12.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sSql: String;
    begin
      sSql := ' select * from lesson where 1=1';
      if adoquery1.RecordCount>0 then sSql := sSql +' and ';//第一个条件为 and
      adoquery1.First;
      while not adoquery1.Eof do
      begin
        sSql := sSql +'('+adoquery1.Fields[0].AsString+adoquery1.Fields[1].AsString+adoquery1.Fields[2].AsString+')';
        sSql := sSql +' '+ adoquery1.fields[3].AsString;  //当or ,and 等条件加在最后,如果没有,则应为空
        adoquery1.Next;
      end;
      showmessage(sSql);
    end;
      

  13.   

    很奇怪,还有一点没有搞懂:
    DBGrid1.Coulmns[0]列为SQL数据库的相关字段; 
    DBGrid1.Coulmns[1]列为固定的操作符号(如:=,>, <=, <, <=, <>等); 
    DBGrid1.Coulmns[2]列为用户自定义查询条件字段; 
    DBGrid1.Coulmns[3]列为增加DBGrid第二行时,考虑与其条件是"并连"关系还是"或者"关系; 当我在DBGrid1.Coulmns[0]列和DBGrid1.Coulmns[2]列录入信息
        在DBGrid1.Coulmns[1]列或DBGrid1.Coulmns[3]列选择相关内容后按下方向键增加一条记录时,
       第一行的DBGrid1.Coulmns[1]列或DBGrid1.Coulmns[3]列选择过的内空就不见,而在DBGrid1.Coulmns[0]列和DBGrid1.Coulmns[2]列录入信息却还在,不知道这是为什么?
      

  14.   

    你用了dbgrid要与数据库关联上,具体的得自己一点点调试了只不过你的DBGrid1.Coulmns[0]列是动态取的值。
    这应该不影响的。
      

  15.   

    明白了,是因为居中看不见了,实际是存在的.在这里要谢谢zxf_feng 的帮助!