Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Транзакции в FIBPlus (БД FireBird 1.5)   Найти похожие ветки 

 
Iconka ©   (2004-09-02 11:44) [0]

Всем привет.
Расскажите как правильно работать с сабжем.
На таком примере: есть две таблицы - огранизации и счета. Связь master-detail по полю ID в организациях и ID_ORG в счетах. У каждой организации может быть несколько счетов.
Хотелось бы получить следующее: открывается окно создания организации. Заполняются поля. Так же можно создать несколько счетов (открыв еще одно окошко). Потом в ComboBoxe выбрать основоной счет. И все "то сохранить. Или отменить (созданные счета тоже).
Проблема номер один. Как получить значение ID организации если оно формируется в тригере BeforeInsert? Может по другому организовать?
Проблема номер два в полной отмене всех действий. Как правильно сконфигурировать TpFIBTransaction?


 
Роман Снегирев   (2004-09-02 11:51) [1]

номер один
select gen_id(имя генератора,0)+1 from RDB$DATABASE
номер два
привязывать датасеты организации и счета к одной транзакции и соответсвенно Commit или Rolback


 
Iconka ©   (2004-09-02 11:54) [2]


> привязывать датасеты организации и счета к одной транзакции
> и соответсвенно Commit или Rolback

Там есть Transaction и UpdateTransaction. Они должны быть одинаковые для них? Какие параметры указать в транзакции?


 
Роман Снегирев   (2004-09-02 12:03) [3]

тебе надо UpdateTransaction Она должна быть одинаковая для них


 
-SeM-   (2004-09-02 12:11) [4]

Роман Снегирев   (02.09.04 11:51) [1]

> select gen_id(имя генератора,0)+1 from RDB$DATABASE

Это может привести к неприятностям с несколькими клиентами. Лучше через хранимую процедуру. А если это ФИБ (судя по [2]), еще проще - смотри AutoUpdateOptions


 
Iconka ©   (2004-09-02 12:14) [5]


> А если это ФИБ (судя по [2])

Это FIB судя по названию темы :)


> Лучше через хранимую процедуру.

Это как? Подробнее объясни.


 
Sergey13 ©   (2004-09-02 12:24) [6]

2[1] Роман Снегирев   (02.09.04 11:51)
>select gen_id(имя генератора,0)+1 from RDB$DATABASE
А почему не
select gen_id(имя генератора,1) from RDB$DATABASE


 
-SeM-   (2004-09-02 12:26) [7]

Iconka ©   (02.09.04 12:14) [5]

> Это FIB судя по названию темы :)

Да уж ...

В базе создаем хранимую процедуру, возвращающую новое значение генератора через gen_id(имя генератора,1). Для его получения используй TpFIBStoredProc.
Но проще всего в AutoUpdateOptions TpFIBDataSet выставить опции: GeneratorName, GeneratorStep(если нужно), KeyFields, WhenGetGenID. Теперь при вставке сначала будет получено значение генератора и вставлено в ключевое поле.


 
Iconka ©   (2004-09-02 12:37) [8]


> >select gen_id(имя генератора,0)+1 from RDB$DATABASE
> А почему не
> select gen_id(имя генератора,1) from RDB$DATABASE

Ну я так понимаю в первом варианте мы получим значение и сделаем инкремент в программа, не изменяя значение генератора в БД.


 
Sergey13 ©   (2004-09-02 12:40) [9]

2Iconka ©   (02.09.04 12:37)
>Ну я так понимаю в первом варианте мы получим значение и сделаем инкремент в программа, не изменяя значение генератора в БД.
Это "мы" только "подумаем что сделаем". Так подумать могут многие.


 
Iconka ©   (2004-09-02 12:52) [10]

А как насчет параметров транзакции?
Сейчас у меня
read
read_committed
rec_version
nowait

Подойдет?


 
Роман Снегирев   (2004-09-02 13:29) [11]

read_committed


 
Zacho ©   (2004-09-02 20:17) [12]


> Iconka ©   (02.09.04 12:52) [10] [Новое
>сообщение][Ответить]
> А как насчет параметров транзакции?

Очень рекомендую http://www.ibase.ru/devinfo/ibtrans.htm

И не помешает всё остальное на http://www.ibase.ru/develop.htm

Например, http://www.ibase.ru/devinfo/generator.htm :-)


 
Астроном   (2004-09-03 08:43) [13]

Пришлите плиз FibPlus 5.3 на blot@amik.ru


 
Роман Снегирев   (2004-09-03 10:35) [14]

Пришлите плиз FibPlus 5.3 на blot@amik.ru
читай почту


 
Астроном   (2004-09-03 13:19) [15]

сенкс


 
Vasis   (2004-09-03 13:44) [16]


> Роман Снегирев   (03.09.04 10:35) [14]
> Пришлите плиз FibPlus 5.3 на blot@amik.ru
> читай почту

О! А это триал?
Вышлите и мне плиз... на vasis@pisem.net. Большое спасибо


 
Роман Снегирев   (2004-09-03 15:32) [17]

О! А это триал?
Вышлите и мне плиз... на vasis@pisem.net. Большое спасибо

нет это абсолютная халаява
читай почту


 
Vasis   (2004-09-03 16:14) [18]

Большое спасибо


 
Sergey13 ©   (2004-09-03 16:16) [19]

2[17] Роман Снегирев   (03.09.04 15:32)
>читай почту
А правила форума читать не пробовал?


 
Роман Снегирев   (2004-09-03 16:54) [20]

а зачем?



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.025 c
1-1095527219
Виньдовьсь 95
2004-09-18 21:06
2004.10.03
Приостановка программы


14-1095306382
KilkennyCat
2004-09-16 07:46
2004.10.03
Даж не верится...


1-1095685138
Геннадий
2004-09-20 16:58
2004.10.03
Самовольное завершение работы приложения


8-1088677157
leonidus
2004-07-01 14:19
2004.10.03
Как извлечь информацию из ID тэгов mp3-файлов


14-1094670385
Убить Билла
2004-09-08 23:06
2004.10.03
А что, собственно, хорошего в WinXp по сравнению с Win9x/Me?