Страница 1 из 1

Текущая запись TIBDataSet

Добавлено: 28 апр 2005, 05:48
Solo
Извиняюсь за возможную наивность вопроса :oops: , просто начал с IB недавно работать. Также имею наглость просить не советовать FIBPlus. Допускаю, что вещь замечательная, но за неимением гербовой пишем на клозетной. И вообще, не очень люблю добавочные компоненты, кроме EhLib и Rx. Итак:

Имеем TIBDataBase, TIBDataSet, TIBTransaction, DataSource и DBGridEh. TIBDataSet является мастером по отношению к другим TIBDataSet (master-detal по полю ID). Ну это так, на всякий случай говорю. Вряд ли это влияет.

В свойстве TIBDataSet.SelectSQL:

Код: Выделить всё

SELECT * from THEMAIN WHERE (TREELEVEL = 0 OR  TREELEVEL = 2)
ORDER BY NAME /*сортировка по стринговому полю "Name"*/
- можно догадаться, что таблица построена по принципу дерева, где есть ID и IDParent. Только в каждом отборе по уровню дерева 1, 2 или 3 (уровни сидят в поле TREELEVEL) добавляется и уровень 0 - строчка, добавленная при создании базы и имеющая в поле "Name" всего две точки "..". При отборе эти две точки из-за сортировки всегда будут вверху, как в списке WindowsCommander.

При DblClick на строке DbGridEh проверяется уровень, и осуществляется отбор по этому уровню плюс опять же нулевой уровень, чтобы две точки опять оказались наверху. Если даблклик производится по верхней строчке (по двум точкам), то производится "выход наверх", то-есть отбор по предыдущему уровню.

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

Вчера весь вечер прощелкал впустую. Помогите, а?

Добавлено: 29 апр 2005, 04:37
Solo
Вчера посидел еще, выяснил, что если перенести компоненты IBX из Дата-модуля в форму с гридом, то все становится на свои места. А можно не переносить, а обращаться к TIBDataSet'у не по имени

Код: Выделить всё

DataModul.IBDataSet1FieldName.asInteger
, а по цепочке:

Код: Выделить всё

DBGrid.DataSource.DataSet.FieldByName("FiekdName").asInteger...
Тогда тоже все в порядке. Хм...[/code]