它适用于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
答案 0 :(得分:0)
查看行过滤器的代码,它将转换为:
.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}**'**
如果是字符串)
编辑:回复你的评论。
查看this page上的一些有用提示。对于日期,请使用#符号。
.RowFilter = String.Format("park_id = {0} and datum = #{1}#", i_index.Tostring, i_datum.ToString)
编辑:响应您的第二条评论(formatException“字符串未被识别为有效的日期时间。”):
这有点棘手。我将列出一个可能的快速解决方案,但绝不是最佳解决方案。
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, 0, 0).ToString(customDateFormat),
New DateTime(i_datum.Year, i_datum.Month, i_datum.Day, 23, 59, 59).ToString(customDateFormat))
基本上,当您将日期与数据库中的日期时间进行比较时,您可能想忽略时间? (在此做出假设)。一种方法是将您的数据库数据与您的日期进行比较,确保它在00:00 AM到23:59:59 PM之间。
我已经包含了一个customDateFormat字符串,您可以根据需要进行篡改,以反映您的语言环境。我知道日期常量会忽略语言环境,但我不知道它在RowFilter中的作用是什么,以及数据库语言环境是否对它有任何影响。如果上述操作无效,您可以更改日期格式字符串以匹配您的语言环境,以查看是否有帮助。
答案 1 :(得分:0)
请尝试使用:
.RowFilter = "park_id = " & i_index & " And datum =" & i_datum