【问题标题】:Problem when filtering datatable by dataview (with Concat Fields)通过数据视图过滤数据表时出现问题(使用 Concat 字段)
【发布时间】:2020-08-24 19:14:46
【问题描述】:

我有 sql 语法:

SELECT 
    FatoraID, 
    FatoraCode, 
    FatoraDate, 
    FatoraProduct, 
    FatoraQuan, 
    FatoraReso, 
    FatoraPurPrice, 
    FatoraPurTotal, 
    FatoraCustomer, 
    FatoraSalePrice, 
    FatoraDis,
    FatoraPlus,
    FatoraSaleTotal, 
    FatoraDriverType, 
    FatoraDriver, 
    FatoraDriverName, 
    FatoraCarNo, 
    FatoraDriverCost, 
    FatoraDriverCostTotal, 
    FatoraDriverCostPaid, 
    FatoraDone,
    ProductName,
        CONCAT(R.AccCode,' ',R.AccName) AS ResoName,
        CONCAT(C.AccCode,' ',C.AccName) AS CusName,
        CONCAT(D.AccCode,' ',D.AccName) AS DName 
    FROM tblfatora F 
        INNER JOIN tblproducts P ON
            P.ProductID = F.FatoraProduct
        INNER JOIN tblaccounts R ON
            R.AccID = F.FatoraReso
        INNER JOIN tblaccounts C ON
            C.AccID = F.FatoraCustomer
        LEFT JOIN tblaccounts D ON
            D.AccID = F.FatoraDriver
    ORDER BY FatoraDate

在某处我使用数据视图过滤数据表:

    xPub_Filter = ""
    xPub_Filter = Trim("FatoraID+ 
    FatoraCode+ 
    FatoraDate+ 
    FatoraDriverType+ 
    FatoraDriverName+ 
    FatoraCarNo+ 
    FatoraDriverCostPaid+ 
    FatoraDone+
    ProductName+
    ResoName+
    CusName+
    DName
    like '%" & Me.TxtS.Text & "%'")

我用结果填充 GridView,问题是当我删除下一个字段时过滤器工作得很好:

ProductName+
ResoName+
CusName+
DName

但对他们来说它不起作用。

【问题讨论】:

  • 你的 Trim 在这里有意义,比如 '%" & Trim(Me.TxtS.Text) & "%'" 不是在开头 ;)

标签: mysql sql vb.net


【解决方案1】:

文件管理器表达式不正确

您必须为每一列指定一个比较,并且语法类似于 sql

    xPub_Filter = ""
    xPub_Filter = "FatoraID like '%" & Trim(Me.TxtS.Text) & "%' OR 
                                FatoraCode like '%" & Trim(Me.TxtS.Text) & "%' OR  
                                FatoraDate like '%" & Trim(Me.TxtS.Text) & "%' OR  
                                FatoraDriverType like '%" & Trim(Me.TxtS.Text) & "%' OR  
                                FatoraDriverName  like '%" & Trim(Me.TxtS.Text) & "%' OR  
                                FatoraCarNo like '%" & Trim(Me.TxtS.Text) & "%'  OR  
                                FatoraDriverCostPaid like '%" & Trim(Me.TxtS.Text) & "%'  OR  
                                FatoraDone like '%" & Trim(Me.TxtS.Text) & "%' OR 
                                ProductName like '%" & Trim(Me.TxtS.Text) & "%' OR 
                                ResoName like '%" & Trim(Me.TxtS.Text) & "%' OR 
                                CusName like '%" & Trim(Me.TxtS.Text) & "%'  OR 
                                DName like '%" & Trim(Me.TxtS.Text) & "%'"

【讨论】:

  • 谢谢亲爱的,它正在工作,但它让我“无法对 system.int32 和 system.string 执行 'like' 操作”,如何更改您的解决方案来解决它?
  • 是的,like 仅对文本有效,但我看不出您拥有哪种列。所以你应该真正看到你想要什么并确定你想要过滤什么,但是你可以编写正确的过滤器。你最清楚自己想要什么
  • 谢谢,我只是想将“FatoraID”列转换为字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
相关资源
最近更新 更多