访问表单的文本框未显示值

时间:2015-08-17 15:00:04

标签: vba ms-access access-vba

我有一个未绑定的文本框,格式为f_FeuilleBleue。在我的代码中,我给它一个值;

Debug.Print strAHNS '00 0AA 00-100 F TX-01
Form_f_FeuilleBleue.txt_AHNS = strAHNS

如果我在下一行放置停止点,则立即窗口显示

?Form_f_FeuilleBleue.txt_AHNS
 answer: 00 0AA 00-100 F TX-01

但是,我仍然认为它在我的表格中是空白的。没有数据可供阅读!

我该如何解决这个问题?这是屏幕更新的问题吗? (我没有设置它关闭)可能形式更新? (我在BeforeUpdate事件中有一个msgBox,但它没有进入该事件)

编辑 - 附加信息:

当我打开表单时,没有问题。我可以更改表单或代码中的值。但是,只有从菜单样式表单打开表单时才会出现此问题。代码如下。即使在打开子文件完成后,文本框也不会更新(视觉上 - 它确实有价值)。经过测试后,我发现当从另一个子组改变文本框的值时,不会启动Change和Update事件(私有子组件可能是原因?)但是为什么即使在子结束之后它仍然不显示值? / p>

阅读非常非常有用,但我不知道该怎么做:Obtaining textbox value in change event handler

以下是打开表单的代码:

Private Sub Command7_Click()
    Dim strAHNS As String
    Dim strquery As String
    strAHNS = Replace(Mid(Me.Combo_Dessin2, InStr(Me.Combo_Dessin2, "=") + 1), "=", " ")
    strquery = "[ID] = (SELECT Max([ID]) FROM [Feuilles])"
    Debug.Print strquery
    If (PremierAffichage) Then
        DoCmd.OpenForm FormName:="f_feuillebleue", WhereCondition:=strquery
    Else
        MsgBox "Le projet ou dessin n'a pas été trouvé."
    End If
End Sub

Function PremierAffichage() As Boolean
    Dim rsFeuilles As DAO.Recordset
    Dim rsProjets As DAO.Recordset
    Dim strContrat As String
    Dim strProjet As String
    Dim strDessin As String
    Dim sqlquery As String
    Dim strAHNS As String
    Dim strGroupe As String
    Dim strMachine As String

    If IsNull(Me.Combo_Dessin2) Or IsNull(Me.Combo_Projet) Or Me.Combo_Dessin2.Value = "" Then
        PremierAffichage = False
        Exit Function
    End If

    strProjet = Me.Combo_Projet
    strAHNS = Me.Combo_Dessin2
    strMachine = Mid(strAHNS, 4, 3)
    strGroupe = Mid(strAHNS, 8, 2)
    Debug.Print strProjet & " ** " & strAHNS & " ** " & strMachine & " ** " & strGroupe

    sqlquery = "SELECT [AHNS], [Contrat], [No Projet], [EP (groupe)], [Type machine], [Mois] FROM [Feuilles]" 'WHERE [AHNS] = '" & strAHNS & "'"
    Set rsFeuilles = CurrentDb.OpenRecordset(sqlquery)

    sqlquery = "SELECT [Projet HNA] FROM [Projets] WHERE [Projet AHNS] = '" & strProjet & "'"
    Set rsProjets = CurrentDb.OpenRecordset(sqlquery)

    Debug.Print strAHNS    '========================================--------
    Form_f_FeuilleBleue.txt_AHNS = strAHNS ' this works in .value but not showing the result
    DoEvents '                         any changes from there on don't update the value visually
    '                       ==========================================------
    If rsProjets.RecordCount > 0 Then
        rsFeuilles.AddNew
        rsFeuilles![Contrat] = rsProjets![Projet HNA]
        rsFeuilles![No Projet] = strProjet
        rsFeuilles![AHNS] = strAHNS
        rsFeuilles![Mois] = MonthName(Mid(Date, 6, 2))
        If strMachine Like "[A-Z][A-Z][A-Z]" Then
            rsFeuilles![Type machine] = strMachine
            rsFeuilles![EP (groupe)] = strGroupe
        End If
        rsFeuilles.Update

        PremierAffichage = True
    End If

    rsProjets.Close
    Set rsProjets = Nothing

    rsFeuilles.Close
    Set rsFeuilles = Nothing

End Function

1 个答案:

答案 0 :(得分:1)

将您的值分配给活动表单实例(打开表单)而不是表单的类。

假设开放表单的名称是 f_FeuilleBleue ,并且您希望将该值分配给表单的 txt_AHNS 控件...

'Form_f_FeuilleBleue.txt_AHNS = strAHNS
Forms!f_FeuilleBleue!txt_AHNS = strAHNS

引用表单的名称作为Forms集合的成员。