以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求:SQL语句筛选,如何用变量代替查询列,查询符,查询值 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=15208) |
||||
-- 作者:老有所乐 -- 发布时间:2011/12/15 20:10:00 -- 求:SQL语句筛选,如何用变量代替查询列,查询符,查询值 求“查询”按钮代码。SQL语句筛选,如何用变量代替查询列,查询符,查询值
|
||||
-- 作者:don -- 发布时间:2011/12/15 23:37:00 -- 大概如此: Dim t As Table=Tables( e.Form.name & "_table1") Dim ct1,ct2,ct3,sql,str1, str2 As String With e.Form ct1 = .Controls("ComboBox1").value ct2 = .Controls("ComboBox2").value ct3 = .Controls("ComboBox3").value End With For Each dc As DataCol In DataTables("订单").DataCols If dc.IsString Then str1+="," & dc.Name ElseIf dc.IsDate Then str2+="," & dc.Name End If Next If Str1.Contains(ct1) Then if ct2.Contains("like") Then sql = " \' %" & ct3 & "%\'" else sql = " \'" & ct3 & "\'" End if ElseIf Str2.Contains(ct1) Then sql = " #" & ct3 & "#" Else sql = " " & ct3 End If sql= ct1 & " " & ct2 & sql & " group by 产品,客户,雇员,单价,数量" sql = "Select distinct Max(日期) As 日期,产品,客户,雇员 ,单价,数量 from {订单} where " & sql Dim cmd As New SQLCommand cmd.CommandText = sql t.DataSource = cmd.ExecuteReader
[此贴子已经被作者于2011-12-16 13:10:45编辑过]
|
||||
-- 作者:kylin -- 发布时间:2011/12/16 10:27:00 -- 直接引用系统的“高级筛选”--Syscmd.Filter.Advanced()
不是更方便? |
||||
-- 作者:老有所乐 -- 发布时间:2011/12/16 12:02:00 -- 谢谢don大师,基本可以,只是不能执行like 和not like 命令,不知是否还可以改进?
也谢谢kylin大师的关注,系统高级筛选是可以,做点练习,好进一步使用SQL语句 |
||||
-- 作者:don -- 发布时间:2011/12/16 12:28:00 -- 加個判斷就是了: ........... If Str1.Contains(ct1) Then if ct2.Contains("like") Then sql = " \' %" & ct3 & "%\'" else sql = " \'" & ct3 & "\'" End if ElseIf Str2.Contains(ct1) Then sql = " #" & ct3 & "#" Else sql = " " & ct3 End If ............ 注:如"%"不行請自行換為"*",我是"*"不行才換為"%"
|
||||
-- 作者:老有所乐 -- 发布时间:2011/12/16 14:29:00 -- don 老师真乃高手,谢谢! 我来仔细拜读 |
||||
-- 作者:don -- 发布时间:2011/12/16 16:23:00 -- 利用DataType.Name还可以简化: Dim t As Table=Tables( e.Form.name & "_table1") Dim Lm,Bjf,Bjz,sql,str As String With e.Form Lm= .Controls("ComboBox1").value Bjf= .Controls("ComboBox2").value Bjz = .Controls("ComboBox3").value End With str = DataTables("订单").DataCols(Lm).DataType.Name If Str = "String" Then if Bjf.Contains("like") Then sql = " \' %" & Bjz & "%\'" else sql = " \'" & Bjz & "\'" End if ElseIf Str = "DateTime" Then sql = " #" & Bjz & "#" Else sql = " " & Bjz End If sql= Lm & " " & Bjf & sql & " group by 产品,客户,雇员,单价,数量" sql = "Select distinct Max(日期) As 日期,产品,客户,雇员 ,单价,数量 from {订单} where " & sql Dim cmd As New SQLCommand cmd.CommandText = sql t.DataSource = cmd.ExecuteReader |
||||
-- 作者:老有所乐 -- 发布时间:2011/12/16 20:01:00 -- 谢谢don 老师! 不过like 和not like 还没有达到预期的效果,like 现在的效果同 = 一样 ,not like 同<>的效果 |
||||
-- 作者:老有所乐 -- 发布时间:2011/12/17 13:12:00 -- SQL 语句查询窗口,基本做出来了,这主要是dom老师的手笔,再次谢谢don老师!现将他分享给大家,这种查询的最大特点是可以模糊查询数值型记录。具体见窗口下面的说明。 现在还有一个难题,如何将【包含】、【首含】、【尾含】三个按钮合并为一个,还有待于大师的辛劳。
[此贴子已经被作者于2011-12-17 13:14:01编辑过]
|
||||
-- 作者:mr725 -- 发布时间:2011/12/17 14:26:00 -- 这个合并没有意思的。首含、尾含都在包含之中呀。 |