在第二个For Each
中,我想选择EmailCreateDate = dtEmailCreateDate
的所有记录,但没有找到记录。有人有想法吗?
Dim dtEmailCreateDate As DateTime = Date.Now
For Each row In _tblMandantenData.Select("Selected = True AND EmailSentDate IS NULL")
row("EmailCreateDate") = dtEmailCreateDate
DBAccess.UpdateEmailVersandInfos(row)
Next
Dim strQuery = String.Format("Selected = True AND EmailCreateDate = '{0}'", dtEmailCreateDate.ToString())
For Each rowToSent In _tblMandantenData.Select(strQuery)
SentMail(rowToSent)
Next
答案 0 :(得分:2)
如果查看Expression property of the DataColumn(规则中列出了用于Select过滤器表达式的规则),您会注意到在DateTime列上创建了一个过滤器,其中包含数字符号(#)之间的日期
DateTimeColumn = #value#
此外,日期应根据格式MM-dd-yyyy进行格式化,因此您的代码应使用此表达式检查日期
Dim strQuery = String.Format("Selected = True AND " & _
"EmailCreateDate = #{0}#", dtEmailCreateDate.ToString("MM-dd-yyyy"))
当然,如果名为EmailCreateDate的列还包含有关时间的信息,那么这仍然可能失败,因此您应该更改格式以包含时间“HH:mm:ss”的输出或更好地使用BETWEEN语法
答案 1 :(得分:0)
我的猜测 - 检查数据库中是否确实存在值。如果是,请检查传递的值是否与存储在DB中的值真正匹配。即使存在毫秒差异,您也无法获得数据。