4

私のプログラムには、ユーザーが入力するタイトル、開始日、終了日の3つのフィールドがあります。「filteredResults」と呼ばれるリストボックスに、ユーザーが入力したタイルと等しいレコード、または日付の範囲に入るレコードを含む結果を入力したいと考えています。

私は知っているかもしれません:

1) クエリから取得したレコードセットをリストボックスに入力するにはどうすればよいですか?

2) クエリ内の日付を比較するにはどうすればよいですか?

どうもありがとう!

Private Sub FilterProj_Click()
Dim title As String, startDate As Date, endDate As Date
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM Project WHERE  ORDER BY [ProjectId] DESC")
filteredResults.Recordset = rs
4

2 に答える 2

11

質問 1 の場合:

クエリから直接入力:

Me.mylistbox.rowsource = _
  db.OpenRecordset("SELECT titles FROM Project _
           WHERE title = '" & parameter & "' ORDER BY [ProjectId] DESC")

Recordset オブジェクトを使用して設定します。

If (rs.RecordCount <> 0) Then 
   Do While Not rs.EOF
      mylistbox.Items.Add(rs.Fields(0).Value)
      rs.MoveNext()
   Loop
End IF

別の方法:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim strSQL As String

strSQL = "SELECT titles from Projects _
       WHERE title = '" & parameter & "' ORDER BY [ProjectId] DESC"

Set db = CurrentDb
Set qdf = CurrentDb.CreateQueryDef("", strSQL)
qdf.Connect = strConn

Set rs = qdf.OpenRecordset()

Set Me.mylistbox.Recordset = rs

質問2:

あまり明確ではありません。parameterizedクエリが必要だと思います。ユーザーの値をwhere, and句に設定する。

  db.OpenRecordset("SELECT titles FROM Project _ 
      WHERE title = '" & parameter & "' ORDER BY [ProjectId] DESC")

または、次の記事を使用してparameterquery design view自体を設定することもできます。

于 2012-12-30T08:53:38.773 に答える
3

リストボックスの行ソースプロパティを、filteredResultsこれと同様の戦略を使用するクエリに設定します。

SELECT p.ProjectId, p.title, p.date_field
FROM [Project] AS p
WHERE
    p.title = Forms![YourForm]![txtTitle]
    OR
        (
                p.date_field >= Forms![YourForm]![txtStartDate]
            AND p.date_field <= Forms![YourForm]![txtEndDate]
        )
ORDER BY p.ProjectId DESC

filteredResultsユーザーが送信したタイトル、開始日、および/または終了日の変更を反映するようにの内容を更新する場合はいつでも、リストボックスを再クエリできます。

Me!filteredResults.Requery

コマンドボタンから、またはテキストボックスの更新後のイベントから再クエリをトリガーできます。

Projectテーブルには、という名前のテキストフィールドと。titleという名前の日付/時刻フィールドが含まれていると仮定しましdate_fieldた。txtTitle, txtStartDate, txtEndDateテキストボックスの名前()を自分で作成しました。およびのFormatプロパティを「GeneralDate」に設定しtxtStartDateますtxtEndDate。フォームの名前をに置き換えますYourForm

于 2012-12-30T16:46:24.193 に答える