【问题标题】:Trying to Add date condition filter in DataView尝试在 DataView 中添加日期条件过滤器
【发布时间】:2020-12-18 15:05:20
【问题描述】:

我正在尝试在收到的数据中添加日期条件过滤器,但出现错误“表达式包含未定义的函数调用 DateTime.Today.AddDays()。” 如何解决任何想法将不胜感激。 以下是详细内容

Public Class FileFilter
 Public FileId As Integer
        Public ParentFileId As Integer
        Public InternalVersion As Double
        Public SectionId As Integer
        Public FieldId As Integer
        Public TemplateID As Integer
Public DateValue As Date
End Class

Public Sub poladd()
 Dim objFileFilter As ICMSBAL.FileFilter = Nothing
 Dim dvPolicyDetails As DataView = Nothing
 Dim dtPolicyDetails As DataTable = Nothing
dvPolicyDetails = dtPolicyDetails.AsDataView()
dvPolicyDetails.RowFilter = "SectionId=" & FieldMaps.fileSectionInstalment & " and FieldId='464' and DateFlag='Y' and FileID=" & objPolicy.PolFileID & " and DateValue>=DateTime.Today  And DateValue<= DateTime.Today.AddDays(60)"
End Sub

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    如果你想使用字符串连接(你不应该这样做):

    dvPolicyDetails.RowFilter = "SectionId = " & FieldMaps.fileSectionInstalment & " AND FieldId = '464' AND DateFlag = 'Y' AND FileID = " & objPolicy.PolFileID & " AND DateValue >= #" & Date.Now.ToString("M/dd/yyyy") & "# AND DateValue <= #" & Date.Now.AddDays(60).ToString("M/dd/yyyy") & "#"
    

    假设SectionIdFileID 是数字,而FieldId 是文本,这就是您的原始代码所暗示的。

    更好的选择是使用String.Format:

    dvPolicyDetails.RowFilter = String.Format("SectionId = {0} AND FieldId = '464' AND DateFlag = 'Y' AND FileID = {1} AND DateValue >= #{2:M/dd/yyyy}# AND DateValue <= #{3:M/dd/yyyy}#",
                                              FieldMaps.fileSectionInstalment,
                                              objPolicy.PolFileID,
                                              Date.Now,
                                              Date.Now.AddDays(60))
    

    现在,最好的做法是使用字符串插值:

    dvPolicyDetails.RowFilter = $"SectionId = {FieldMaps.fileSectionInstalment} AND FieldId = '464' AND DateFlag = 'Y' AND FileID = {objPolicy.PolFileID} AND DateValue >= #{Date.Now:M/dd/yyyy}# AND DateValue <= #{Date.Now.AddDays(60):M/dd/yyyy}#"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2014-04-13
      • 1970-01-01
      相关资源
      最近更新 更多