以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148281)

--  作者:和谐
--  发布时间:2020/4/3 18:43:00
--  [求助]
Dim Filter As String = "1=2"  
Dim val As String = e.Form.Controls("textbox1").Text


    For Each c As DataCol In DataTables("地区表").DataCols 
    
       Filter & = " or Convert(varchar(100), " & c.name & ") like \'%" & val & "%\'  "     老师请问这句怎么理解呢?为什么 Filter 后面要加&,才可以等于呢?
还有为什么一开始是OR,这句代码怎么也读不明白
    Next

--  作者:有点蓝
--  发布时间:2020/4/5 20:10:00
--  
filter &= "xxx" 等同于 filter = filter & "xxx" ,一种简写模式。

至于使用or还是使用and要看自己需要的功能。http://www.foxtable.com/webhelp/topics/0102.htm
比如如果是要筛选第一列或者第二列符合条件就使用or
比如如果是要筛选第一列第二列同时符合就使用and

--  作者:和谐
--  发布时间:2020/4/6 15:28:00
--  
   Filter & = " or Convert(varchar(100), " & c.name & ") like \'%" & val & "%\'  "  
老师上面的变量已经定义了Filter是字符串=“1=2”,那这句的是不是:筛选条件:1=2 & 转换地区列为字符串 like 地区列包含“东”,照读就是1=2这个开头就是搞不懂

--  作者:有点蓝
--  发布时间:2020/4/6 16:09:00
--  
统计表达式可以理解为是否的判断,就是:条件1是否成立 or 条件2是否成立 or 条件3是否成立 or ......

1=2是一种为了减少代码的取巧用法,因为1=2始终都是不成立的,所以:1=2 or 条件2是否成立 or 条件3是否成立 or ......
就等同于条件1不成立 or 条件2是否成立 or 条件3是否成立 or ......


如果不用1=2,可能就是这样的:

Dim Filter As String
With
 e.Form.Controls("cmbProduct")
    
If .Value IsNot Nothing Then
        Filter = 
"产品 = \'" & .Value & "\'"
    
End If
End
 With
With
 e.Form.Controls("cmbCustomer")
    
If .Value IsNot Nothing Then
        
If Filter > "" Then
            Filter = Filter & 
" or "
        
End If
        Filter = Filter & 
"客户 = \'" & .Value & "\'"
    
End If
End
 With

如果使用1=2,就样

Dim Filter As String = "1=2"
With
 e.Form.Controls("cmbProduct")
    
If .Value IsNot Nothing Then
        Filter = 
" or 产品 = \'" & .Value & "\'"
    
End If
End
 With
With
 e.Form.Controls("cmbCustomer")
    
If .Value IsNot Nothing Then
        Filter = Filter & 
" or 客户 = \'" & .Value & "\'"
    
End If
End
 With


不再需要一堆的这种判断
        If Filter > "" Then
            Filter = Filter & 
" or "
        
End If
[此贴子已经被作者于2020/4/6 16:09:15编辑过]