微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在dataview.rowfilter中使用2个参数?怎么样?

如何解决是否可以在dataview.rowfilter中使用2个参数?怎么样?

| 它可以使用1个参数(i_index),但如果我也使用i_datum,则会收到类似以下错误:\“从字符串\” park_id = 100 \“转换为\'Long \'无效。\”
Public Function detail_kalender(ByVal i_index As Int16,ByVal i_datum As Date) As DaTarowView
    Dim dv As DataView
    Dim anyrow As DaTarowView
    dv = New DataView

    With dv

        .Table = myds.Tables(\"kalender\")
        .AllowDelete = True
        .AllowEdit = True
        .AllowNew = True
        .RowFilter = \"park_id = \" & i_index And \"datum =\" & i_datum


    End With
    anyrow = dv.Item(0) \'geeft de eerste rij van de dataview dv

    \' Simple bind to a TextBox control
    dv = mydt_parken.defaultview
    Return anyrow
    dv.dispose()
    dv = nothing

End Function
    

解决方法

查看您在其中具有行过滤器的代码,它将转换为:
.RowFilter = \"park_id = 100datum = something\"
请注意,park_id和下一个字段之间缺少空间。您还需要添加“和”(我想?) 尝试:
.RowFilter = String.Format(\"park_id = {0} and datum = {1}\",i_index.Tostring,i_datum.ToString)
您可能需要根据数据的类型对此进行修改,以包括撇号(即,更改为
... and datum = **\'**{1}**\'** 
如果是字符串) 编辑:回应您的评论。 在此页面上查看一些有用的提示。对于日期,请使用#符号。
.RowFilter = String.Format(\"park_id = {0} and datum = #{1}#\",i_datum.ToString)
编辑:响应您的第二条评论(formatException \“字符串未被识别为有效的DateTime。\”): 这有点棘手。我将列出一个可能的快速解决方案,但绝不是最好的解决方案。
Dim customDateFormat As String = \"MM/dd/yyyy hh:mm:ss\"
.RowFilter = String.Format(\"park_id = {0} and datum >= #{1}# and datum <= #{2}#\",i_index.ToString,New DateTime(i_datum.Year,i_datum.Month,i_datum.Day,0).ToString(customDateFormat),23,59,59).ToString(customDateFormat))
基本上,机会是当您将日期与数据库中的日期时间进行比较时,您想忽略时间吗? (在这里做一个假设)。一种方法是将数据库数据与日期进行比较,以确保其介于00:00 AM和23:59:59 PM之间。 我包含了一个customDateFormat字符串,您可以在需要时对其进行篡改,以反映您的语言环境。我知道日期常量会忽略语言环境,但我不知道它在RowFilter中作为字符串在做什么,以及数据库语言环境是否对其有影响。如果上述方法不起作用,则可以更改日期格式字符串以匹配您的语言环境,以查看是否有帮助。     ,尝试改用:
.RowFilter = \"park_id = \" & i_index  & \" And datum =\" & i_datum
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。