以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态增加的表筛选第个列问题出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131424)

--  作者:nxhylczh
--  发布时间:2019/2/25 21:21:00
--  动态增加的表筛选第个列问题出错
If CurrentTable.Name.StartsWith("查看账页") Then
    MessageBox.show("1")
    If CurrentTable.Focus Then
    Dim txtsx As WinForm.TextBox = e.Form.Controls("txtsx")
    Dim T1 As Table =CurrentTable
    Dim txt As String ="%" & Functions.Execute("RealStr",txtsx.text )  & "%"
    Dim Filter As String \'="分组_编码 like " & txt & " or 分组_名称 like " & txt & " Or 计量单位 Like " & txt
    For i As Integer=0 To t1.Cols.Count-1
        If t1.Cols(i).IsString Then
            Filter=filter & t1.cols(i).Name & " like \'" & txt & "\' Or "
        Else If t1.cols(i).IsNumeric Then
            Filter=filter & t1.cols(i).Name & " = " & txt & " Or "
        End If
        
    Next
    Filter=left(Filter,filter.Length-3)
    \'MessageBox.show(filter)
    t1.Filter= Filter
    End If
End If
表格样式 

出错代码:.NET Framework 版本:2.0.50727.8800
Foxtable 版本:2018.10.9.1
错误所在事件:
详细错误信息:
语法错误:“Mod”运算符前缺少操作数。

图片点击可在新窗口打开查看此主题相关图片如下:l(zv8gbk3@rabjs3{{aqsv.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2019/2/25 21:59:00
--  
MessageBox.show(filter),完整的条件显示什么内容
--  作者:nxhylczh
--  发布时间:2019/2/25 22:06:00
--  
当我在TextBox里输入2
期间_年 = %2% Or 期间_月 = %2% Or 期间_日 = %2% Or 凭证_字 like \'%2%\' Or 凭证_号 = %2% Or 摘要 like \'%2%\' Or 数量(单位:KG)_借方 = %2% Or 数量(单位:KG)_贷方 = %2% Or 数量(单位:KG)_借贷 like \'%2%\' Or 数量(单位:KG)_结存 = %2% Or 单价 = %2% Or 美元金额_借方 = %2% Or 美元金额_贷方 = %2% Or 美元金额_借贷 like \'%2%\' Or 美元金额_余额 = %2% Or 汇率 = %2% Or 人民币金额_借方 = %2% Or 人民币金额_贷方 = %2% Or 人民币金额_借贷 like \'%2%\' Or 人民币金额_余额 = %2% 
---------------------------
确定   
---------------------------


--  作者:nxhylczh
--  发布时间:2019/2/25 22:10:00
--  
问题估计是出在了数字列中的 %号上了
--  作者:有点蓝
--  发布时间:2019/2/25 22:30:00
--  
数字列不能like。

其次列名不要使用特殊字符,如果有要使用中括号括起来,如:[数量(单位:KG)_贷方]  = 2

--  作者:有点甜
--  发布时间:2019/2/26 9:13:00
--  

1、条件要这样写

 

期间_年 = \'%2%\' Or 期间_月 = \'%2%\' Or 期间_日 = \'%2%\'

 

也就是 Dim txt As String ="%" & Functions.Execute("RealStr",txtsx.text )  & "%"

 

要改成 Dim txt As String ="\'%" & Functions.Execute("RealStr",txtsx.text )  & "%\'"

 

2、如果是数值列,想用like,可以这样写,如 convert(数值列, \'System.String\') like \'%2%\'