All ...
我需要显示从 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 将识别为有效日期类型的格式。尝试用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 日的日期。
但是,日期也可以是任何可以表示日期、日期的表达式
该范围内的时间或日期和时间。
这两个函数的成功还可能取决于输入日期格式和系统区域设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)