Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / AfterDelete (Макрос данных) с проверкой подтверждения удаления записи / 20 сообщений из 20, страница 1 из 1
27.12.2018, 18:19
    #39754114
v-e-t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
Здравствуйте!

Подскажите, каким способом в макросе данных AfterDelete отследить, было ли подтверждение пользователем удаления записи?
При выполнении команды УДАЛИТЬ ЗАПИСЬ срабатывает обработчик, написанный на vba (вызывается через оператор ЗадатьЛокПеременную в макросе данных).

сейчас в макросе данных такой код:

Код: vbnet
1.
ЗадатьЛокПеременную =SetParametr(Old.ID)



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

Требуется что-то вроде
Код: vbnet
1.
Если <ЗАПИСЬ УДАЛЕНА> то ЗадатьЛокПеременную =SetParametr(Old.ID)
...
Рейтинг: 0 / 0
27.12.2018, 19:11
    #39754146
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-t,
для формы существуют события до/после подтверждения Del,удаление-может какое из них подойдет
...
Рейтинг: 0 / 0
27.12.2018, 19:16
    #39754149
v-e-t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
sdku, про формы знаю, требуется решить задачу на уровне макроса данных.
...
Рейтинг: 0 / 0
27.12.2018, 19:23
    #39754156
DarkMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-tsdku, про формы знаю, требуется решить задачу на уровне макроса данных.
Я извиняюсь за тупость , а не могли бы Вы для тех кто в танке перевести свою фразу на более понятный язык , особенно словосочетание на уровне макроса данных. Спасибо.
...
Рейтинг: 0 / 0
27.12.2018, 19:36
    #39754158
v-e-t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
DarkMan, может слишком скомкано/кратко выразился. На уровне макроса данных таблицы - пользуясь тем, что можно использовать при построении макроса данных. Может есть какое-то свойство, которое можно использовать в теле макроса, например возможно DELETED (по аналогии с OLD, содержащим предыдущие значения полей).
...
Рейтинг: 0 / 0
27.12.2018, 19:40
    #39754162
v-e-t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
Или подскажите, где полное руководство по макросам данных посмотреть.
...
Рейтинг: 0 / 0
27.12.2018, 19:43
    #39754167
DarkMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-tНа уровне макроса данных таблицы - ,
Вот это уже более понятно , это если я правильно понял , начиная с Access 2010 тригеры ??? А чем Вам не нравится обрабатывать все это в форме как Вам советовали ? Там очень много подходящих событий . А на уровне таблицы как мне кажется , то откуда ей известно ... , что нажимал пользователь ? Я думаю там Вы сможете отловить уже когда запись удалена. Если я не ошибаюсь конечно.
...
Рейтинг: 0 / 0
28.12.2018, 01:01
    #39754271
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-tПри выполнении команды УДАЛИТЬ ЗАПИСЬ срабатывает обработчик, написанный на vba (вызывается через оператор ЗадатьЛокПеременную в макросе данных).Вызывать процедуру (макрос) иначе как в ответ на событие (или инструкцией Call)-это сильно.
Стесняюсь спросить: а занафига нужен макрос??? (по сути "посредник", между Аксом и VBA, с очень ограниченными возможностями и полным отсутствием средств отладки. Или я чего-то не понимаю?)
...
Рейтинг: 0 / 0
28.12.2018, 02:36
    #39754286
v-e-t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
sdku, он нужен именно, чтобы можно было обойтись без использования событий форм. задача такая - не использовать события формы. оптимально это или нет - другой вопрос.
...
Рейтинг: 0 / 0
28.12.2018, 03:23
    #39754289
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-t,
ACCESS-система, управляемая событиями
(обойтись без их использования-полный...нонсенс)
...
Рейтинг: 0 / 0
28.12.2018, 04:11
    #39754292
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-t, макрос AfterDelete сработает соответственно после всех подтверждений иначе события удаления не будет, т.е. по определению пользователь уже подтвердил своё действие.
Но если прямо таки нужно отловить подтверждение, то попробуй создавать переменную в коллекции TempVars (она доступна, и из макросов, и из VBA) на событие формы Delete (надеюсь работа с данными идёт через форму). Но надо помнить что событие формы Delete происходит для каждой удаляемой записи.
Далее смотри переменную в TempVars в своём макросе данных.

