Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Soft17
1 / 1 / 1
Регистрация: 15.01.2017
Сообщений: 386
1

Как прописать путь к форме через переменную?

02.02.2019, 14:15. Просмотров 348. Ответов 3

Имеется код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Кнопка0_Click()
        Dim nameField  As String
        nameField = "Поле0"
        
        Dim nameForm  As String
        nameForm = "Form1"
        
        ' DoCmd.OpenForm "Form1"
        DoCmd.OpenForm nameForm
        
        Forms![Form1](nameField).Text = "Сообщение для `Form1`"
        
End Sub

В данном коде можно обратиться к полю формы через переменную "nameField".
Строка
Visual Basic
1
 Forms![Form1](nameField).Text = "Сообщение для `Form1`"
Вопрос.
Как прописать путь к форме через переменную?
Т.е. заменить "Forms![Form1]" на переменную.
Например что-то вроде:
Visual Basic
1
2
3
4
     
       Dim nameForm  As String
        nameForm = "Form1"
        Forms![nameForm](nameField).Text = "Сообщение для `Form1`"
Или что-то вроде:
Visual Basic
1
2
3
4
     
       Dim nameForm  As String
        nameForm = "Form1"
        Forms(nameForm)(nameField).Text = "Сообщение для `Form1`"
Или определить активную форму и использовать её:
Visual Basic
1
2
3
4
5
Dim FormActiv As Form            
Set FormActiv = Screen.ActiveForm
nameForm.Name = FormActiv.Name
                      
Forms![FormActiv](nameField).Text = "Сообщение для `Form1`"

Как сделать это правильно?
Суть: прописал в одном месте "имя формы" и используешь это в различных процедурах или в нескольких местах процедуры.
0
Миниатюры
Как прописать путь к форме через переменную?  
Вложения
Тип файла: zip ПутьКФорме.zip (22.1 Кб, 2 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2019, 14:15
Ответы с готовыми решениями:

Как задасть значение Textbox в переменную, а затем эту переменную вывести в другой форме
Приветствую Есть форма с полем, где есть значение, как значение этого поле перенести в переменную,...

Как прописать путь для связной таблицы?
Есть проблема. Имеется Excel-таблица из SAP. На ее основе создаем связную таблицу, вроде бы все...

Как ввести переменную в форме а не поле таблицы
Я писал всегда в MS FoxPro так там все ясно - рисуешь поле, в свойствах пишешь имя переменной. А в...

Возможно ли на VBA прописать путь экспорта файла?
Доброго всем дня. У меня в форме по нажатию кнопки, экспортируется отчет в файл вот так:...

Автоматически прописать путь к папке в переменную Path
Задача: при запуске батник (из условной папки RKwin) должен прописать путь к папке win2...

3
Aleator
85 / 75 / 12
Регистрация: 04.05.2011
Сообщений: 1,294
02.02.2019, 16:29 2
Например, так:
Visual Basic
1
Set rst = Forms![frmEvents].Controls(sFormName).Form.Recordset
в этом коде я присвоил рекордсет субформы sFormName

Для формы соответственно будет:
Visual Basic
1
Set rst = Forms(sFormName).Form.Recordset
1
Soft17
1 / 1 / 1
Регистрация: 15.01.2017
Сообщений: 386
02.02.2019, 17:27  [ТС] 3
Aleator,
Не могу понять...

Если вам несложно, не могли бы вы на моём примере показать как это будет выглядеть....
0
MrShin
254 / 222 / 57
Регистрация: 18.06.2015
Сообщений: 475
06.02.2019, 09:01 4
Если у формы нет вложений, то можете просто писать
Visual Basic
1
2
nameForm = "Form1"
Forms(nameForm).nameField.Text = "Сообщение для `Form1`"
Если мне нужно обращаться к формам с подпормами, используя текстовые "адреса". я использую эти 2 функции. Причем вложенность подформ может быть любой. Одна и та же форма может использоваться на разных уровнях вложенности или самостоятельно. Текстовый "адрес" удобен тем, что его можно передавать в качестве аргумента в запросах, например.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Public Function GetFormByPath(strFormPath As String) As Form
    'returns form variable of last subform in path by form path like "frm_Main>frm_SubFormControl>frm_SubSubFormControl"
    Dim astrFrm() As String
    Dim i As Long
    Dim frm As Form
 
    On Error GoTo ErrorHandler
 
    astrFrm = Split(strFormPath, ">")
 
    If UBound(astrFrm) < 0 Then
        GoTo ExitHere
    End If
    Set frm = Forms(astrFrm(0))
 
    For i = 1 To UBound(astrFrm)
        Set frm = frm.Controls(astrFrm(i)).Form
    Next
 
    Set GetFormByPath = frm
ExitHere:
    On Error Resume Next
    Exit Function
ErrorHandler:
    Resume ExitHere
End Function
 
Public Function GetFormPath(frmForm As Form) As String
    'returns form form path like "frm_Main>frm_SubFormControl>frm_SubSubFormControl"
    Dim strRes
    Dim frm As Form
 
    On Error GoTo ErrorHandler
 
    Set frm = frmForm
    Do
        If IsFormStandalone(frm) Then
            strRes = frm.Name & IIf(strRes = "", "", ">" & strRes)
            Exit Do
        Else
            strRes = frm.Parent.ActiveControl.Name & IIf(strRes = "", "", ">" & strRes)
            Set frm = frm.Parent
        End If
    Loop While True
 
ExitHere:
    On Error Resume Next
    GetFormPath = strRes
    Exit Function
ErrorHandler:
    MsgBox "Error " & Err.Number & " (" & Err.Description & "), Line " & Erl & " in procedure GetFormPath of bas_CommonFunctions", vbExclamation + vbMsgBoxHelpButton, "Error " & Now(), Err.HelpFile, Err.HelpContext
    Resume ExitHere
End Function
Принцип работы и использования, надеюсь, понятен.
Типа
Visual Basic
1
2
nameForm = "Form1>sfrmMySubForm"
GetFormByPath(nameForm).nameField.Text = "Сообщение для `Form1`"
1
06.02.2019, 09:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2019, 09:01

Как прописать значение в поле на форме , клона через KeepNewFormClone
привет , всем такой вопрос , на форме добавил поле3 в котором хочу видеть значение 100 через клон...

Путь к таблице через переменную. Как реализовать?
Приветствую всех! Подскажите, пожалуйста, есть ли возможность в T-SQL в переменной указать путь,...

Прописать путь к ПК, подключенному по сети через .bat
Добрый день, столкнулся с проблемой мне необходимо что бы bat-файл копировал данные с одного ПК на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru