以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]单表多字段组合查询 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34248) |
||||
-- 作者:laoshu4569 -- 发布时间:2013/6/3 17:20:00 -- [求助]单表多字段组合查询 在窗口中有多个TextBox 代表多个字段 sql查询条件 是从上述TextBox中读取出来然后进行查询 可是 当单独查询某个字段时 没有问题 可是 两个字段一组合查询查询结果不正确了 其实我知道可以对TextBox判断为空 然后在写条件组合查询 可是假如我有很多字段 有什么好点的方法吗 我的需求呢就是 单独字段查询时可查 任意字段组合查询时 也可查询出来 其实看了那个代码就知道 组合查询为什么不对了 尽量不去判断TextBox为空 但是有的是一定要判断为空
可是字段太多了 一个个去判断为空 很麻烦 有什么解决的办法吗 要用sql查询 我之前做的是 先加载全部数据 然后用的内部表查询办法 可是 假如数据量超过万条以上 先加载就很慢 我现在就是想不加载 直接从数据库查 然后返回到表中
[此贴子已经被作者于2013-6-3 17:21:33编辑过]
|
||||
-- 作者:Bin -- 发布时间:2013/6/3 17:22:00 -- 遍历当前窗口的所有文本框,然后操作即可.可以省下N多重复代码.也可以写一个全局函数来处理 |
||||
-- 作者:laoshu4569 -- 发布时间:2013/6/3 17:24:00 -- 能写个小事例 我看看吗 谢谢了 |
||||
-- 作者:Bin -- 发布时间:2013/6/3 17:25:00 -- 帮助都写得这么清楚了.还不会吗? |
||||
-- 作者:laoshu4569 -- 发布时间:2013/6/3 17:27:00 -- 遍历是会 可是在写语句的时候 该怎么去写呢 |
||||
-- 作者:Bin -- 发布时间:2013/6/3 17:28:00 -- .
|
||||
-- 作者:laoshu4569 -- 发布时间:2013/6/3 17:32:00 -- 可是 我要是在写查询语句的时候 不一定每个查询条件都要满足 比如10个字段中只满足2个 加上遍历那个 该怎么写呢 |
||||
-- 作者:Bin -- 发布时间:2013/6/3 17:35:00 -- 什么意思啊? 空值的话就不拼接是吗? 这样只能一个个判断.没捷径. |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/6/3 17:44:00 -- 呵呵,帮助不是有个类似的例子吗: http://www.foxtable.com/help/topics/1058.htm
帮助是查询,不是加载,但是道理都一样,目的是根据输入的内容合成条件表达式,逐个输入框判断,逐个条件累加,最后再根据合成的条件筛选或加载。 [此贴子已经被作者于2013-6-3 18:10:30编辑过]
|
||||
-- 作者:laoshu4569 -- 发布时间:2013/6/5 10:01:00 -- Dim Filter As String If Connections("DA").SourceType = 1 Then \'Access数据源 With e.Form.Controls("ComboBox3") If .value IsNot Nothing Then Filter= Tables("检索查询_Table1").Fill("Select * From [档案新标准] Where 机构 =\'" & .value & "\'","DA",False) End If End With With e.Form.Controls("ComboBox4") If .value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Tables("检索查询_Table1").Fill("Select * From [档案新标准] Where 保管期限 =\'" & .value & "\'","DA",False) End If End If If Filter > "" Then Tables("检索查询_Table1").Filter = Filter End If 要是这么判断 中间 那个Filter =之后语句该怎么写呢
|