powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Развернуть макрос в код
14 сообщений из 14, страница 1 из 1
Развернуть макрос в код
    #39795917
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Досталась мне база, где всё сделано на макросах. Потихоньку отдельные места, где необходимо, перевожу на код. И вот столкнулся с такой ситуацией.
Вызов макроса
Код: vbnet
1.
       DoCmd.RunMacro "ЗаменитьНеактивныхСпонсоров", 20, ""

ну сам макрос я в код развернул легко. Там был последовательный вызов 3-х запросов. А вот как заменить вызов макроса на вызов процедуры?

Первый параметр - имя макроса, всё понятно
второй параметр (необязательный, variant) - RepeatCount, числовое выражение, которое оценивается как целое число, которое является числом выполнений макроса. Ну тут можно организовать цикл вызова процедуры
третий параметр (необязательный, variant) - числовое выражение, которое оценивается при каждом запуске макроса. Когда он оценивается как False (0), макрос останавливается. И как это обрабатывать? У меня ("")




-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39795996
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,

Может мастер преобразований макросов в процедуру знает.

Правда макрос должен быть сохранен отдельно, а не прям прописан у элемента в форме.
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796002
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossА вот как заменить вызов макроса на вызов процедуры?
переведите процедуру в функцию
вместо вызова макроса напишите =myFunction
или используйте событие,тогда вызывайте или процедурой call myProcedure(параметры)

или все же функцию codeReturn=myFunction(параметры)
codeReturn=myFunction(без параметров)
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796006
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

А если дочитать вопрос Joss до конца?
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796015
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛапухJoss,

Может мастер преобразований макросов в процедуру знает.

Правда макрос должен быть сохранен отдельно, а не прям прописан у элемента в форме.Так именно мастер преобразования так и перевёл.
Код: vbnet
1.
   DoCmd.RunMacro "ЗаменитьНеактивныхСпонсоров", 20, ""

В исходнике был запуск макроса из макроса.
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796017
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,
А почему прям в обработке события не добавить код выполняющий те же действия,что и запрос
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796018
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
вернее макрос
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796080
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jossмакрос я в код развернул легкоТо есть у тебя теперь вместо макроса "ЗаменитьНеактивныхСпонсоров" имеется нечто вроде Public Sub ЗаменитьНеактивныхСпонсоров(param1 As Integer, Param2 As String) ? ну тогда в чём сложности? заменяешь DoCmd.RunMacro на Call ЗаменитьНеактивныхСпонсоров(20, "") , и всё...

Или я что-то неверно понимаю?
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796120
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuJoss,
А почему прям в обработке события не добавить код выполняющий те же действия,что и запросВ лоб не получается. Облом. Второй параметр запуска макроса - количество запусков. По идее его можно заменить на цикл For ... Next Третий параметр - условие досрочного выхода из цикла. И оно по описанию должно быть числом. А тут пустая строка. Надо дальше рыть доки.
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796128
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaJossмакрос я в код развернул легкоТо есть у тебя теперь вместо макроса "ЗаменитьНеактивныхСпонсоров" имеется нечто вроде Public Sub ЗаменитьНеактивныхСпонсоров(param1 As Integer, Param2 As String) ? ну тогда в чём сложности? заменяешь DoCmd.RunMacro на Call ЗаменитьНеактивныхСпонсоров(20, "") , и всё...

Или я что-то неверно понимаю? Неверно. Нет у подпрограммы параметров. 20 - это число запусков макроса. т.е. сколько раз подряд нужно запустить макрос. Ближайший аналог из VBA - цикл For ... Next.
А "" - условие досрочного выхода из цикла (я так понял описание).
Вот сейчас с этим и разбираюсь. Точнее, пытаюсь разобраться.
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796203
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss 20 - это число запусков макроса. т.е. сколько раз подряд нужно запустить макросНу так в процедуре
Код: vbnet
1.
2.
3.
4.
5.
Public Sub ЗаменитьНеактивныхСпонсоров(param1 As Integer, Param2 As String)
For i = 1  to param1
  ' фигачим
Next
End Sub


JossА "" - условие досрочного выхода из цикла (я так понял описание).Да, это выражение с целым типом результата, которое вычисляется после каждого цикла. Если оно станет нулём, цикл обрывается. Если у тебя оно пустое - можно игнорировать. Иначе придётся извращаться с EVALUATE().
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796319
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, выкинуть всю эту логику и сделать свое. - есть цель - её достигаем нормальными средствами- хоть модуль класса сделать.
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796359
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleckoJoss, выкинуть всю эту логику и сделать свое. - есть цель - её достигаем нормальными средствами- хоть модуль класса сделать. Так досталась мне эта программа без описания логики. И получить я её никак не могу. Остаётся только самому по кусочкам разбираться.
...
Рейтинг: 0 / 0
Развернуть макрос в код
    #39796394
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,
''-это думаю параметр, который работает в каком-то другом вызове этого макроса а в этом вызове он не используется
давай уж тогда текст макроса, текст процедуры в которой этот макрос сидит- а лучше весь модуль :).
я вот щас не очень понимаю почему нельзя сделать что-то даже типа такого
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private function ЗаменитьНеактивныхСпонсоров(KolZapusk&) as boolean
dim i&, test as boolean
test=false
for i=1 to KolZapusk
If ... then goto 11
next
test=true
go11:
ЗаменитьНеактивныхСпонсоров=test
end function


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


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