Vb.net 使用日期参数查询数据库

Vb.net 使用日期参数查询数据库,vb.net,oledb,oledbparameter,Vb.net,Oledb,Oledbparameter,我不熟悉Visual Basic和Stackoverflow。我正在从数据库查询某些字段,但收到一个错误。这是我的密码: Dim fifdate As Date = Now() fifdate.AddDays(-15) db.AddParam("collected", "N") db.AddParam("printed", "Y") db.AddParam("sent", "Y") db.AddParam("date", fifdate) Dim query As String = "

我不熟悉Visual Basic和Stackoverflow。我正在从数据库查询某些字段,但收到一个错误。这是我的密码:

Dim fifdate As Date = Now()
fifdate.AddDays(-15)

db.AddParam("collected", "N")
db.AddParam("printed", "Y")
db.AddParam("sent", "Y")
db.AddParam("date", fifdate)




Dim query As String = "Select * from badcheck where fldcollected = 
@collected And fldprinted = @printed And fldsentda = @sent "

'And fldsentdate > @date

db.ExcecuteQuery(query)

CheckedListBox1.DataSource = db.DBDT

如果我将注释掉的部分添加到查询中,会出现错误“条件表达式中的数据类型不匹配”,但如果没有它,查询将非常正常。我确信fldsentdate被设置为数据库中的一个日期。有没有关于如何解决这个问题的建议

我解决了这个问题。我将fifdate变量完全取出,并将参数代码更改为:

db.AddParam("date". date.today.AddDays(-15))

fifdate出了点问题,我相信可能是因为现在()。我尝试直接在查询中使用fifdate,但收到了相同的错误

我解决了这个问题。我将fifdate变量完全取出,并将参数代码更改为:

db.AddParam("date". date.today.AddDays(-15))

fifdate出了点问题,我相信可能是因为现在()。我尝试直接在查询中使用fifdate,但收到了相同的错误

db.AddParam(“@collected”,“N”)
,yada-yada-yada。不要将布尔列设为Y-N字符串。感谢您的见解。我正在使用一个已经创建的数据库。出于某种原因,创建者将这些字段设置为字符而不是布尔值。当您将注释部分更改为“
和fldsentdate>#@date”
时会发生什么情况Microsoft Access更喜欢将日期括起来values@JimmySmith使用参数时不使用#符号。引擎将为您解决这个问题。问题可能出在
db
中(可能是SQL“helper”?)和/或AddParam方法。另外,不要在标题中添加标签,这是标签的作用,因为您是新的。
db.AddParam(“@collected”,“N”)
,yada-yada-yada。不要将布尔列设为Y-N字符串。感谢您的见解。我正在使用一个已经创建的数据库。出于某种原因,创建者将这些字段设置为字符而不是布尔值。当您将注释部分更改为“
和fldsentdate>#@date”
时会发生什么情况Microsoft Access更喜欢将日期括起来values@JimmySmith使用参数时不使用#符号。引擎将为您解决这个问题。问题可能出在
db
中(可能是SQL“helper”?)和/或AddParam方法。另外,不要在标题中添加标签,这就是标签的作用,因为你是新来的。哈哈,这是完全不同的。我现在在DateAdd和使用方面遇到了问题。我相信问题在于日期的时间段更精确到毫秒/纳秒,并且改变了日期的格式(与Access习惯的格式相比),我也在想同样的事情。它不是只给变量一个日期,而是给它一个日期和时间,而我的数据库变量只是一个日期;数学运算不会更改变量,而是返回一个带有更改的新变量。正确的代码应该是
fifdate=fifdate.AddDays(-15)
,或者干脆是
fifdate=DateTime.Now.AddDays(-15)
。你可能也想用
.Date
A-ha来打发时间,这完全是另一回事。我现在在DateAdd和使用方面遇到了问题。我相信问题在于日期的时间段更精确到毫秒/纳秒,并且改变了日期的格式(与Access习惯的格式相比),我也在想同样的事情。它不是只给变量一个日期,而是给它一个日期和时间,而我的数据库变量只是一个日期;数学运算不会更改变量,而是返回一个带有更改的新变量。正确的代码应该是
fifdate=fifdate.AddDays(-15)
,或者干脆是
fifdate=DateTime.Now.AddDays(-15)
。您可能也想使用
.Date