У меня есть несвязанное текстовое поле в форме f_FeuilleBleue. В моем коде я даю ему определенную ценность;Текстовое поле Access Form, не отображающее значение
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
Однако, я все еще вижу его как пробел в моей форме. Нет данных для чтения!
Как исправить это? Это проблема с обновлением экрана? (У меня нет ничего, чтобы отключить его) Может быть, обновление формы? (У меня есть MsgBox в случае BeforeUpdate, но это не идет в этом случае)
EDIT - дополнительная информация:
Когда я открываю форму, нет никаких проблем. Я могу изменить значение в форме или по коду. Однако проблема возникает, когда форма открывается из формы в стиле меню. Код ниже. Даже после того, как заканчивается открытие, текстовое поле не будет обновляться (визуально - оно в значении). После тестирования я вижу, что событие «Изменение» и «Обновление» НЕ запускаются при изменении значения текстового поля из другого субфайла (могут быть причиной закрытых подсетей?) Но почему он продолжает не показывать значения даже после окончания?
Может быть очень, очень актуальна для чтения, но я не уверен, что сделать из него: 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
Это просто отладка? Попробуйте DoEvents после строки, где вы ее установили. – MatthewD
Это как в непосредственном окне, так и в действительном коде. DoEvents ничего не изменили (я только что написал DoEvents на следующей строке, это то, что вы хотели попробовать?) –
Да. Я видел, как он решает некоторые нечетные проблемы, подобные этому. Is Form_f_FeuilleВведите имя своего текстового поля? Можете ли вы установить его Form_f_FeuilleBleue.text? – MatthewD