Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранение параметров наборов данных для клиента / 15 сообщений из 15, страница 1 из 1
02.08.2017, 15:27
    #39499087
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Добрый день!
Довольно давно уже для хранения параметров запрашиваемых с клиента наборов данных (возможные фильтры, группировки, связи мастер-деталь, столбцы, их заголовки и т.п.) используем связку из двух таблиц, из которых первая хранит список наборов данных (по сути - список имен представлений), а вторая - список имен полей в каждом наборе с данными об очередности отображения, видимости, формате и т.п. В итоге на клиенте динамически формируются SQL-запросы и параметры Grid на основе этих таблиц. Есть, правда, еще третья таблица, в которой пользовательские параметры хранятся (очередность, видимость), но это уже лирика. Вариант оказался удобным, но лишь до тех пор, пока разработчик не забывает обновить таблицу со списком полей после корректировки метаданных представления (описаний новых полей нет, зато могут оказаться поля, отсутствующие в реальном представлении).

К тому же, настал момент, когда для показа на клиенте данных, полученных из представления стало недостаточно. Точнее, понадобилось реализовать разные свертки данных (читай - группировки) и фильтрацию на основе данных, отсутствующих в основном наборе, что порой не совсем удобно делать в представлении, но легко реализуется в ХП. Добавить ХП в указанную схему по сути не сложно, и список параметров коротким запросом можно получить.

Но в БД изначально есть список полей представлений и список параметров ХП, которые по сути приходится дублировать, что частенько приводит к противоречивости данных. Триггеры на системные таблицы, как я не понимаю, - не только не комильфо, но еще и не восстанавливаются после B/R.

Существуют ли другие подходы к данной задаче?
FB 2.5.6
...
Рейтинг: 0 / 0
02.08.2017, 15:37
    #39499094
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
не нужно превращать "автоматизацию пивного ларька" в универсальный OLAP-сервер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.08.2017, 15:46
    #39499107
PEAKTOP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Kirill RazuvaevВариант оказался удобным, но лишь до тех пор, пока разработчик не забывает обновить таблицу со списком полей после корректировки метаданных представления (описаний новых полей нет, зато могут оказаться поля, отсутствующие в реальном представлении).

я так понимаю, что данные из этой таблицы где-то как-то получаются запросом.
шо мешает вставить в него следующие строки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT ...........
FROM   ..............
WHERE (..........)
  AND (EXISTS (SELECT RF.RDB$FIELD_ID
               FROM   RDB$RELATION_FIELDS RF
               WHERE  (RF.RDB$RELATION_NAME = 'MY_TABLE')
                 AND  (RF.RDB$FIELD_NAME    = 'MY_FIELD')
               )
       )
  AND (..............)
...
Рейтинг: 0 / 0
02.08.2017, 15:48
    #39499109
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Мимопроходящийне нужно превращать "автоматизацию пивного ларька" в универсальный OLAP-сервер.Изменить заголовок столбца в гриде или сменить сортировку по умолчанию гораздо удобнее сделать один раз в БД, чем править клиентское приложение и обновлять его везде.
...
Рейтинг: 0 / 0
02.08.2017, 15:53
    #39499112
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
PEAKTOPшо мешает вставить в него следующие строки:Об этом я уже думал и, скорее всего, такой костыль будет полезен. В общем случае, можно, конечно, собрать перечень полей в обратной последовательности, приняв за базовый набор RDB$, тогда и несуществующих полей не будет, и новые появиться могут, хоть и с не всегда заполненными параметрами отображения. Но в этом варианте сложность в том, что нужно еще и пользовательские параметры очередности отображения подхватить - читай переиндексировать выходной набор на основе пользовательских параметров.
...
Рейтинг: 0 / 0
02.08.2017, 16:21
    #39499138
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
02.08.2017 15:48, Kirill Razuvaev пишет:
> чем править клиентское приложение и обновлять его везде.

в результате у тебя будет "размазанный" по туевой хуче точек интерфейс.
упаси Господи такое отлаживать и сопровождать...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.08.2017, 16:55
    #39499164
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Мимопроходящийв результате у тебя будет "размазанный" по туевой хуче точек интерфейс.Нисколько. Вся конфигурация табличных датасетов в одном месте, в двух таблицах.
...
Рейтинг: 0 / 0
02.08.2017, 21:47
    #39499294