Использование таких ограничений, ИМХО, ухудшает результат использование макросов данных - независимость от способа обработки данных.
...
Рейтинг: 0 / 0
28.12.2018, 06:22
    #39754299
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
ПанургНо если прямо таки нужно отловить подтверждение, то попробуй создавать переменную в коллекции TempVars (она доступна, и из макросов, и из VBA) на событие формы Delete (надеюсь работа с данными идёт через форму). Но надо помнить что событие формы Delete происходит для каждой удаляемой записи.
Далее смотри переменную в TempVars в своём макросе данных.Посмотрел тут - не работает. Не видно этой коллекции в макросах данных. Увы.

sdkuполным отсутствием средств отладки. Или я чего-то не понимаю?)Ошибки пишутся в спец таблицу "USysApplicationLog"
...
Рейтинг: 0 / 0
28.12.2018, 06:30
    #39754300
v-e-t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
Панургv-e-t, макрос AfterDelete сработает соответственно после всех подтверждений иначе события удаления не будет, т.е. по определению пользователь уже подтвердил своё действие.
Но если прямо таки нужно отловить подтверждение, то попробуй создавать переменную в коллекции TempVars (она доступна, и из макросов, и из VBA) на событие фор

Нет, не так. При вызове команды УДАЛИТЬ ЗАПИСЬ. Запись удаляется и триггер срабатывает. Потом отображается диалоговое окно подтверждения удаления записи. Если пользователь не подтверждает, то происходит откат действий. Вроде бы все хорошо, но откат только тех действий, что записаны в макросе. Если действия выполнялись с использованием пользовательской функции из модуля vba, то выполненные данной функцией изменения не откатываются назад, т.е. не охватываются транзакцией и соответственно откат не происходит.
...
Рейтинг: 0 / 0
28.12.2018, 06:39
    #39754301
v-e-t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
sdkuv-e-t,
ACCESS-система, управляемая событиями
(обойтись без их использования-полный...нонсенс)

Как, используя события формы в аксессе, реализовать определенную логику, связанную с обновлением данных в нескольких таблицах, если изменения вносятся без вызова формы аксесса, а непосредственно в таблицу базы, на основании изменений которой должны меняться данные в других талицах, например, изменения вносятся документа excel или word? (изменения в таблице excel автоматически вносятся в талицу БД acсess)
...
Рейтинг: 0 / 0
28.12.2018, 06:53
    #39754302
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-tНет, не так. При вызове команды УДАЛИТЬ ЗАПИСЬ. Запись удаляется и триггер срабатывает.Да, макрос срабатывает. Я писал про коллекцию TempVars .
Меняй логику программы - откажись от этого способа.
...
Рейтинг: 0 / 0
28.12.2018, 12:20
    #39754468
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-tнапример, изменения вносятся документа excel или word? (изменения в таблице excel автоматически вносятся в талицу БД acсess)А про связанные таблицы Вы читали или про импорт/экспорт данных, который происходит по событию мыши или клавиатуры,в том приложении,где оно произошло (а не по хлопку в ладоши)
...
Рейтинг: 0 / 0
28.12.2018, 12:24
    #39754469
Swa111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
v-e-t,

Возможно поможет этот материал и еще тут

А так, пересмотрите алгоритм, возможно стоит сначала выполнить все проверки и/или спросить пользователя, а уже потом изменять данные
...
Рейтинг: 0 / 0
28.12.2018, 12:47
    #39754487
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
Вдогонку:v-e-t.....в таблицу базы, на основании изменений которой должны меняться данные в других талицах, ...А это есть нарушение одного из фундаментальных правил "базостроения" явно указывающее на не верно спроектированную БД.
Это не только мое мнение:
Панург..Меняй логику программы - откажись от этого способа.Swa111А так, пересмотрите алгоритм...
...
Рейтинг: 0 / 0
28.12.2018, 12:57
    #39754492
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
Панургsdkuполным отсутствием средств отладки. Или я чего-то не понимаю?)Ошибки пишутся в спец таблицу "USysApplicationLog"Констатацию факта ошибки и дальнейшую запись этого факта в таблицу не считаю "средством отладки"
...
Рейтинг: 0 / 0
29.12.2018, 19:29
    #39755026
v-e-t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AfterDelete (Макрос данных) с проверкой подтверждения удаления записи
Всем спасибо! Разобрался.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / AfterDelete (Макрос данных) с проверкой подтверждения удаления записи / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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