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

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

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

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

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

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

Как вы это делаете?
...
Рейтинг: 0 / 0
23.05.2009, 22:59
    #36003666
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какую стратегию используете для заполнения источника LookUp полей?
JOIN что-ли хитрая проекция? Или о чем речь? немного непонятно
...
Рейтинг: 0 / 0
23.05.2009, 23:11
    #36003670
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какую стратегию используете для заполнения источника LookUp полей?
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
23.05.2009, 23:15
    #36003672
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какую стратегию используете для заполнения источника LookUp полей?
тфу
Код: 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
23.05.2009, 23:31
    #36003679
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какую стратегию используете для заполнения источника LookUp полей?
Сахават Юсифов
Если загружать из лукап источника только ту инфу, которая дает разрешение для видимой части....

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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