Старый плюшевый мишка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Kirill RazuvaevМимопроходящийне нужно превращать "автоматизацию пивного ларька" в универсальный OLAP-сервер.Изменить заголовок столбца в гриде или сменить сортировку по умолчанию гораздо удобнее сделать один раз в БД, чем править клиентское приложение и обновлять его везде.

А не надо править клиентское приложение. Надо иметь интерфейс, позволяющий юзеру самостоятельно сохранять в базе варианты визуализации результатов одних и тех же запросов в одной или разных формах. И назначать один из них умолчательным для формы, а остальные при необходимости выбирать из списка. И редактировать или создавать новые. Кстати, мой копирайт 98-го года. Смайлик с растопыренными пальцами.
...
Рейтинг: 0 / 0
03.08.2017, 03:53
    #39499359
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Kirill RazuvaevИзменить заголовок столбца в гриде или сменить сортировку по умолчанию гораздо удобнее сделать один раз в БД, чем править клиентское приложение и обновлять его везде.

Я меняю это в приложении, потом сую exe в базу. Клиентские приложения при старте проверяют есть ли в базе более новая версия чем они сами, если есть - самообновляются. Уже давно по клиентам не бегаю.
...
Рейтинг: 0 / 0
07.08.2017, 16:04
    #39501349
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
fraksЯ меняю это в приложении, потом сую exe в базу.IMHO, это из пушки да по воробьям получается :-)
P.S. Об обновлении версий тут речи не было :-)
...
Рейтинг: 0 / 0
07.08.2017, 16:07
    #39501352
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Старый плюшевый мишкаНадо иметь интерфейс, позволяющий юзеру самостоятельно сохранять в базе варианты визуализации результатов одних и тех же запросов в одной или разных формах.Это-то понятно, к тому и идем, поскольку некоторые наборы расползлись до 60 столбцов, бОльшая часть из которых клиенту в конкретном режиме не нужна. Но начальные параметры, равно как и варианты визуализации хранить все равно централизованно надо. Вопрос был о том, есть ли более ликвидные подходы к организации такого хранения.
...
Рейтинг: 0 / 0
08.08.2017, 04:52
    #39501595
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Kirill RazuvaevfraksЯ меняю это в приложении, потом сую exe в базу.IMHO, это из пушки да по воробьям получается :-)
P.S. Об обновлении версий тут речи не было :-)

Да эта пушка собственно что слону дробина.
.exe весит 7мб.
Я в свое время пытался рожать скриптовый дельфи что бы приложение формы и даже код подтягивало прям из базы.
Убил на это дело год. Но потом бросил. Нет смысла делать Delphi если он уже есть. А 7-10мб скачать по локалке никаких проблем не составляет.
...
Рейтинг: 0 / 0
08.08.2017, 12:30
    #39501774
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Kirill Razuvaev,
создай на клиенте процедуру валидации метаданных твоих представлений (какой-нибудь вызов препарации запроса, формирующего представление, например), флаг успешной валидации храни в базе.
При изменении метаданных представлений сбрасывай этот флаг. Также сбрасывай его при изменении физических метаданных в базе ( см. https://www.firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-psql-ddltriggers.html - т.е. "триггеров на системные таблицы" больше не нужно).

Ну вот, клиентское приложение должно работать лишь при наличии установленного этого самого флага.
...
Рейтинг: 0 / 0
21.08.2017, 10:39
    #39508288
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
чччДПри изменении метаданных представлений сбрасывай этот флаг. Также сбрасывай его при изменении физических метаданных в базе ( см. https://www.firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-psql-ddltriggers.html - т.е. "триггеров на системные таблицы" больше не нужно).Идея хороша, но миграция на 3.0 еще только в планах, и не совсем понятно, сколь близких :-)
...
Рейтинг: 0 / 0
21.08.2017, 18:49
    #39508555
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение параметров наборов данных для клиента
Kirill RazuvaevчччДПри изменении метаданных представлений сбрасывай этот флаг. Также сбрасывай его при изменении физических метаданных в базе ( см. https://www.firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-psql-ddltriggers.html - т.е. "триггеров на системные таблицы" больше не нужно).Идея хороша, но миграция на 3.0 еще только в планах, и не совсем понятно, сколь близких :-)

Ну тогда просто при запуске клиентского приложения вычисляй сигнатуру физических метаданных базы и сравнивай ее с ранее сохраненной. Это просто и быстро.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранение параметров наборов данных для клиента / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]