![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| DIvan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.8.2004 Репутация: нет Всего: нет |
Господа!
Стоит тривиальная задача: связать две таблицы по индексному полю так, чтобы вместо индекса на гриде появлялся ComboBox со значениями из второй таблицы. Использую mySQL server и Delphi 7 с установленными компонентами DAC for mySQL + Express QuantumGrid 4. Первая мысль была связать таблицы по lookup`у, используя обычный DBGrid и FieldsEditor таблицы БД. Все работает, но сильно тормозит в момент загрузки формы. Вторая мысль - использовать свойство QuantumGrid , позволяющее придать любому столбцу вид того же LookupComboBox. Все работает, но тормозит при попытках сортировки по lookup-полям. Чем полей больше, тем тормоза сильней. Всего полей 12 + 5 lookup. Была попытка также связать таблицы, пользуясь первым методом, но применяя для отображения QuantumGrid. Теперь тормоза на входе в форму (около 5 сек.), зато сортировка и вообще работа с таблицей стала работать нормально. Последняя мысль - использовать SQL запросы. Таблица формируется мгновенно, но мен нужна еще возможность редактирования, в т.ч. подстановка из связанных словарей. Тормоза наступили (а как же без них? )) в момент заполнения списка ComboBox, в который я превратил индексное поле таблицы. Так что же это получается? Или я где-то не прав (на что и надеюсь), или lookup поля вообще нет возможности использовать, если их в таблице больше одного?! Большая просьба, помогите разобраться! |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Код непомешало бы показать.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| DIvan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.8.2004 Репутация: нет Всего: нет |
Дело в том, что и кода-то никакого нет. Я просто связывал две таблицы при помощи визуальных средств (в данном случае, lookup). Если вопрос о коде SQL запроса - тут все в порядке, я проверял. Что же до кода заполнения ComboBox - его могу привести: begin cxGrid1DBTableView1FLAG.PropertiesClass:=TcxComboBoxProperties;//Теперь это ComboBox mySQLQuery2.SQL.Clear; mySQLQuery2.SQL.Add('SELECT name_ru FROM `dict_country`'); mySQLQuery2.Open; mySQLQuery2.First; for i :=1 to mySQLQuery2.RecordCount do begin TcxComboBoxProperties(cxGrid1DBTableView1FLAG.Properties).Items.Add(mySQLQuery2.Fields.Fields[0].AsString);//Вот так я их и добавляю. Так в хелпе ExpressQuantumGrid прописано mySQLQuery2.Next; end; end; |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
простейший ( IMHO ) вариант -- написать компонент-подобие TDBMemo ( или другой ); присобачить его DataSet' у первой таблицы и при срабатывании делать запрос на выборку из второй таблицы по индексу первой
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| vandal |
|
|||
|
Unregistered |
Quantum Grid... Не знаешь, его можно использовать как просто грид(не для БД)?
|
|||
|
||||
| DIvan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.8.2004 Репутация: нет Всего: нет |
Да, конечно. В пакете есть как БД-, так и просто компоненты. Возможностей море, см. хелп и экзамплы. Ищи перепакованый пакет на www.forum.ru-board.com |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |