С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
20 / 35 / 14
Регистрация: 08.10.2015
Сообщений: 406
1

События формы

19.12.2017, 10:39. Показов 3089. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,

У меня есть форма с подчин формой (участвуют 2 таб 1:М), на ней кнопка, написанная мной "Удалить запись"- удаляет инфу из обеих таблиц.
Пример таблиц (Они хранятся на SQL Server) :
1 Покупатели
2 Покупки, которые совершил каждый покупатель.

Т е удаляется инфа о покупателе и его купленных товарах.

На кнопке привязан такой порядок действий:
1) Открыть модальное окно
2) В этом окне из выпадающего списка выбрать причину удаления
3) При нажатии ОК в таблицу "Архив" на SQL Server записывается вся удаленная инфа+причина, потом код удаления. Это выполняется с помощью процедуры, которую на VBA я вызываю с сервера.

Все выполняется норм и без задержек.


НО! Пользователи привыкли пользоваться стандартной кнопкой на "Удалить запись" на панели вкладка Записи.

Я попробовала перенести код моей кнопки на событие формы "Удаление". Удаляется выбранная запись, но процедура записывает в Архив следующую запись, а не удаленную. Получается так, что удаление происходит раньше открытия модального окна.

На небольшой БД, где форма состоит из 1 таблицы я сделала с 2 событиями До+Удаление

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
DoCmd.OpenForm "Form1" -модальное окно
End Sub
 
Private Sub Form_Delete(Cancel As Integer)
 
If MsgBox("Вы действительно хотите удалить?", vbYesNo) = vbYes Then
mybook = Me.id
Else
 Cancel = 1
End If
 
End Sub
 
Public mybook As String  ---объявлена в модуле, глобал переменная
 
 
Private Sub Кнопка0_Click()  --кнопка модального окна ОК
MsgBox mybook
CurrentDb.Execute "insert into tovar (id,tovar) select id,book from Data where id =" & mybook
 
DoCmd.Close
End Sub
Берется нужный id и вставляется.


Но в другой БД, где процедура, Access виснет после открытия модального окна. Удаление не происходит и процедура тоже результата не дает.

Скажите пжл, реально избавитсья от зависания или проще обучить пользователей пользоваться моей кнопкой на форме?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2017, 10:39
Ответы с готовыми решениями:

События формы
Привет. У меня две формы. Одна из которых открывается 2-м щелчком по другой. Она же должна...

События навигационной панели формы
Добрый день! Есть необходимость выполнять некоторый код при переходе к следующей записи. Если...

Прописать события для формы программно
Делаю авторизацию для своей БД и решил сделать немного унивирсально что бы в дальнейшем просто...

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

3
Эксперт MS Access
7446 / 4580 / 302
Регистрация: 12.08.2011
Сообщений: 14,280
19.12.2017, 10:49 2
Цитата Сообщение от Aumi Посмотреть сообщение
Т е удаляется инфа о покупателе и его купленных товарах.
А зачем вы это вообще делаете? Почему просто не пометить запись как архивную например и не отображать где не надо? Удаление в БД - это нештатная ситуация. Как землетрясение например. Что будет, если вы захотите какую-либо отчётность по клиентам?
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
19.12.2017, 10:50 3
Лучший ответ Сообщение было отмечено Aumi как решение

Решение

Должна быть не модальная форма, а диалоговая, она сама по себе модальная. Диалоговая перехватывает все управление на себя и в вызывающем коде последующие команды выполнятся только после ее закрытия
Visual Basic
1
DoCmd.OpenForm "Form1",,,,,acDialog
1
842 / 473 / 79
Регистрация: 18.05.2016
Сообщений: 1,255
Записей в блоге: 4
19.12.2017, 15:40 4
У формы ан вкладке "Данные" есть свойство "Разрешить удаление". Если поставить в нём "нет", то пользователю не будет доступна кнопка удаления записи
1
19.12.2017, 15:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2017, 15:40
Помогаю со студенческими работами здесь

Код в обработке события получения фокуса, который бы исполнялся только один раз, при открытии формы
Здравствуйте! Подскажите пожалуйста, какими операторами воспользоваться, чтобы организовать...

Как записать функцию "Если" в процедуре обработки события поля формы
Подскажите пожалуйста как в процедуре обработки события сделать запись в поле под названием...

Создание у формы события, основанного на событиях компонентов формы
Всем доброго времени суток. Прошу подсказать решение проблемы: Необходимо у формы создать новое...

Написать процедуру обработки события OnCreate для формы, которая устанавливает для формы размер шрифта
Задание: 1.Создать приложение с формой. 2. Поместить на форму метку и кнопку. 3. Написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru