使用ADO访问多个文本框中的记录集

时间:2016-01-28 14:58:45

标签: vba ms-access access-vba

我试图用一个包含31天(从1月1日到1月31日)的单个记录集填充我的31个文本框。

虽然我很清楚如何将查询的每个字段分配给相关的文本框,但是根本不清楚如何将查询的单个字段中包含的多个值分配给多个文本框。

例如,这是我的起始代码:

Private Sub FillDates()

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
ssql = "SELECT PricingDate From RoomCalendar WHERE PricingDate BETWEEN #01/01/2016# AND #31/01/2016# AND RateRoomCombinationId=17"
rst.Open ssql, cnn
Do Until rst.EOF = True

'txt1.Value = rst.Fields!PricingDate 
'txt2.Value = rst.Fields!PricingDate 
'txt3.Value = rst.Fields!PricingDate 

rst.MoveNext
Loop
End Sub

提前感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您可以使用:

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim Record As Integer
Dim Records As Integer

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
ssql = "SELECT PricingDate From RoomCalendar WHERE PricingDate BETWEEN #2016/01/01# AND #2016/01/31# AND RateRoomCombinationId=17"

rst.Open ssql, CNN
rst.MoveLast
rst.MoveFirst
Records = rst.RecordCount
For Record = 1 To Records
    Me("txt" & CStr(Record)).Value = rst.Fields!PricingDate.Value 
    rst.MoveNext
Next
End Sub

请注意,日期表达式的格式。

答案 1 :(得分:0)

我设法自己解决了这个问题。最终代码是:

Private Function FillDates()
Dim cnn As ADODB.Connection
Dim ssql As String
Dim rst As ADODB.Recordset
Set cnn = CurrentProject.Connection
Dim i As Integer
Dim Records As Integer
ssql = "SELECT PricingDate From RoomCalendar WHERE PricingDate BETWEEN #2016/01/01# AND #2016/01/31# AND RateRoomCombinationId=17"
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open ssql, cnn
Records = rst.RecordCount
For i = 1 To Records
    Me("Text" & i).Value = rst.Fields!PricingDate.Value
    rst.MoveNext
Next i
   '' Clean up
    rst.Close
    Set rst = Nothing
End Function

感谢您的帮助