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

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

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

Существуют ли другие подходы к данной задаче?
FB 2.5.6
...
Рейтинг: 0 / 0
Хранение параметров наборов данных для клиента
    #39499094
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не нужно превращать "автоматизацию пивного ларька" в универсальный OLAP-сервер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хранение параметров наборов данных для клиента
    #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
Хранение параметров наборов данных для клиента
    #39499109
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийне нужно превращать "автоматизацию пивного ларька" в универсальный OLAP-сервер.Изменить заголовок столбца в гриде или сменить сортировку по умолчанию гораздо удобнее сделать один раз в БД, чем править клиентское приложение и обновлять его везде.
...
Рейтинг: 0 / 0
Хранение параметров наборов данных для клиента
    #39499112
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PEAKTOPшо мешает вставить в него следующие строки:Об этом я уже думал и, скорее всего, такой костыль будет полезен. В общем случае, можно, конечно, собрать перечень полей в обратной последовательности, приняв за базовый набор RDB$, тогда и несуществующих полей не будет, и новые появиться могут, хоть и с не всегда заполненными параметрами отображения. Но в этом варианте сложность в том, что нужно еще и пользовательские параметры очередности отображения подхватить - читай переиндексировать выходной набор на основе пользовательских параметров.
...
Рейтинг: 0 / 0
Хранение параметров наборов данных для клиента
    #39499138
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
02.08.2017 15:48, Kirill Razuvaev пишет:
> чем править клиентское приложение и обновлять его везде.

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

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

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

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

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

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


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