Автоматический ответ "Да" на всплывающее окно сообщения

Автор st.inna, 21 февраля 2023, 16:16

0 Пользователи и 1 гость просматривают эту тему.

st.inna

Всем здравствуйте!

На форме есть кнопка "Удалить", к которой прикручен макрос с командой RunCommand("DeleteRecord"). Каждый раз при удалении записи возникает окно с вопросом (файл приложен), в котором две кнопки "Да" (она активна) и кнопка "Нет" (не активна). Можно ли сделать так, чтобы автоматически ответить "Да"? Или чтобы это окно с вопросом не вылезало? В моем случае, я точно согласна с тем, что запись нужно удалить.

Спасибо за помощь!

sokol92

#1
Вот так программа ничего не должна спрашивать (обработчик нажатия кнопки):
Sub OnEvent(oEvent)
  Dim oForm
  oform=oEvent.Source.Model.Parent
  oForm.deleteRow
  oForm.reload
End Sub
Владимир.

st.inna

Спасибо большое, sokol92!

Да, так работает. Но нужно задачу несколько усложнить. Запись находится в форме для ввода данных. Если я ввожу данные, находясь на этой записи, но еще не сохранив ее, и мне нужно введенные данные "стереть", то я применяю команду RunCommand("RecUndo"), а если я вышла из введенной записи, т.е. она уже сохранилась, тогда применяю Ваш код. Вместе RunCommand("RecUndo") и Ваш код работают без ошибки, если я вышла из записи (курсор находится не на ней). Но если я еще не вышла из записи и пытаюсь стереть введенное, то на строке кода "oForm.deleteRow" возникает ошибка "Нельзя удалить запись, не входящую в диапазон".

По логике, я понимаю, что должно быть условие, что "Если запись в стадии ввода (еще не сохранена), то применяю RunCommand("RecUndo"), если сохранена, то "Ваш код".

Как это написать моих знаний и опыта еще не хватает :-(
Помогите, пожалуйста

sokol92

Добрый день! Проблема с помощью в том, что Вы используете библиотеку Access2Base, которая имеет собственные методы работы с данными. Мне эта библиотека не знакома. В "обычном" случае (без применения этой библиотеки), если Вы начали редактирование записи, а затем решили удалить эту запись, сообщений об ошибке не возникает.

Попробуйте выложить пример файла .odb и описать точную последовательность действий, которая приводит к проблемной ситуации.

Владимир.

sokol92

Забыл упомянуть - есть универсальный способ взять на себя проверку удаления записей - тогда не будет никаких вопросов (если Вы их не зададите из макроса).
Если, например, назначить на событие формы "Confirm Deletion" (Подтвердить удаление) следующий макрос, то записи удаляются без сообщений:
Function ConfirmDelete(oEvent)
  ConfirmDelete=True
End Function
Владимир.

st.inna

Здравствуйте, sokol92!

Наконец-то добралась до рабочего компьютера, чтобы проверить Ваши предложения.

Второй способ - то, что нужно!!!  Спасибо огромное!