Программы "Простой софт" www.prostoysoft.ru

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически)
Текущее время: 22.11.2024 16:42

Часовой пояс: UTC + 4 часа




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 13 ] 
Автор Сообщение
СообщениеДобавлено: 15.10.2017 22:36 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
SQL
Есть главная и подчиненная таблица.
При некотором значении поля в подчиненной таблице нужно запретить удаление записи из главной.

Придумал такое решение
VBS триггер в главной таблице на перемещение по записям.
В нем SQL запрос к подчиненной таблице, проверяется условие и выполняется DisableToolbarButtons("DELETE")

Все работает. Кнопка удаления скрывается.

Однако мне не нравится.
1. Триггер на перемещение по записям срабатывает не только когда пользователь перемещается по записям но и по инициативе программы.
Что влечет накладные расходы на производительность.

2. Зачем его выполнять если пользователь не собирается ничего удалять (99,5% действий с программой).

3. Но главное то что пользователю не получается выдать информацию о том почему он не может удалить запись.
У меня в базе подавляющее кол-во записей не доступно для удаления по разным причинам.
Что бы удалить нужно выполнить некоторые действия в зависимости от причины запрета.

Было бы хорошо на триггер "При удалении записи" вставить проверку и либо удалить запись либо отменить удаление и выдать сообщение.
Но не знаю как.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.10.2017 12:32 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Здравствуйте. Все намного проще.


Вложения:
DenyDelete.gif
DenyDelete.gif [ 888.39 КБ | Просмотров: 67207 ]

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.10.2017 16:02 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
OMEN спасибо!

У меня куча своих кнопок и как можно было не догадаться свою кнопку сделать с удалением? :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17.10.2017 13:54 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Вот именно, что не следует это делать на своей кнопке! У меня сделано все на стандартной кнопке, и именно это позволяет также переназначить аналогичное действие по удалению, вызываемое из контекстного меню записей!

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17.10.2017 22:04 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
OMEN писал(а):
Вот именно, что не следует это делать на своей кнопке! У меня сделано все на стандартной кнопке, и именно это позволяет также переназначить аналогичное действие по удалению, вызываемое из контекстного меню записей!

И меняет действие стандартной кнопки в панели подчиненной таблицы.
Я догадался когда подумал как заменить кнопку (у меня старая 528 в ней нельзя настраивать панель починенной таблицы).

Спасибо.

Есть только нюанс в 2.528 (в новых не пробовал)
После редактирования скрипта в "Настройки панели инструментов" после изменения скрипта нужно перегрузить программу. Хотя изменение своих кнопок перезагрузки программы не требуют.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18.10.2017 23:16 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Uspenskiy писал(а):
И меняет действие стандартной кнопки в панели подчиненной таблицы.
О таком побочном эффекте впервые слышу. По идее, не должно быть такого
Uspenskiy писал(а):
После редактирования скрипта в "Настройки панели инструментов" после изменения скрипта нужно перегрузить программу. Хотя изменение своих кнопок перезагрузки программы не требуют.
Так было всегда

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19.10.2017 03:18 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
OMEN писал(а):
Uspenskiy писал(а):
И меняет действие стандартной кнопки в панели подчиненной таблицы.
О таком побочном эффекте впервые слышу. По идее, не должно быть такого

Мне нужно было переназначить кнопку и я попробовал. В общем то так и должно быть. Это логично.
Картинка 3 это после нажатия кнопки "Удалить" в панели таблицы "Визиты"

OMEN писал(а):
Uspenskiy писал(а):
После редактирования скрипта в "Настройки панели инструментов" после изменения скрипта нужно перегрузить программу. Хотя изменение своих кнопок перезагрузки программы не требуют.
Так было всегда

Но это не хорошо. Надо исправлять.
При отладке надо перезагружать программу. И не логично. Пользовательские кнопки кнопки не требуют перезагрузки.
Я не сразу сообразил что делаю не так. Правлю, пробую, а эффекта нет.

Всё написанное применимо к версии 2.528. Что в других не знаю.


Вложения:
1.jpg
1.jpg [ 175.55 КБ | Просмотров: 67147 ]
2.jpg
2.jpg [ 219.72 КБ | Просмотров: 67147 ]
3.jpg
3.jpg [ 132.87 КБ | Просмотров: 67147 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19.10.2017 15:23 
Не в сети

Зарегистрирован: 15.03.2016 07:21
Сообщения: 104
Откуда: г. Хабаровск
Uspenskiy писал(а):
OMEN писал(а):
Uspenskiy писал(а):
После редактирования скрипта в "Настройки панели инструментов" после изменения скрипта нужно перегрузить программу. Хотя изменение своих кнопок перезагрузки программы не требуют.
Так было всегда
Но это не хорошо. Надо исправлять.
При отладке надо перезагружать программу. И не логично.
Если скрипт записывать не под кнопку Панели инструментов, а в таблицу "Процедуры" (tblProcedures), то перезагрузка программы не требуется. Да и со скриптом в 50 строк и более удобнее работать в таблице "Процедуры".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20.10.2017 17:11 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
ipLVL писал(а):
Если скрипт записывать не под кнопку Панели инструментов, а в таблицу "Процедуры" (tblProcedures), то перезагрузка программы не требуется. Да и со скриптом в 50 строк и более удобнее работать в таблице "Процедуры".

И Вам спасибо.
Кроме того не нужно в 20-ти местах скрипт править если 4 таблицы и 5 ролей.
Только в моей версии какие то косяки с процедурами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20.10.2017 17:21 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
Дополнение к первому сообщению!
Uspenskiy писал(а):
VBS триггер в главной таблице на перемещение по записям.
В нем SQL запрос к подчиненной таблице, проверяется условие и выполняется DisableToolbarButtons("DELETE")

Это плохое решение.

Переместились на запись которую можно удалить.
Кнопка доступна.
На другой машине изменили запись так что удалять нельзя.
На нашей машине кнопка (и удаление) все равно ДОСТУПНА!!!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20.10.2017 17:52 
Не в сети

Зарегистрирован: 15.03.2016 07:21
Сообщения: 104
Откуда: г. Хабаровск
Uspenskiy писал(а):
SQL
При некотором значении поля в подчиненной таблице нужно запретить удаление записи из главной.
Как вариант, попробовать сделать в главной таблице вычисляемое логическое поле, зависящее от значений в подчинённой. А по этому полю в "Параметры"->"Права доступа" настроить "Ограничение по записям" -> "Запрет удаления".
...после написание этого текста, в другой теме прочитал, что такой вариант Вы уже проходили. Сорри...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20.10.2017 19:50 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
То что OMEN посоветовал написать скрипт на кнопку,
а ipLVL закинуть код в процедуру.
Хорошее и исчерпывающее решение.

То что кнопка остается активной не страшно. Даже хорошо.
Если пользователь захотел удалить(отредактировать) запись значит ему это надо.
И при нажатии на кнопку объясняется почему это сейчас нельзя.

Всем спасибо.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 13 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB