delphi老版本如D6.0,D7.0,如何做通用高级查询的?

jeetliang 2017-11-30 02:57:53
delphi老版本如D6.0,D7.0,如何做通用高级查询的?也就是在一个框内选字段名,再加或和与组成查询语句,同时这个界面可以被共用,查询框根据不同的单据变动里面的查询字段名,有没有高手大神提供下思路?或模板
...全文
592 15 点赞 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lsh341999 2017-12-11
给你个思路吧,如图:
  • 打赏
  • 举报
回复
tanqth 2017-12-11

单独的查询窗体

查询字段自动提取,可设置为中文名

多条件任意组合

使用代码简单

配合ADO连接直接使用。
  • 打赏
  • 举报
回复
lyhoo163 2017-12-11
思路够复杂的。
  • 打赏
  • 举报
回复
日月路明 2017-12-09
引用 11 楼 jeetliang 的回复:
字符串串接我肯定是会写的呀,我是想要能公用的高级查询,如采购单查询用了,出货单查询也能用这个FORM,只是里面的表字段变了而已
#9已经回答你了“这个问题说简单就简单,说难也难,我们自己做了一个,思路并不复杂: 类似6楼的界面,接收参数为TDataSet,下拉框用DataSet的字段的DisplayTitlet填充,便于用户阅读,剩下的就简单了,根据设置的条件,拼接条件字符串 ”, 我们的界面就是通用的,不是针对某种特定单据设计的
  • 打赏
  • 举报
回复
jeetliang 2017-12-09
字符串串接我肯定是会写的呀,我是想要能公用的高级查询,如采购单查询用了,出货单查询也能用这个FORM,只是里面的表字段变了而已
  • 打赏
  • 举报
回复
xiaocongzhi 2017-12-04
可以搞几列分别表示字段说明,字段名(隐藏与字段说明联动),比较关系(and/or等),根据所选的字段说明,比较关系连接成相应的SQL语句
  • 打赏
  • 举报
回复
日月路明 2017-12-04
我们的界面
  • 打赏
  • 举报
回复
日月路明 2017-12-04
这个问题说简单就简单,说难也难,我们自己做了一个,思路并不复杂: 类似6楼的界面,接收参数为TDataSet,下拉框用DataSet的字段的DisplayTitlet填充,便于用户阅读,剩下的就简单了,根据设置的条件,拼接条件字符串
  • 打赏
  • 举报
回复
ron_xin 2017-12-02
可以考虑用EHDBGRID,里面自带搜索过滤功能。
  • 打赏
  • 举报
回复
wensoft80 2017-12-02
  • 打赏
  • 举报
回复
ooolinux 2017-12-01
以下CB代码参考一下吧,刚学时学书里做的,控件都没有命名。
	AnsiString sql="select * from 员工信息表 where";
	AnsiString str="";
	if(ComboBox3->Text=="是")
		str+=" 是否管理人员=true and";
	else if(ComboBox3->Text=="否")
		str+=" 是否管理人员=false and";
	if(Edit1->Text!="")
		str+=" 员工号='"+Edit1->Text+"' and";
	if(Edit2->Text!="")
		str+=" 姓名='"+Edit2->Text+"' and";
	if(ComboBox1->Text!="")
		str+=" 性别='"+ComboBox1->Text+"' and";
	if(Edit3->Text!="")
		str+=" 出生日期=#"+Edit3->Text+"# and";
	if(ComboBox2->Text!="")
		str+=" 学历='"+ComboBox2->Text+"' and";
	if(Edit4->Text!="")
		str+=" 电话='"+Edit4->Text+"' and";
	if(ComboBox4->Text!="")
		str+=" 部门='"+ComboBox4->Text+"' and";
	if(ComboBox5->Text!="")
		str+=" 职位='"+ComboBox5->Text+"' and";
	str+=" year(出生日期)>1900"; //"  1=1" 应该也可以
	sql+=str;
  • 打赏
  • 举报
回复
ooolinux 2017-12-01
以下CB代码参考一下吧,刚学时学书里做的,控件都没有命名。 AnsiString sql="select * from 员工信息表 where"; AnsiString str=""; if(ComboBox3->Text=="是") str+=" 是否管理人员=true and"; else if(ComboBox3->Text=="否") str+=" 是否管理人员=false and"; if(Edit1->Text!="") str+=" 员工号='"+Edit1->Text+"' and"; if(Edit2->Text!="") str+=" 姓名='"+Edit2->Text+"' and"; if(ComboBox1->Text!="") str+=" 性别='"+ComboBox1->Text+"' and"; if(Edit3->Text!="") str+=" 出生日期=#"+Edit3->Text+"# and"; if(ComboBox2->Text!="") str+=" 学历='"+ComboBox2->Text+"' and"; if(Edit4->Text!="") str+=" 电话='"+Edit4->Text+"' and"; if(ComboBox4->Text!="") str+=" 部门='"+ComboBox4->Text+"' and"; if(ComboBox5->Text!="") str+=" 职位='"+ComboBox5->Text+"' and"; str+=" year(出生日期)>1900"; //" 1=1" 应该也可以 sql+=str;
  • 打赏
  • 举报
回复
lyhoo163 2017-11-30
通过SQL语句,就可以设置比较高级的查询。
  • 打赏
  • 举报
回复
jjpweb 2017-11-30
字符串串接。
  • 打赏
  • 举报
回复
tanqth 2017-11-30
我很早前自己做了一个控件ADO查询的。
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库相关
加入

2462

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2017-11-30 02:57
社区公告
暂无公告