1

全て ...

DateTimePickers から渡された 2 つの日付の間にあるレコードを表示する必要があります。

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
4

1 に答える 1

3

あなたの問題は、渡された日付パラメーターをクエリに解析する方法にあるようで、おそらく 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 日までの日付を表す文字列式です。ただし、日付は、その範囲内の日付、時刻、または日付と時刻の両方を表す任意の式にすることもできます。 .

これら 2 つの関数が成功するかどうかは、入力の日付形式とシステム ロケールにも依存する場合があります。

于 2013-01-29T03:38:12.023 に答える