26.07.2002, 17:31 | #1 |
Moderator
|
Поиск в Grid по полю из другой таблицы
Здравствуйте!
Есть 2 таблицы, первая содержит поле (код) из второй. В гриде - записи из первой таблицы. Как реализовать сабжевый поиск/фильтрацию, например, по названию из второй таблицы? Если используется display-метод, то по умолчанию не работает (может, кто-то знает, как сделать?). Пробовал помещать поле Название из 2-го datasource, связанного InnerJoin`ом с 1-м, в грид, но при этом начинаются глюки при создании в форме новой записи. Сложный фильтр (через Ctrl+F3) не предлагать , нужно все прямо на форме.
__________________
Андрей. |
|
26.07.2002, 20:01 | #2 |
Участник
|
Попробуй сделать специальный функционал по добавлению новой записи, типа кнопочку "Добавить.." сбоку пририсовать.
Так уберешь (или добавишь ) глюки по добавлению новой записи. А все остальное, как ты написал. |
|
29.07.2002, 12:51 | #3 |
Участник
|
Самое главное, не забудь, что у пользователя может и не быть прав на вторую таблицу
А также не забудь, что вторую таблицу могут и выключить. Ну и так далее. |
|
31.07.2002, 18:41 | #4 |
Moderator
|
Глючит мой способ. Тут обнаружил после создания очередной записи (создание новой записи сделал через отдельную форму), что эта самая УЖЕ СОЗДАННАЯ запись появляется в форме НЕ СРАЗУ после ее (формы) открытия, а лишь после каких-либо манипуляций в форме, скроллирования записей и т.д. Че-то с этим InnerJoin'ом не так...
__________________
Андрей. |
|
31.07.2002, 20:01 | #5 |
Участник
|
И reread() на datasource не помогает?
---------- from Developer's Guide If you want to refresh the form with records that were inserted in a method or job that was called, then you should use research ---------- |
|
31.07.2002, 20:06 | #6 |
Moderator
|
Дык, вновь созданная запись-то появляется в форме, а когда форму закрыл-открыл - нету записи . Поскроллировал - появилась...
__________________
Андрей. |
|
31.07.2002, 20:42 | #7 |
Участник
|
Может это с кэшированием одной из таблиц связано... Посмотри что там у них в свойстве caheLookup, может с ним надо поиграться.
А я вот быстренько накидал примерчик: в форме отображается созданная таблица с полем типа ItemId и innerJoin на InventTable. Если в свойствe Mandatory поля ItemId стоит yes, то все работает на ура без всяких кнопочек. может я чего недоглядел? |
|
01.08.2002, 11:07 | #8 |
Moderator
|
Попробовал тоже быстренько набросать примерчик с InventTable... Ну не создает новую запись без кнопки, хоть ты тресни... Пытается, судя по сообщениям об ошибке, создать запись также и в InventTable, хотя на InventTable_DS запрещено создание записей. Вот, можете полюбоваться...
__________________
Андрей. |
|
01.08.2002, 13:02 | #9 |
----------------
|
Предлагаю перекрыть modified на поле ItemId
PHP код:
|
|
01.08.2002, 16:36 | #10 |
Moderator
|
О пропадании записей в гриде.
Оказывается, в пропадании записей виновато магическое сочетание "использование InnerJoin и окрашивание записей в разные цвета" (метод displayOption() на DataSource)!
Причем пропадание записей на форме наблюдалось только если все записи сразу не отображались при открытии (не влезали в форму). Ну и до кучи, пропадали только записи начиная с 20-й по счету (независимо от размеров формы)! Сильно? Убрал цветовую раскраску - пока все работает.
__________________
Андрей. |
|