使用记录集填充列表框并比较日期

Lau*_*ghy 3 ms-access vba access-vba

我的程序有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
Run Code Online (Sandbox Code Playgroud)

bon*_*igo 10

问题1:

直接从查询填充:

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

使用Recordset对象填充:

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

另一种方法:

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
Run Code Online (Sandbox Code Playgroud)

问题2:

不太清楚.我假设你需要一个parameterized查询.通过将用户的值设置为where, and子句.

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

或者,你可以使用下面的文章来设置parameterquery design view本身.