![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с подставными полями d DBGrid. [D5, Paradox]
Shatun © (2002-11-01 09:40:00)Мастера подскажите, как организовать сортировку в DBGrid.
Существуют три таблицы
"Вид товара" (код, вид)
"Товар" (код,Код вида, наименование)
"Прайс" (Код, Код товара, количество и т.д.)
Так вот, как сделать чтоб подставное поле "товар" в таблице "Прайс" ограничивалось выбранным видом товара, и все выбералось в DBGrid
alexr (2002-11-04 12:57:00) [1]Как я понял, ты работаешь с таблицами Paradox, а для отобржения данных и их корректировки используешь компонент TTable.
Если это так, то тебе необходимо включить связи между компонентами TTable.Смотри свойства MasterSourse и MasterFielfs.
Всвойстве MasterSourse выбери таблицу для связи "один ко многим", а затем щелкни по полю свойства MasterFielfs и укажи поля по которым осуществляется связь.
В твоей задачке связи таблицы "Вид товара" (код, вид)
к таблице "Товар" (код,Код вида, наименование)
к таблице "Прайс" (Код, Код товара, количество и т.д.)
В этом случае если у тебя на форме используются три таблицы Grid, в таблице "Вид товара" будет отражаться одно значение, в таблице "Товар" - несколько наименований товара, а в таблице "Прайс" - их параметры.
MsGuns (2002-11-04 12:42:00) [2]Хотел уйти за свой, но все-таки вистану.
Или я чего-то не понял, или тут базар съехал куда-то ни туда. Причем здесь вообще LookUp - поля ? По-моему тут уместна перевязка:
1. Группа > товар (один ко многим)
2. Товар > прайс (один к одному)
Организация контролов:
- Вариант с "родными" НД
В контрол-панели ComboBox с группами
В гриде список товара
В панельке внизу инфа прайса по текущей в гриде позиции товара
- Вариант с объединяющим SQL
В контрол-панели ComboBox с группами
В гриде список товара + инфа из прайса (выборка из 2-х НД)
Выборка групп понятно как (через SQL или фильтром)
Сортировка внутри грида, поиск, внутренняя фильтрация - все стандартно ! Причем тут лукап ?
Shatun (2002-11-04 10:26:00) [3]Да чтоб в третей таблице все увидеть, раз и во вторых чтоб в ней же и редактировать.
Виталий Панасенко (2002-11-04 08:44:00) [4]Я, конечно, извиняюсь, но если Вы используете вид товара (группу), то она Вам необходима, что бы отфильтровать ТОЛЬКО этот вид/группу. Та накой Вам все остальное ?!. При выборе другого вида просто перестроить фильтр и в прайсе показывать уже другой вид... Или я что-то недопонял ?
Shatun (2002-11-04 05:48:00) [5]Блин ребята, я тупой ламер. Из вашего базара понял только то что нужно использовать LookupCache, а как и почем непонятно. Будьте добры киньте пример мне на мыло.
ЮЮ (2002-11-02 05:09:00) [6]>И если теперь поставить фильтр на лукапный НД и ведущий не сможет найти соответств.запись в л.НД, то будет взята запись из кеша.
Если стоит LookupCache=true то ведущий НД вообще не будет обращаться к л.НД, а всё будет брать из кэща, обновление которого теперь перекладывается на приложение (так написано в Helpe). Правда я не знаю, что будет отображаться в выпадающем списке, отфильтрованный л.НД или значения из кэща. Повторюсь, что никогда не пользовался LookupCache.
Johnmen (2002-11-01 14:12:00) [7]>ЮЮ © (01.11.02 13:57)
Нет. В момент открытия ведущего НД на все доступные с учетом фильтра (его нет) значения записей лукапного поля лукапного НД строится кеш. И если теперь поставить фильтр на лукапный НД и ведущий не сможет найти соответств.запись в л.НД, то будет взята запись из кеша.
Что, впрочем, как ты заметил, написано в хелпе...:)
ЮЮ (2002-11-01 13:57:00) [8]Да, но если LookupCache=true, то фильтрация LookupDataset ничего не даст. Поэтому после фильтра прёдется его отключить. Но тогда в кэше будут только отфильтрованные записи. И?
ЮЮ (2002-11-01 13:55:00) [9]Согласен! Прочитал про LookupCache. Никогда в жизни не ставил его в True :-)
Johnmen (2002-11-01 13:46:00) [10]>ЮЮ © (01.11.02 13:31)
>Чтобы лукап поля правильно рисовались во всём гриде
>LookupDataset должен содержать все необходимые записи.
Однозначно, это не так...:)
ЮЮ (2002-11-01 13:31:00) [11]Напрасно доверяешь нутру :-) Чтобы лукап поля правильно рисовались во всём гриде LookupDataset должен содержать все необходимые записи.
В гриде посредством родного лукапа ты нужного эффекта не добьёшься.
Johnmen (2002-11-01 13:21:00) [12]Пример здесь не поможет ничем...Общее направление :
1. Сбрасываешь все фильтры на свои НД "Вид товара", "Товар" (или рвешь связи Мастер-Детейл), короче на все, на которые есть лукап поля
2. Получаешь НД "Прайс"
3. Восстанавливаешь фильтры (связи)
PS Не забываешь, что свойство LookupCache=True
Shatun (2002-11-01 13:02:00) [13]Что то у меня не получается, если не влом вышли примерчик на мыло. А то я себя идиотом чувствую, нутром понимаю что это как то должно делаться, а третий день бьюсь, и нифига не выходит
Johnmen (2002-11-01 11:54:00) [14]свойство лукапного поля LookupCache
Shatun (2002-11-01 11:51:00) [15]А лучше раскажи поподробней.
Shatun (2002-11-01 11:46:00) [16]А не подскажешь где включить кеширование лукап поля.
Извени за тупой вопрос, но я новичек.
Johnmen (2002-11-01 11:02:00) [17]Это значит, что не всключено кеширование лукап поля...
Shatun (2002-11-01 10:56:00) [18]Если делаешь фильтр, или соеденяешь таблицы "Вид товара" с "Товар", а "Товар" соответственно с "Прайс", то подставное поле может не отражаться если выбрать другой вид товара.
Johnmen (2002-11-01 10:07:00) [19]Я не понял, причем здесь сортировка...
>...как сделать чтоб подставное поле...
Ставь фильтр на нужный код вида товара в НД "товар"...