全部......
我需要显示从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
答案 0 :(得分:3)
您的问题似乎与解析传递日期参数到查询的方式有关,它们可能不是Access会识别为有效日期类型的格式。尝试使用 CDate()
函数让Access正确地将输入值解析为其内部日期类型。它将接受任何有效的date expression
:
任何可以解释为日期的表达式,包括日期 文字,看起来像日期的数字,看起来像日期的字符串, 和从函数返回的日期。日期表达式仅限于 任何组合中可以表示日期的数字或字符串 1月1日,100日 - 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()
:
所需的日期参数通常是字符串表达式 表示从1999年1月1日到9999年12月31日的日期。 但是,date也可以是任何可以表示日期的表达式,a 在该范围内的时间,或者日期和时间。
这两个函数的成功可能还取决于输入日期格式和系统区域设置。