填充文本框的动态记录集
问题描述:
从日期列表中,我需要选择不同的日期,添加365天,然后填充每个可能日期的文本框。填充文本框的动态记录集
我想我需要通过一个记录集循环,我已经得到了这么多,但我不知道下一步是什么。
Private Sub Form_Load()
Dim db As Database
Dim rs As Recordset
Dim i As Long
Set db = CurrentDb
Set rs = db.OpenRecordset("qryListBox")
If rs.EOF And rs.BOF Then
Else
Do While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
' get list of dates
' if there is more than one date, populate subsequent boxes
me.txtAnnv1.Value = DateAdd('d',365,[sdrdate])
Next i
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
如果我有:
+------+-----------+
| NAME | SDRDATE |
+------+-----------+
| Jane | 02/02/12 |
| Jane | 03/03/12 |
| Jane | 04/04/14 |
| Jane | 04/04/14 |
+------+-----------+
我希望看到:
txtAnnv1 = 02/03/13
txtAnnv2 = 03/04/13
txtAnnv3 = 04/05/15
答
我相信下面将让你非常接近。这假设你的文本框已经存在。它将首先隐藏所有以名称“txtAnnv”开头的文本框并清除它们的值。然后,它会将记录集中的值分配给每个文本框,并随着时间的推移取消隐藏。
Private Sub Form_Load()
Dim db As Database
Dim rs As Recordset
Dim i As Long
Dim ctrl as Control
'Assuming that text boxes are already created and are named txtAnnv1, txtAnnv2, etc..
'Empty and hide all of the txtAnnv* text boxes
For each ctrl in me.Controls
if left(ctrl.name,7) = "txtAnnv" then
ctrl.visible = false
ctrl.value = ""
end if
Next ctrl
Set db = CurrentDb
Set rs = db.OpenRecordset("qryListBox")
If rs.EOF And rs.BOF Then
Else
i = 1
Do While Not rs.EOF
'Set the value of each textbox to 1 year from the date in the recordset
me.controls("txtAnnv" & i).value = DateAdd('d', 365, rs.Fields(1).value)
'unhide textbox
me.controls("txtAnnv" & i).visible = true
'iterate the counter that steps up to the next textbox
i = i + 1
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
+0
它的工作原理,谢谢! – turkaffe 2014-10-02 12:28:25
你为什么要循环查询结果中的字段('For i = 0 To rs.Fields.Count - 1')?是不是只有一个字段包含日期? – JNevill 2014-10-01 20:00:30
是的,日期只有一个字段。这是我从头开始编写(或试图)的第一个记录集循环。那么,那部分是不需要的呢? – turkaffe 2014-10-01 20:06:27
是的,这是不需要的。你简单的需要遍历记录集,你现在正在做这件事。文本框是否已经存在于你的表单上,你的想法是动态添加它们吗? – JNevill 2014-10-01 20:15:54