powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / вызов процедуры из любого места
11 сообщений из 11, страница 1 из 1
вызов процедуры из любого места
    #39630945
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
У меня есть процедура, которая рассчитывает долг клиента. У неё громоздкий код. Она часто используется. Если её прописывать на каждую кнопку в формах, то она занимает много места. Я слышал, что её можно написать один раз, сохранить как паблик и обращаться к ней из любой формы. Как это сделать?
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39630952
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создать новый модуль.
В нём прописать процедуру/функцию.
Обращаться к ней из модуля формы.
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39630954
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TauriЯ слышал, что её можно написать один раз, сохранить как паблик и обращаться к ней из любой формы.
код с кнопки можно сохранить как общий, но придется исправлять некоторые имена

например:
me.summa известна в форме, но неизвестна в общем модуле
аналогично и другие переменные
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39630971
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Давайте на примере. Допустим есть процедура:
Private Sub Кнопка7_Click()
Dim dolg As String
if .......... Then
dolg = "переплата...."
elseif.............Then
dolg = "аванс......."
elseif.............Then
dolg = "долг..."
и т.д.
End if
End Sub
Как сделать эту процедуру общедоступной? И как к ней обращаться из любой формы (напр. из формы1)?
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39630975
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

видимо dolg -это имя поля на форме
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39630977
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

просмотрела --у вас это просто переменная и не понятно куда она заносится
в какое поле или контрол
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39630981
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

значение переменной dolg будет присваиваться разным полям в разных формах или использоваться для выполнения других процедур в разных формах.
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39630990
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

общий модул
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public function gf_dolg(параметры)
Dim dolg As String
if .......... Then
dolg = "переплата...."
elseif.............Then
dolg = "аванс......."
elseif.............Then
dolg = "долг..."
и т.д.
End if 
gf_dolg=dolg
end function



в форме для некого поля

Код: vbnet
1.
me.pole=gf_dolg(параметры   )
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39631006
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

А какие параметры указывать в функции gf_dolg(параметры)? Если, например, переменная dolg считается так:

If DLookup("[долг]", "тдолг", "[klient_id]=" & Me![ПолеСоСписком17]) > 0 Then
dolg = "долг " & DLookup("[долг]", "тдолг", "[klient_id]=" & Me![ПолеСоСписком17]) & " руб."
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39631024
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вопрос в том, чтобы на каждую кнопку не создавать по своему обработчику, а вызывать некую функцию, то просто на событии кнопки вместо автоматически генерируемого текста [Event Procedure] можно прописать вызов любой функции:
Код: vbnet
1.
=gf_dolg(параметры)


В самой функции можно определить, в какой именно форме нажали кнопку:
Код: vbnet
1.
2.
Dim frmCurrentForm As Form
Set frmCurrentForm = Screen.ActiveForm


И какую именно кнопку нажали:
Код: vbnet
1.
2.
Dim ctl As Control
Set ctl = frmCurrentForm.ActiveControl


Через параметр можно передать что-то специфичное.

Только процедура должна быть именно функцией, не Sub
...
Рейтинг: 0 / 0
вызов процедуры из любого места
    #39631027
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ясно. спасибо.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / вызов процедуры из любого места
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]