powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Какую стратегию используете для заполнения источника LookUp полей?
25 сообщений из 62, страница 1 из 3
Какую стратегию используете для заполнения источника LookUp полей?
    #36003611
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переношу в очередной раз
Модератор: Для того, чтобы понять суть заданного вопроса - это надо кликнуть, перейти в дельфевый форум, там кликнуть и перейти в С#. Я позволю себе скопировать твой текст оттуда сюда, но в след. раз лучше делать это самостоятельно:

1. Загоняете все таблицу в память
2. Загоняете только нужные строки (как?)

Что делаете если на одном поле показаны данные из разных таблиц (Допустим, поле "Что входит" в узловых спецификациях может быть Деталь, Материал, ПКИ и т.д.)

Какую стратегию исползуете при вводе НОВЫХ данных?
1. Показывете всю таблицу
2. Показываете фильтр для уточнения выборки для показа
3..... (это интересует больше :))
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003645
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем, собственно проблема? Если лукап из более-менее статичных и коротких списков, то предзаполненный вываливающийся список. Если длинный или неопределенный, то лукап делается из отдельного диалога, где уже могут быть, а могут и не быть различные вспом. инструменты для поиска, фильтрации и т.п. Это что касается ввода и правки.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003665
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун,

Проблемы то особой нет, кроме производительности и памяти. :)

Если загружать из лукап источника только ту инфу, которая дает разрешение для видимой части (а она может быть получена хитрыми проекциями), то встает вопрос автоматического определения лукап полей, нужных источников, генерации и выполнения запросов для загрузки нужных источников в нужных разрезах.
И хорошо бы эти запросы не заставляли повторный запуск первичного запроса.
И если размер страницы выборки больше чем размер видимой страницы, то эти запросы еще сложнее, или загруженная страница еще не видима и т.д.
Ну, с вводом и редактированием немного проще.

Как вы это делаете?
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003666
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JOIN что-ли хитрая проекция? Или о чем речь? немного непонятно
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003670
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

ну вот смотри

Процедура из метаданных генерирует для основной таблицы типа
Код: plaintext
With OrderedType as (Select ИД,ТипИД,Наименование,[Заказчик],[Исполнитель],[Потребитель],[Описание],row_number() over (order by Наименование) as RowNumber from (Select ИД,ТипИД,Наименование,[Заказчик]=Cast(Max(Cast([Заказчик] as char( 36 ))) as uniqueidentifier),[Исполнитель]=Cast(Max(Cast([Исполнитель] as char( 36 ))) as uniqueidentifier),[Потребитель]=Cast(Max(Cast([Потребитель] as char( 36 ))) as uniqueidentifier),[Описание]=Max([Описание]) from (Select Объект.ИД,Объект.ТипИД,Объект.Наименование,[Заказчик]=Case when ОбъектСсылкаНаОбъект.Наименование='Заказчик' then ОбъектСсылкаНаОбъект.Значение end,[Исполнитель]=Case when ОбъектСсылкаНаОбъект.Наименование='Исполнитель' then ОбъектСсылкаНаОбъект.Значение end,[Потребитель]=Case when ОбъектСсылкаНаОбъект.Наименование='Потребитель' then ОбъектСсылкаНаОбъект.Значение end,[Описание]=Case when ОбъектСвойствоСтрока.СвойствоИД='9686AC96-FA8F-441A-ADB1-34F415073600' then ОбъектСвойствоСтрока.Значение end from Объект left outer join ОбъектСсылкаНаОбъект on (ОбъектСсылкаНаОбъект.ОбъектИД=Объект.ИД) left outer join  ОбъектСвойствоСтрока  on (ОбъектСвойствоСтрока.ОбъектИД=Объект.ИД) where Объект.ТипИД='881E6E8A-057F-4E61-93B2-E63D683FB959') as [Контракт] group by ИД,ТипИД,Наименование) as maxsql where Наименование='Заказ №1') Select ИД,ТипИД,Наименование,[Заказчик],[Исполнитель],[Потребитель],[Описание] from OrderedType  where (RowNumber >=  1                     ) and (RowNumber <=  9223372036854775807   )

Здес Заказчик, Испольнитель, Потребитель лукап поля
Для этих полей надо генерировать запросы, котрые будут выполняться в том же батче
в итоге надо вернут два резальтсета ( с учетом того, что Заказчик, Испольнитель, Потребитель все одного типа - Юридическое лицо)

