![]() |
|
|
![]()
|
|
| magnatua |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 4.2.2007 Репутация: нет Всего: нет |
У меня в таблице есть поле ID - автоинкримент, с помощью триггера и генератор получает значение.
Но значение заносится, только после метода ITable.Post; А мне нужно узнать какое будет значение до поста :( Может кто-то сталкивался с такой проблемой? |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
| magnatua |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 4.2.2007 Репутация: нет Всего: нет |
Akella, спасибо большое! Но как это мне сделать из Delphi? Использую стандартные компоненты InterBase.
Может вопросы мои не корректны или ламеркские, но я просто не знаю, где еще спросить! |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
сначала подумал: отличная идея. но есть вероятность, что полученное значение окажется неверным. имхо, лучше так не делать. У IBDataset-а - есть свойство GeneratorField. Там можно указать имя генератора и в какой момент получать значение: OnPost - значение ID генерируется во время Post OnNewRecord - значение ID генерируется для каждой новой записи Never(или OnServer) - IBDataset не будет дёргать генератор Тебе нужен OnNewRecord. п.с. пишу по памяти, так что могу ошибиться с названиями. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
это не имхо, это горькая правда.
Если будут работать несколько клиентов, то значение генератора может измениться, причем вероятность такого растет в геометрической прогрессии при увеличении кол-ва пользователей и увеличении времени между insert и gen_id(..., 0) -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| magnatua |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 4.2.2007 Репутация: нет Всего: нет |
Ребятки, спасибо большое! Вы очень и очень сильно помогли!
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
согласен с участниками дискуссии, однозначно то, что может получиться так: первый пользователь узнал значение второй пользователь добавил запись первый пользователь при добавлении записи получит исключение этого не нашёл Это сообщение отредактировал(а) Akella - 28.10.2008, 21:21 |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
Писал по памяти, вот и напутал. Вот как они на самом деле называются: GeneratorField.ApplyEvent:TIBGeneratorApplyEvent
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |