Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
v-e-t
Member

Откуда:
Сообщений: 91
Здравствуйте!

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

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

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


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

Требуется что-то вроде
Если <ЗАПИСЬ УДАЛЕНА> то ЗадатьЛокПеременную =SetParametr(Old.ID)
27 дек 18, 18:19    [21775110]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6005
v-e-t,
для формы существуют события до/после подтверждения Del,удаление-может какое из них подойдет
27 дек 18, 19:11    [21775154]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
v-e-t
Member

Откуда:
Сообщений: 91
sdku, про формы знаю, требуется решить задачу на уровне макроса данных.
27 дек 18, 19:16    [21775161]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
DarkMan
Member

Откуда:
Сообщений: 516
v-e-t
sdku, про формы знаю, требуется решить задачу на уровне макроса данных.

Я извиняюсь за тупость , а не могли бы Вы для тех кто в танке перевести свою фразу на более понятный язык , особенно словосочетание на уровне макроса данных. Спасибо.
27 дек 18, 19:23    [21775174]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
v-e-t
Member

Откуда:
Сообщений: 91
DarkMan, может слишком скомкано/кратко выразился. На уровне макроса данных таблицы - пользуясь тем, что можно использовать при построении макроса данных. Может есть какое-то свойство, которое можно использовать в теле макроса, например возможно DELETED (по аналогии с OLD, содержащим предыдущие значения полей).
27 дек 18, 19:36    [21775183]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
v-e-t
Member

Откуда:
Сообщений: 91
Или подскажите, где полное руководство по макросам данных посмотреть.
27 дек 18, 19:40    [21775192]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
DarkMan
Member

Откуда:
Сообщений: 516
v-e-t
На уровне макроса данных таблицы - ,

Вот это уже более понятно , это если я правильно понял , начиная с Access 2010 тригеры ??? А чем Вам не нравится обрабатывать все это в форме как Вам советовали ? Там очень много подходящих событий . А на уровне таблицы как мне кажется , то откуда ей известно ... , что нажимал пользователь ? Я думаю там Вы сможете отловить уже когда запись удалена. Если я не ошибаюсь конечно.
27 дек 18, 19:43    [21775198]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6005
v-e-t
При выполнении команды УДАЛИТЬ ЗАПИСЬ срабатывает обработчик, написанный на vba (вызывается через оператор ЗадатьЛокПеременную в макросе данных).
Вызывать процедуру (макрос) иначе как в ответ на событие (или инструкцией Call)-это сильно.
Стесняюсь спросить: а занафига нужен макрос??? (по сути "посредник", между Аксом и VBA, с очень ограниченными возможностями и полным отсутствием средств отладки. Или я чего-то не понимаю?)
28 дек 18, 01:01    [21775353]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
v-e-t
Member

Откуда:
Сообщений: 91
sdku, он нужен именно, чтобы можно было обойтись без использования событий форм. задача такая - не использовать события формы. оптимально это или нет - другой вопрос.
28 дек 18, 02:36    [21775372]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6005
v-e-t,
ACCESS-система, управляемая событиями
(обойтись без их использования-полный...нонсенс)
28 дек 18, 03:23    [21775376]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4291
v-e-t, макрос AfterDelete сработает соответственно после всех подтверждений иначе события удаления не будет, т.е. по определению пользователь уже подтвердил своё действие.
Но если прямо таки нужно отловить подтверждение, то попробуй создавать переменную в коллекции TempVars (она доступна, и из макросов, и из VBA) на событие формы Delete (надеюсь работа с данными идёт через форму). Но надо помнить что событие формы Delete происходит для каждой удаляемой записи.
Далее смотри переменную в TempVars в своём макросе данных.

Использование таких ограничений, ИМХО, ухудшает результат использование макросов данных - независимость от способа обработки данных.
28 дек 18, 04:11    [21775380]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4291
Панург
Но если прямо таки нужно отловить подтверждение, то попробуй создавать переменную в коллекции TempVars (она доступна, и из макросов, и из VBA) на событие формы Delete (надеюсь работа с данными идёт через форму). Но надо помнить что событие формы Delete происходит для каждой удаляемой записи.
Далее смотри переменную в TempVars в своём макросе данных.
Посмотрел тут - не работает. Не видно этой коллекции в макросах данных. Увы.