Но, представь себе что педжинг на экране 10 записей и козел тот этот экран отсортировал (на клиенте) по описанию :(
Т.е., проблемы с очисктой кеша для лукап полей допольнительно
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003672
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тфу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
With OrderedType as 
(Select ИД,ТипИД,Наименование,[Заказчик],[Исполнитель],[Потребитель],[Описание],
row_number() over (order by Наименование) as RowNumber 
from 
(Select ИД,ТипИД,Наименование,[Заказчик]=Cast(Max(Cast([Заказчик] as char( 36 ))) as uniqueidentifier),
[Исполнитель]=Cast(Max(Cast([Исполнитель] as char( 36 ))) as uniqueidentifier),
[Потребитель]=Cast(Max(Cast([Потребитель] as char( 36 ))) as uniqueidentifier),
[Описание]=Max([Описание])
 from 
(Select Объект.ИД,Объект.ТипИД,Объект.Наименование,
[Заказчик]=Case when ОбъектСсылкаНаОбъект.Наименование='Заказчик' then ОбъектСсылкаНаОбъект.Значение end,
[Исполнитель]=Case when ОбъектСсылкаНаОбъект.Наименование='Исполнитель' then ОбъектСсылкаНаОбъект.Значение end,
[Потребитель]=Case when ОбъектСсылкаНаОбъект.Наименование='Потребитель' then ОбъектСсылкаНаОбъект.Значение end,
[Описание]=Case when ОбъектСвойствоСтрока.СвойствоИД='9686AC96-FA8F-441A-ADB1-34F415073600' then ОбъектСвойствоСтрока.Значение end
 from
 Объект 
left outer join ОбъектСсылкаНаОбъект on (ОбъектСсылкаНаОбъект.ОбъектИД=Объект.ИД) 
left outer join  ОбъектСвойствоСтрока  on (ОбъектСвойствоСтрока.ОбъектИД=Объект.ИД) 
where Объект.ТипИД='881E6E8A-057F-4E61-93B2-E63D683FB959') as [Контракт] 
group by ИД,ТипИД,Наименование) as maxsql 
where Наименование='Заказ №1')
 Select ИД,ТипИД,Наименование,[Заказчик],[Исполнитель],[Потребитель],[Описание] from
 OrderedType  where (RowNumber >=  1  ) and (RowNumber <=  9223372036854775807   )
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003679
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов
Если загружать из лукап источника только ту инфу, которая дает разрешение для видимой части....

Подозреваю, что тут проблема в попытке одним и тем же инструментом решить две задачи: отображение выбранного в поле на форме и собственно выбор. Да, для простых случаев можно на все про все использовать что-то вроде комбобоксов и их производных: он и отобразит на форме и позволит выбрать. Если более сложный вариант, лучше все-таки разделить задача. Например если идет речь о выборе спецификации, то не вижу никакого смысла в саму форму, где есть поле со ссылкой на спецификацию, пихать все ее содержимое. Достаточно выдать ключевую для пользователя идентифицирующую информацию, например номер, дату, название и т.п. Возможно в комплексе, но это должна быть просто конкатенация в одну строку. Как это вывести, надеюсь объяснять не надо.

Дальше возникают еще 2 отдельные задачи.
1. Как дать пользователю более подробную инфу, что именно выбрано в этом поле. Я обычно банально предлагаю по встроенной кнопке открыть форму соответствующего документа. Логично и удобно.
2. Как выбирать. Ну, тут уж от предмета выбора зависит. Но для сложных случаев это однозначно отдельный диалог выбора, причем чаще всего модальный. А уж в нем делается все что необходимо, чтоб найти соответствующий документ.

Надо быть проще. Красивые навороченные демонстрационные примеры от DevExpress хороши, чтоб ими любоваться. Но не стоит их все сразу предлагать несчастным реальным пользователям :)
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003680
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават,
понял о чем ты. Никогда не использую лукап поля, поэтому я пас. Думал немного о другом.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003690
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун,

ты имеешь ввиду показать так? Это тоже есть, но как то неинтересно
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003691
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун,

и причем тут Девекспресс??? и о каких демках идет речь? что то не понял юмора
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003693
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,
значит ты показываешь без лукапа, а редактируешь и вводишь в отдельной форме?
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003700
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават, да, примерно так. Для просмотра все вытягивается запросом, а если нужно отредактировать, то по требованию "подчитывается" список.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003703
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

