通过数据视图过滤数据表时出现问题(使用 Concat 字段)

Posted

技术标签:

【中文标题】通过数据视图过滤数据表时出现问题(使用 Concat 字段)【英文标题】:Problem when filtering datatable by dataview (with Concat Fields) 【发布时间】: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) & "%'" 不是在开头 ;) 【参考方案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”列转换为字符串。

以上是关于通过数据视图过滤数据表时出现问题(使用 Concat 字段)的主要内容,如果未能解决你的问题,请参考以下文章

“过滤”急切加载的数据时出现问题

使用 isin(list) 过滤数据帧时出现“ValueError:列必须与键长度相同”

尝试过滤提取的数据库信息时出现卸载组件警告

在将 Google BigQuery 作为源数据库的 Metabase 中使用字段过滤器时出现无法识别的名称

使用 Javascript 在 Laravel 刀片视图中显示数组中的动态数据时出现问题

尝试通过 terraform 设置 cloudwatch 日志过滤器时出现 InvalidParameterException