请帮助我了解正在发生的事情
我有一个可视化的基本应用程序,可以从访问数据库中返回数据 我想查询带有此格式的日期的数据库字段" 01/12 / 2015" (12月1日) 这样做我有一个datetimepicker
我的数据库中有此记录 - 2015年12月1日
当我更新我的代码以将datetimepicker值包含在查询中时,它不会返回任何内容,如果我在2015年12月1日放入它找到2015年12月1日的记录
我的查询如下:
dim dd as date
dd = datetimepicker.value
qrytxt = "select * from table where [Date] = #" + dd + "#"
如果我把一个msgbox返回qrytxt就返回
select * from table where [Date] = #01/12/2015#
但它仍然会检查db ...
的错误日期我也有这个Imports System.Globalization,我读了一些关于CultureInfo但我无法在我的查询中使用它。
我还需要包含或做什么吗?
答案 0 :(得分:1)
为什么会这样?
它正在发生,因为日期文字含糊不清,与Access数据库引擎假定的格式不符合模糊日期文字。
无论如何,将日期文字与动态SQL一起使用是错误的方法。 DateTimePicker返回一个真正的System.DateTime
值(总是明确的),因此您应该将其用作参数化查询的一部分:
Using cmd As New OdbcCommand("SELECT COUNT(*) AS n FROM Clients WHERE DOB = ?", conn)
cmd.Parameters.Add("?", OdbcType.DateTime).Value = DateTimePicker1.Value.Date
MessageBox.Show(cmd.ExecuteScalar)
End Using
答案 1 :(得分:0)
只需在日期值上强制使用格式即可为日期创建字符串表达式:
Dim dd As Date
dd = datetimepicker.value
qrytxt = "select * from table where [Date] = #" + dd.ToString("yyyy'/'MM'/'dd") + "#"