如何在vb.net中获取两个日期之间的记录?
全部 我需要显示从DateTimePicker传入的两个日期之间的记录 我得到的记录不在我从vb.net指定的日期之间 请检查下面显示的代码 代码如下:如何在vb.net中获取两个日期之间的记录?,vb.net,ms-access,Vb.net,Ms Access,全部 我需要显示从DateTimePicker传入的两个日期之间的记录 我得到的记录不在我从vb.net指定的日期之间 请检查下面显示的代码 代码如下: Private Sub btn_Show_Inquiry_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Show_Inquiry.Click report_viewer_form.Report_viewer_CrystalRep
Private Sub btn_Show_Inquiry_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Show_Inquiry.Click
report_viewer_form.Report_viewer_CrystalReportViewer1.ReportSource = Nothing
report_viewer_form.Report_viewer_CrystalReportViewer1.Refresh()
str1 = "SELECT * FROM Inquiry_Details WHERE Inquiry_Date>=#" & dtp_inq_from.Text & "# AND Inquiry_Date<=#" & dtp_inq_to.Text & "#"
If dtp_inq_from.Text > dtp_inq_to.Text Then
MessageBox.Show("FROM_DATE Must Be Less Then TO_DATE.", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If
If cn.State <> ConnectionState.Open Then
cn.Open()
End If
da = New OleDbDataAdapter(str1, cn)
report_dataset = New DataSet
da.Fill(report_dataset, "table2")
If MsgBox("Do You Want to Print Report ?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
report_viewer_form.Show()
Dim cr As New ReportDocument
cr = New Inquiry_CrystalReport
cr.SetDataSource(report_dataset.Tables("table2"))
report_viewer_form.Report_viewer_CrystalReportViewer1.ReportSource = cr
End If
End Sub
您的问题似乎在于解析传递给查询的日期参数的方式,并且它们的格式可能不是Access可以识别为有效日期类型的格式。尝试使用CDate函数,让Access正确地将输入值解析为其内部日期类型。它将接受任何有效的日期表达式: 任何可以解释为日期的表达式,包括日期 文字、看起来像日期的数字、看起来像日期的字符串、, 以及从函数返回的日期。日期表达式仅限于 数字或字符串,任意组合,可表示从 100年1月1日至9999年12月31日 因此,您的代码可能如下所示:
str1 = "SELECT * FROM Inquiry_Details WHERE Inquiry_Date>=CDate('" &
dtp_inq_from.Text & "') AND Inquiry_Date<=CDate('" &
dtp_inq_to.Text & "')"
如果CDate不剪切它,您可能想尝试的另一个函数是DateValue:
所需的日期参数通常是字符串表达式
表示从100年1月1日到9999年12月31日的日期。
但是,date也可以是任何表示日期的表达式
时间,或日期和时间,在该范围内
这两个函数的成功还可能取决于输入日期格式和系统区域设置 什么数据库平台?看起来像Access syntax.BTW:此代码中存在严重的SQL注入安全缺陷。为什么您只在一些语句上使用参数化SQL?您可以将这段代码缩小到它正在运行并显示问题的路径吗。这一切都很难克服。您是否尝试过使用调试器查看正在运行的实际查询?我有一个vb.net表单来传递日期,我有一个crystal报告来显示itSo上的输出,以及执行哪个版本的str1?