Office中国论坛/Access中国论坛

标题: 求助:Access2003 窗体遍历控件出现错误 [打印本页]

作者: pangzcn    时间: 2011-11-10 01:01
标题: 求助:Access2003 窗体遍历控件出现错误
本帖最后由 pangzcn 于 2011-11-10 01:04 编辑

我有一个窗体中嵌套了两层子窗体(共三层)
主窗体:FrmTbl_Regist
子窗体:FrmChild_Tbl_Regist_FuzzyQuery
子子窗体:FrmChild_Tbl_Regist

在子子窗体FrmChild_Tbl_Regist中使用 for each 遍历主窗体的控件,发现只能搜寻到部分控件,几乎所有的文本框控件都找不到,请大家看看问题出在啥地方?For Each ctl In Forms![FrmTbl_Regist].Controls
主要看红色部分 详见附件 [attach]47286[/attach]

==============
以下是子子窗体:FrmChild_Tbl_Regist 中的主要代码
Private Sub Form_Current()
On Error GoTo Err_Form_Current
'   将子窗体中的选中字段值付给编辑主窗体字段
     

  Dim ctl As Control
    Dim tmpName As String
     
     'For Each ctl In Forms![FrmTbl_Regist].Section(acDetail).Controls   'or acPageHeader
     For Each ctl In Forms![FrmTbl_Regist].Controls
        With ctl
            Debug.Print .Name
            If .ControlType = acTextBox Then
            Debug.Print .Name

              tmpName = .Name    '存储利用主窗体的控件的名称,方便下一句使用Controls(Name)来引用同名的子窗体控件
              '要动态地用名称引用窗体控件(包括子窗体),可以用Controls(Name)来引用:
                           
               .Value = Me.Controls(tmpName).Value   '把数据窗体的值赋到接收窗体,前提条件是两个窗体的对应控件名称要一致
              Debug.Print ":" & Me.Controls(tmpName).Value

            End If
            
        End With
    Next ctl

Exit_Form_Current:
    Exit Sub
Err_Form_Current:
    Debug.Print Err.Description
    Resume Exit_Form_Current
End Sub
==========================================
结果只是找到了一个文本框其余的近19个文本框找不到!
这是立即窗口的debug.print 结果
矩形31
矩形44
删除记录
添加记录
撤消
上一条记录
修改记录
保存记录
下一条记录
最后一条记录
第一条记录
ID
ID
Microsoft Office Access 不能找到表达式中引用的字段“ID”。



作者: yehf    时间: 2011-11-10 10:10
On Error GoTo Err_Form_Current改成 On Error GoTo Resume Next就可以找到其他文本框,是由于ID那个控件出错,代码跳出了
作者: pangzcn    时间: 2011-11-10 16:51
多谢yehf指点。{:soso_e179:}




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3