如何解决是否可以在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 举报,一经查实,本站将立刻删除。