Сохранить запись встроенный макрос с настраиваемым диалоговым окном подтверждения - PullRequest
0 голосов
/ 05 февраля 2012

Мне было интересно, знает ли кто-нибудь, как создать собственное сообщение для подтверждения сохранения записи, используя только макросы, а не пользовательский VBA.Я сделал это для предыдущего проекта в VBA, но на этот раз я пытаюсь использовать только макрос конструктор Access.Я использую Access 2010 для создания этого проекта.

Пока что у меня есть

IF 6=MsgBox("Are you sure you want to delete this customer's information? WARNING, this is unrecoverable."),52 Then
RunMenuCommand DeleteRecord
MessageBox Message "Customer information deleted."

. Сначала в качестве подтверждения появляется диалоговое окно "да нет", но затем отображается встроенныйв подтверждении, что Access связывается с командой DeleteRecord.

Спасибо, Джейк.

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

не используйте команду меню запуска. Например, вы можете удалить, используя SQL

currentdb.execute "DELETE * FROM myTable WHERE myTableId=" & idOfRecordToBeDeleted
0 голосов
/ 08 июля 2015

Ищу подобное решение сам и после долгих раздумий нашел решение. Использование Access2013, но должно быть по той же логике.

В моем случае я хотел, чтобы в окне сообщения «Да / Нет» добавлялась запись о «Да», и перезагружалась форма в «Нет». В вашем случае, если не использовать фильтры и значения, было бы проще ... Если да, RunMenuCommand = Удалить запись, иначе StopMacro. Вы могли бы установить детали для Нет, но остальное обрабатывает это для меня.

Особенности: У меня есть форма со списком (макрос привязан к полю со списком / Свойство после обновления), чтобы выбрать и отфильтровать записи. Если есть подходящие записи, отобразите их (их). Если нет соответствующей записи, отобразите сообщение (нет записей) и предложите пользователю добавить одну (да) или нет (нет).

Весь макрос .... (без VB)

ApplyFilter Filter Name (blank) Where Condition =="[cID]= "& Str(Nz([Screen].[ActiveControl],0)) Control Name (blank)

If IsNull(eID]) Then If MsgBox("No record",4,"Nothing found")=6 Then SetProperty Control Name cID Property Value Value =Str(Nz([Screen].[ActiveControl],0)) StopMacro Else RunMenuCommand Command RemoveAllFilters StopMacro End If End If

...