2015-08-17 7 views
2

У меня есть несвязанное текстовое поле в форме 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 
+0

Это просто отладка? Попробуйте DoEvents после строки, где вы ее установили. – MatthewD

+0

Это как в непосредственном окне, так и в действительном коде. DoEvents ничего не изменили (я только что написал DoEvents на следующей строке, это то, что вы хотели попробовать?) –

+0

Да. Я видел, как он решает некоторые нечетные проблемы, подобные этому. Is Form_f_FeuilleВведите имя своего текстового поля? Можете ли вы установить его Form_f_FeuilleBleue.text? – MatthewD

ответ

1

назначьте значение в экземпляр активной формы (открытая форма) вместо класса формы.

Так предполагая имя открытой формы является f_FeuilleBleue и вы хотите присвоить это значение txt_AHNS формы в управления ...

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

Reference форма его имя в качестве члена коллекция Forms.

+0

Я не знал, что это можно сделать. Есть ли другая ситуация, когда предпочтение отдается противоположному? –

+0

Я думаю, вы бы использовали * Form_f_FeuilleBleue *, когда на самом деле хотите работать с самим классом. Но я действительно не использую это, поэтому не могу сказать ничего полезного. – HansUp

Смежные вопросы