sdku
полным отсутствием средств отладки. Или я чего-то не понимаю?)
Ошибки пишутся в спец таблицу "USysApplicationLog"
28 дек 18, 06:22    [21775390]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
v-e-t
Member

Откуда:
Сообщений: 91
Панург
v-e-t, макрос AfterDelete сработает соответственно после всех подтверждений иначе события удаления не будет, т.е. по определению пользователь уже подтвердил своё действие.
Но если прямо таки нужно отловить подтверждение, то попробуй создавать переменную в коллекции TempVars (она доступна, и из макросов, и из VBA) на событие фор


Нет, не так. При вызове команды УДАЛИТЬ ЗАПИСЬ. Запись удаляется и триггер срабатывает. Потом отображается диалоговое окно подтверждения удаления записи. Если пользователь не подтверждает, то происходит откат действий. Вроде бы все хорошо, но откат только тех действий, что записаны в макросе. Если действия выполнялись с использованием пользовательской функции из модуля vba, то выполненные данной функцией изменения не откатываются назад, т.е. не охватываются транзакцией и соответственно откат не происходит.
28 дек 18, 06:30    [21775392]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
v-e-t
Member

Откуда:
Сообщений: 91
sdku
v-e-t,
ACCESS-система, управляемая событиями
(обойтись без их использования-полный...нонсенс)


Как, используя события формы в аксессе, реализовать определенную логику, связанную с обновлением данных в нескольких таблицах, если изменения вносятся без вызова формы аксесса, а непосредственно в таблицу базы, на основании изменений которой должны меняться данные в других талицах, например, изменения вносятся документа excel или word? (изменения в таблице excel автоматически вносятся в талицу БД acсess)
28 дек 18, 06:39    [21775393]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4291
v-e-t
Нет, не так. При вызове команды УДАЛИТЬ ЗАПИСЬ. Запись удаляется и триггер срабатывает.
Да, макрос срабатывает. Я писал про коллекцию TempVars.
Меняй логику программы - откажись от этого способа.
28 дек 18, 06:53    [21775394]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6005
v-e-t
например, изменения вносятся документа excel или word? (изменения в таблице excel автоматически вносятся в талицу БД acсess)
А про связанные таблицы Вы читали или про импорт/экспорт данных, который происходит по событию мыши или клавиатуры,в том приложении,где оно произошло (а не по хлопку в ладоши)
28 дек 18, 12:20    [21775620]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
Swa111
Member

Откуда:
Сообщений: 104
v-e-t,

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

А так, пересмотрите алгоритм, возможно стоит сначала выполнить все проверки и/или спросить пользователя, а уже потом изменять данные
28 дек 18, 12:24    [21775622]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6005
Вдогонку:
v-e-t
.....в таблицу базы, на основании изменений которой должны меняться данные в других талицах, ...
А это есть нарушение одного из фундаментальных правил "базостроения" явно указывающее на не верно спроектированную БД.
Это не только мое мнение:
Панург
..Меняй логику программы - откажись от этого способа.
Swa111
А так, пересмотрите алгоритм...
28 дек 18, 12:47    [21775648]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6005
Панург
sdku
полным отсутствием средств отладки. Или я чего-то не понимаю?)
Ошибки пишутся в спец таблицу "USysApplicationLog"
Констатацию факта ошибки и дальнейшую запись этого факта в таблицу не считаю "средством отладки"
28 дек 18, 12:57    [21775653]     Ответить | Цитировать Сообщить модератору
 Re: AfterDelete (Макрос данных) с проверкой подтверждения удаления записи  [new]
v-e-t
Member

Откуда:
Сообщений: 91
Всем спасибо! Разобрался.
29 дек 18, 19:29    [21776587]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить