【发布时间】:2014-05-12 21:44:12
【问题描述】:
我有一个包含多个数据输入框(文本、组合、复选框和选项组)的表单。数据输入框的名称与将要附加/提取数据的相应表的字段名称相匹配。
在此示例中,当用户从组合框中选择一个值时,将执行一个 sql 来收集符合条件的数据并自动填充表单中的一堆字段。我的真实表单中有很多字段,我将在整个过程中运行类似的功能(例如,将数据写入不同的表(table3)),我想创建一个循环来执行字段匹配,而不是列出每个表单数据输入框等于它对应的记录源。
使用这个测试示例,我怎样才能将我的脚本改为循环:
Private Sub txt_ID_AfterUpdate()
Dim db As Database
Dim rs As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT Table1.ID, Table1.Color, Table1.Make, Table1.Model, Table2.FName, Table2.LName FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID WHERE"
strSQL = strSQL & "[Table1].ID = """ & Me.txt_ID & """"
Set rs = Currentdb.OpenRecordset(strSQL, DB_OPEN_DYNASET)
Me!ID = rs!ID
Me!Color = rs!Color
Me!Make = rs!Make
Me!Model = rs!Model
Me!FName = rs!FName
Me!LName = rs!LName
rs.Close
Set rs = Nothing
我希望它做这样的事情:
Private Sub txt_ID_AfterUpdate()
Dim db As Database
Dim rs As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT Table1.ID, Table1.Color, Table1.Make, Table1.Model, Table2.FName, Table2.LName FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID WHERE"
strSQL = strSQL & "[Table1].ID = """ & Me.txt_ID & """"
Set rs = Currentdb.OpenRecordset(strSQL, DB_OPEN_DYNASET)
For each Name in FormA
Me!<Name> = rs!<Name>
Next Name
rs.Close
Set rs = Nothing
非常感谢。
最终的脚本看起来像这样。 Simon1979 脚本也有效。
Private Sub txt_ID_AfterUpdate()
Dim db As Database
Dim rs As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT Table1.ID, Table1.Color, Table1.Make, Table1.Model, Table2.FName, Table2.LName FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID WHERE"
strSQL = strSQL & "[Table1].ID = """ & Me.txt_ID & """"
Set rs = Currentdb.OpenRecordset(strSQL, DB_OPEN_DYNASET)
rs.MoveFirst
For Each fld In rs.Fields
Me.Controls(fld.Name) = fld
Next fld
rs.Close
Set rs = Nothing
End Sub
【问题讨论】:
标签: ms-access vba ms-access-2007