EhLib - список, що випадає в гриді
Народ, я знаю, що багато хто користується бібліотечкою EhLib - тому питання, як організувати випадають списочки (і навіть гриди, як у прикладі)? Справа в тому, що в демо-прикладі це робиться з успіхом, але постарити цей успіх я ніяк не зміг.
Точно не пам'ятаю, але по-моєму потрібно саме поле в TTable налаштувати як Lookup. У таблиці для колонки заповни поле LookupDisply. Може, ще чого. не пам'ятаю. Я теж до цього дійшла шляхом проб.
Створіть у своєму датасеті lookup-поле, його та показуйте у гриді Подробиці - F1 + lookup fields
З приводу того, що створити треба в датаСете лукап поле це я зрозумів. Тільки ось не виходить скомпонувати. У налаштуванні лук поля беруть участь чотири проперти KeyFields, LookupKeyFields, LookupResultField, LookupDataSet. Кручу верчу ними і ніяк не можу підібрати. Ось, наприклад, кість у мене табличка tParent(parent_id, parent_name) і табличка tChild(child_id, child_name, parent_id). Хочу в гриді показувати табличку tChild таким чином, щоб дома поля parent_id бачити список батьків, але ідентифікатори підставлялися б автоматически.
KeyFields - (tParent)parent_id LookupKeyFields - (tChild)parent_id LookupResultField - (tChild)child_name LookupDataSet - tChild
Невже цього немає у довідці до D7? Чи мовний бар'єр? :)
Та в тому й річ, що є. І саме так я й робив. А не працює. :(
Бути не може :) Як створюєте lookup-поле? У гриді показуєте саме його (а чи не поле з ідентифікаторами)? СУБД яка? Компоненти доступу
СУБД = MS SQL Server компоненти доступу =АДО Лукап поле створюю як слід - припустимо є qChild:TADOQuery;
У ньому додаю поле parent_name_1 з типом fkLookup. Виставляю все, як Ви сказали в пості 4. У гриді це поле показую - і нічого не відбувається. Грид не продуплюється, що поле це лукапове. :(
Хоча стоп. За Вашим постом 4 виходить, що лукапове поле чомусь створюється в датаСете tParent і проперте LookupDataSet = tChild і відповідно LookupResultField = (tChild)child_name. Мені потрібно, щоб випадав список батьків і в гриді, я вибирав батька дитині, а значить лукапове поле має створюватися в датаСете tChild і відповідно LookupDataSet = tParent і відповідно LookupResultField - (tParent)parent_name. Не зрозумів і це може стати ключем до розгадки?
sorry, під кінець дня мене переклинює :( Вам потрібно відобразити tChild, а значення для lookup-а взяти з tParent, так? Тоді створюємо lookup-поле в tChild і: KeyFields - (tChild)parent_id LookupKeyFields - (tParent)parent_id LookupResultField - (tParent)parent_name LookupDataSet - tParent
Ну так - так ось така штуковина не оре : (
Тобто. не виводяться назви з LookupDataSet? Дивно. Щоправда, з ADO мені працювати не доводилося, але з BDE/IBX/FIBPlus це працює як годинник. Схоже, це якийсь ADO-шний нюанс, і тут я нічим допомогти не можу: (Хіба що спробуйте (шаманство, звичайно) глянути у бік TField.LookupCache).
Навздогін - спробуйте поставити це питання в "Базах", там багато фахівців з ADO
Спасибо большое. Копатиму :)