Здравствуйте Saddam, Вы писали:
S>Пардрон, BCB.
Ну, я что-то такое подозревал...
S>Собственно, это значит отношение "один ко многим" и его реализация в Inprise-продуктах. S>Днло в том, что в Imprise-продуктах есть понятие Master DataSet и Detail DataSet, соответсвенно с угазанием ключевых полей по которым производится связка. Насколько я понял — здесь это можно реализовать толкьо парамсетризованными фильтрами.
Ну, я что-то такое подозревал. Насколько я понимаю, подобные механизмы все же реализованы средствами самих СУБД, точнее систем, которые собственно и служат "прослойкой" между самой БД и пользователем — это, например, Visual FoxPro или тот же Delphi. Или какой-то компонент ActiveX. А может я просто не знаю, как это реализовать средствами ODBC.
Суть, насколько я понимаю, в том, чтобы при перемещении по одному курсору другой динамически формировался в соответствии со связью "один ко многим". Интересно, конечно, как именно это реализовано в том же Delphi, но я, пожалуй, не вижу другого способа, кроме как каждый раз перегружать дочерний курсор. А может это все же уже реализовано: попробуйте копать в сторону библиотеки курсоров ODBC.
TL>>Курсор в принципе имеет записей от нуля до в общем бесконечности. Что означает "подфенчивать по ходу пьесы"? S>Это значит, что когда я делаю MoveNext, на сколько я понял, ODBC будет запрашивать сервер о следующем поле. Т.е. — 1операция=1запрос, что, как мне кажется несколько напряжно и для сети, и для сервера.
Вы поняли совершенно правильно: в обычном режиме MoveNext(...) будет идти к драйверу, а тот может к серверу и говорить "еще". Если больше нет — значит выбрали все строки курсора. Но можно сделать и несколько иначе: если Вам точно нужно загрузить весь курсор и Вы опасаетесь за излишнюю нагрузку на сеть, Вы можете заставить ODBC грузить записи блоками. Где смотреть? Один момент... Ну да: SQLSetSTMTAttr(...), а именно атрибуты SQL_ATTR_ROW_BIND_TYPE, SQL_ATTR_ROW_ARRAY_SIZE и тому подобные. В MSDN об этом сказано очень много и вполне доходчиво. Кстати, MFC также поддерживает этот механизм в своем CRecordset, правда, не на уровне Колдунов...
S>Появился еще один вопрос: есть-ли ODBC-драйвер для IB Database кроме Intersolv-а? А-то у меня не получилось его заставить работать в режимах кроме forvardOnly :(.
Это, скорее всего, к самому InterBase... Кстати, никто не знает каких-то официальных координат InterBase или как там сама контора называется?