2013-07-23 3 views
1

У меня есть форма с кнопкой, и когда я ее нажимаю, она открывает другую форму. Когда я закрываю эту вторую форму, мне нужно обновить первую форму.Форматирование формы и обновление данных

Поэтому мне нужно вставить первое имя формы в глобальную переменную, чтобы получить имя формы из второй формы, чтобы обновить первую форму.

Я попытался создать это:

global formname as form 

formname = activeform.name 

, но я получаю сообщение об ошибке говорящее: параметр только для чтения.

+0

На каком языке это? – Blender

+0

Исходный заголовок сказал «доступ», поэтому я пойду с этим, если ОП не исправит его. – Joe

+0

Это MS Access VBA. –

ответ

3

На мероприятии Click на кнопке вы можете передать название формы в качестве OpenArgs объекта DoCmd.OpenForm.

Private Sub Command4_Click() 
    DoCmd.OpenForm "frmStaff", , , , , , Me.Name 

End Sub 

На Close случае второй формы вы можете проверить это значение (строка):

Private Sub Form_Close() 
    If Me.OpenArgs <> "" Then 
     'MsgBox Me.OpenArgs 
     Forms(Me.OpenArgs).Refresh 'or .Requery 
    End If 
End Sub 
3

Почему вы не просто идти в код VBA позади и обновить его с близким к югу ? Я не понимаю, о необходимости глобальной переменной передаются между формами - Вы должны быть в состоянии просто сделать что-то подобное в вашей второй форме:

Private Sub Form_Close() 
    Form_YourFormHere.Refresh 
End Sub 
0

Если вы должны использовать этот подход, попробуйте это модуль первой формы в:

Public formname as Form 

Private Sub Command1_Click() 
    Set formname = Me 
End Sub 

или

Public formname as String 

Private Sub Command1_Click() 
    formname = Me.name 
End Sub 

форма является тип объекта, и может быть назначен только для переменной с помощью инструкции Set, в противном случае VBA будет думать, что вы пытаетесь ASSIG n значение объекта переменной.

Вы сказали, что хотите получить форму имя, однако ваша переменная была типом формы, а не строкой. Первый фрагмент кода достигнет результата: появился, которого вы пытаетесь достичь, а второй достигнет результата, который вы хотели достичь. сказал.

Другой подход, вероятно, был бы лучше и надежнее.

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