如何在 vb.net 中获取两个日期之间的记录?
Posted
技术标签:
【中文标题】如何在 vb.net 中获取两个日期之间的记录?【英文标题】:How to get records between two dates in vb.net? 【发布时间】:2013-01-28 04:13:33 【问题描述】:所有...
我需要显示从 DateTimePickers 传入的两个日期之间的记录。
我得到的记录不在我从 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_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 语法。 顺便说一句:您在此代码中存在严重的 SQL 注入安全漏洞。为什么您只对部分语句使用参数化 SQL? 您能否将此代码缩小到它正在运行并显示问题的路径。很难渡过这一切。您是否尝试过使用调试器逐步查看正在运行的实际查询? 我有一个 vb.net 表单来传递日期,我有一个水晶报告来显示输出 那么执行的是哪个版本的 str1? 【参考方案1】:您的问题似乎在于您解析传递给查询的日期参数的方式,并且它们可能不是 Access 将识别为有效日期类型的格式。尝试使用 CDate()
函数让 Access 将您的输入值正确解析为其内部日期类型。它将接受任何有效的date expression
:
任何可以解释为日期的表达式,包括日期 文字,看起来像日期的数字,看起来像日期的字符串, 和从函数返回的日期。日期表达式仅限于 任意组合的数字或字符串,可以表示从 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 日的日期。 但是,日期也可以是任何可以表示日期的表达式, 该范围内的时间或日期和时间。
这两个函数的成功可能还取决于输入日期格式和系统区域设置。
【讨论】:
以上是关于如何在 vb.net 中获取两个日期之间的记录?的主要内容,如果未能解决你的问题,请参考以下文章