powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird+MIDAS+IBExpress
6 сообщений из 6, страница 1 из 1
Firebird+MIDAS+IBExpress
    #32105325
Dust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил попробовать эту связку для своих задач. Пишу на 5-м С++ Билдере.

Получаем такую цепочку:
IBDatabase (+Def. IBTrans.)-> IBDataSource (+IBTrans.)-> DataSetProvider ->ClientDataSet ->DataSource ->DBGrid

Пока удаление, чтение, редактирование проходит нормально. Но, я хочу чтобы ключевое поле получалось в соответствии в генератором. Для этого в IBDataSource есть GeneratorField. Но - не работает оно. Ставлю на New Record, On Post - нифига. Пока ручками в DbGrid-e ID не поставишь - не добавляет.
Это четко видно SQLMonitorom.
В чем проблема - непойму, подскажите как правильно использовать GeneratorField в млем случае? Может это из-за MIDAS-а или еще чего?
...
Рейтинг: 0 / 0
Firebird+MIDAS+IBExpress
    #32105342
Привет!

Полная з%№;%:;ца с поддержкой генераторов через Мидас...

На community.borland.com поищи - там была статья как раз про IBX+MIDAS, но как обычно, работает только сам пример, а шаг вправо-шаг влево.

Имхо, самым верным и быстрым решением было бы написать функцию вида getGenID , расширяющую твой AppServer, внутри которой на сервере приложений происходил бы вызов

Код: plaintext
SELECT GEN_ID(my_gen,  1 ) FROM RDB$DATABASE


и которую ты бы дергал в ClientDataSet на событии OnNewRecord и заполнял свое ключевое поле.

Любые другие способы мне (имхо) кажутся непрозрачными и ненадежными в Мидас-приложениях.
...
Рейтинг: 0 / 0
Firebird+MIDAS+IBExpress
    #32105382
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно-точно. Получение следующего значения не в триггере, а в событии OnNewRecord - самое то. Особенно при связке мастер-деталь по этому полю, в этом случае очень желательно сразу знать его значение.
...
Рейтинг: 0 / 0
Firebird+MIDAS+IBExpress
    #32105419
Dust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если выкинуть МИДАС? Тогда пока DBGrid открыт висит транзакция на чтение, что мне кажется не очень правильно.

Как вообще ПРАВИЛЬНО строить приложение при работе с IB? Примерчик так сказать... Может кто поделится опытом?
...
Рейтинг: 0 / 0
Firebird+MIDAS+IBExpress
    #32105433
Dust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Потестил еще.... Выкинул мидас - работает классно, но транзакция "висит"....
Ставлю мидас - не работают генераторы. Все как у людей :)

Сделал как советовали - через процедуру (тяжко вздыхая) не изящно.....
Вот если бы немного поправить ClientDataSet, чтобы он нормально стал понимать генераторы (или провайдера).... Сырцы то вроде есть?
...
Рейтинг: 0 / 0
Firebird+MIDAS+IBExpress
    #32105624
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе же сказали, как работать с трехзвенкой.
Вообще говоря, двухзвенное и трехзвенное приложение строятся разными способами. Выбери, что же тебе требуется
PS Транзакция открыта не когда открыт DBGrid, а когда открыт запрос. В двухзвенных приложениях обычно делают CommitRetaining. Да и IBX в них не используют.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird+MIDAS+IBExpress
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]