我有一个未绑定的文本框,格式为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
答案 0 :(得分:1)
将您的值分配给活动表单实例(打开表单)而不是表单的类。
假设开放表单的名称是 f_FeuilleBleue ,并且您希望将该值分配给表单的 txt_AHNS 控件...
'Form_f_FeuilleBleue.txt_AHNS = strAHNS
Forms!f_FeuilleBleue!txt_AHNS = strAHNS
引用表单的名称作为Forms
集合的成员。