ну тогда надо два АПИ, для показа и для обработки :(
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003707
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, получается, что лучше всего лукап инфы совместно с основной инфой грузить НЕ надо.
Потому что основная инфа может быть просто не видимым еще. Потому лучше всего реагировать на состояние экрана, при изменении выдернуть лукап инфы для вновь видимых и очистить для ставших невидимыми (если конечно нет на эти записи других ссылок)
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003713
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифовiscrafm,

ну тогда надо два АПИ, для показа и для обработки :(
нет. Просто для показа все делаешь в БД, а для обработки, если понадобиться, подключаешь дополнительные источники. Но только по требованию и единоразово. Часто ограничиваются параметрами. Но форма одна может быть, а может и две разные. Когда как выгодней. Мало ситуаций когда нужно одновременно. Но тянуть сразу все лукап списки навряд-ли нужно. Вытяни "расшифровки" запросом из БД. При выборе значения из "справочника" просто, помимо ключей, физически заполняются их представления на клиенте. В базу конечно пишутся только ключи. Где-то так.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003717
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

Понятно, так тоже сесть
Но надо кучу левых запросов генерировать. А они все громадные.
Тут у меня сейчас вот что сделан - Датасет работает напрямую с БД с фильтрацией и доппейджингом. Т.е., допустим MoveNext выбирет из кеша следуюущую запись, но если конец страницы, то загружает следующую страницу и выбирает первую запись (при указании доппараметра предыдущая странцы сохраняется и кеш уничтожается). Так вот этот же механизм подключен к визуальным элементам. Они работают напрямую с БД и малым кешем. Тем самым одни и те же расширения Датасет дают возможность визуализировать и обработать любой объем данных при управляемом размере использованной памяти.
Я принял окончательно решение - ввожу оверлоад в нужные методы с параметром лукап и в этом режиме к записи сразу припишу и уничтожу всю лукап информацию.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003725
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават,
насчет запросов не знаю, у нас немного все не так "внутри". Но принцип примерно как ты и описал. Вот картинка . На просмотр - из базы, для редактирования по требованию запускается привязанный сервис , который заполняет все что нужно в текущей записи. Он делается один раз, используется где необходимо. СОА рулит .
:)
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003731
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

понятно, спасибо
обойдемся без соа, просто переписал и дописал датасет немного и все
датасет знает о своем двойнике в БД все :) загружает все нужные связи и т.д.
вощем слиппер :)
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003735
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полуилось обычный ОРМ, только без генерации вских там классов и т.д. Все делается динамически (добавление новых типов, совйств, асоциаций и т.д.) и ничего перекомпилировать не надо. Плюс генерируется пользовательский GUI, плюс возможность задать внешние обработки, плюсь внешние формы и т.д.
через неделю выпуск версии 1.0 :)
Параллельно на ней написан верхний уровень МЕС.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003805
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003879
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов wrote:

> 1. Загоняете все таблицу в память
> 2. Загоняете только нужные строки (как?)

Используется т.н. кэш результатов запросов, который работает
без ограничения размера этого кэша. Для каких-то запросов у
формы есть возможность сказать, что его данные нужно кэшировать
и они кэшируются на уровне всего приложения. У формы есть
возможность обновлять кэш (т.е. инвалидировать кэш перед очередным
запросом), а также у пользователя в форме делается спец. пункт
меню, который обновляет все закэшированные справочники, используемые
данной формой.

> Что делаете если на одном поле показаны данные из разных таблиц
> (Допустим, поле "Что входит" в узловых спецификациях может быть Деталь,
> Материал, ПКИ и т.д.)

Такой проблемы нет, поскольку данные для комбиков получаются запросами
и запросы же кэшируются. Далее уже дело запроса свести эти данные
в один набор.

> Какую стратегию исползуете при вводе НОВЫХ данных?

Новые данные добавляются, кэш запросов инвалидируется формой
в части, касающейся этого комбика.

Недопущение введения дублирующих данных -- вопрос особый, и с данным,
думаю, никак не связан.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003882
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже я вообще что-то не в тему ляпнул. Но в чём состоит тема - так и не понял.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003885
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

нормально ляпнул.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003915
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовАлександр Гoлдун,

и причем тут Девекспресс??? и о каких демках идет речь? что то не понял юмора
Просто мельком глянул картинки, увидел гриды с встроенными подчиненными гридами, вот и вспомнился DevExpress.

Сахават Юсифов
ты имеешь ввиду показать так? Это тоже есть, но как то неинтересно
Нужно интересно или пригодно к использованию и не запределельно в разработке? Я стараюсь отдельно взятые формы не усложнять. Так по моему опыту гораздо лучше воспринимается пользователями. Если по кнопочке в отдельной форме юзеру откроется другое привычное представление, например содержимое заинтересовавшей спецификации, то это вполне адекватно воспринимается. А вот если по плюсикам схлопываются-расхлопываются целые области с кучей информации в том же окне, то такое по моему опыту хуже воспринимается, гораздо сильнее пестрит.
Нет, чисто для отображения без правки такое еще куда ни шло, но навешивать в ту же схему еще и редактирование нецелесообразно.
...
Рейтинг: 0 / 0
Какую стратегию используете для заполнения источника LookUp полей?
    #36003918
ResearchStudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты у ДимыО дизайн заказывал ? Почему кнопка Сохранить и Отменить по середине формы
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 1 из 3
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Какую стратегию используете для заполнения источника LookUp полей?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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