Foxtable(狐表)用户栏目专家坐堂 → 求:SQL语句筛选,如何用变量代替查询列,查询符,查询值


  共有12114人关注过本帖树形打印复制链接

主题:求:SQL语句筛选,如何用变量代替查询列,查询符,查询值

帅哥哟,离线,有人找我吗?
don
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
don
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By: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

............

注:如"%"不行請自行換為"*",我是"*"不行才換為"%"

 回到顶部
帅哥哟,离线,有人找我吗?
don
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By: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


 回到顶部