Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по генераторам / 25 сообщений из 53, страница 1 из 3
17.02.2004, 16:40
    #32412375
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
мне нужно получить текущее значение генератора в ХП, делаю gen_id(name_gen,0), но есть вопрос, можно ли задать вместо name_gen входной параметр gen_id(:par,0) не проходит.
...
Рейтинг: 0 / 0
17.02.2004, 16:43
    #32412384
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Ну раз не проходит, значит нельзя. Используй EXECUTE STATEMENT...
...
Рейтинг: 0 / 0
18.02.2004, 11:47
    #32413210
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
>VF

А зачем его вообще получать ? Может не туда роешь...:)
...
Рейтинг: 0 / 0
18.02.2004, 12:53
    #32413363
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
с использованием генератора и триггера обновляется первичный ключ, сразу после вставки нужно получить значение этого ключа (последнее, т.е. значение генератора), вот для этого используется ХП, которая и возвращает зн. генератора, можно сделать для каждой таблицы свою ХП, но вот если бы имя генератора передавать как параметр, тогда одной ХП хватило бы...
...
Рейтинг: 0 / 0
18.02.2004, 12:57
    #32413371
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
VFсразу после вставки нужно получить значение этого ключа (последнее, т.е. значение генератора)
Верный способ наступить себе на яйца.
Получать нужно ДО вставки и не текущее, а ИНКРЕМЕНТНОЕ .
...
Рейтинг: 0 / 0
18.02.2004, 12:59
    #32413381
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Неправильно делаешь. Т.к. между твоей вставкой и твоим получением генератора кто-то другой страждущий может вставить своё... И ты получишь не то, что хотел...
Правильно так: получить очередное зн.ген-ра (будешь его знать) и потом уже вставить... :)
...
Рейтинг: 0 / 0
18.02.2004, 13:05
    #32413392
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
так сначала делается вставка, потом делается gen_id(gen_name,0) и это всё хозяйство в рамках одной транзакции, что может и не пройти?
...
Рейтинг: 0 / 0
18.02.2004, 13:08
    #32413401
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Генераторам, грубо говоря, начхать, на твои рамки транзакции.
Они ВНЕ КОНТЕКСТА транзакций.
...
Рейтинг: 0 / 0
18.02.2004, 13:11
    #32413415
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
понял исправлюсь...
...
Рейтинг: 0 / 0
18.02.2004, 13:13
    #32413420
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Ему ведь это скорее всего нужно для того чтобы запись обновить... В принципе если у него пару раз за 100 лет неправильное значение вернёться, то с этим жить можно

2 VF:
Если ты обновляешь записи таким макаром, то лучше заведи табличку отдельную и регистри там все обновления таблиц и посылай из триггеров событие какое-нибудь клиентам - так, мне кажется, будет вернее для многопользовательского доступа.
Можно ещё попробовать генерить имя события, а на клиенте ловить все события, парсить их и обновлять те данные, которые нужно. Но это всё теория опять же - на практике я так не пробовал делать...
...
Рейтинг: 0 / 0
18.02.2004, 13:17
    #32413436
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
2 Gold
так работает сейчас с отдельной таблицей, но там уже было дело с неправильным значением, не есть гуд это...

вообще тогда поменяю вопрос: как встать в гриде (дельфи) после инсёрта на только что вставленную запись, вот для чего это нужно, локейт встаёт на запись на которой стояли до вставки, вот в чём проблема...
...
Рейтинг: 0 / 0
18.02.2004, 13:20
    #32413449
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
у меня на FIBPlus таких проблем нет - всё само правильно позиционируется.
Ты наверное на IBX работаешь. Когда-то я на них тоже работал и припоминаю что у них была такая бага. Попробуй найти более новую версию IBX...
...
Рейтинг: 0 / 0
18.02.2004, 13:21
    #32413454
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Delphi 7, то что в комплекте...
...
Рейтинг: 0 / 0
18.02.2004, 13:26
    #32413474
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Ты ж пойми, IBX - это не BDE тебе и Locate здесь перебирает все записи. К тому же в IBX, если мне память не изменяет, нельзя полностью события скрола отключить как в FIBPlus со всякими DisableScrollEvents и т.п., т.е. если у тебя есть дочерняя таблица, то locate вобще медленно работать будет.
Я б тебе посоветовал выкинуть IBX и мигрировать на FIBPlus - они того стоят...
...
Рейтинг: 0 / 0
18.02.2004, 13:30
    #32413478
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Вся разница в том, что в FIB+ можно неявно получать очередное значение генератора и невно же вставлять. В IBX - нет такой функциональности. Посему надо получать явно очер.зн.ген.
...
Рейтинг: 0 / 0
18.02.2004, 13:32
    #32413491
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Ой! А куда дели? Всегда была, а тут вдруг нету?..
...
Рейтинг: 0 / 0
18.02.2004, 13:34
    #32413498
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
2 Gold
если бы я был один...другие не будт переходить...
...
Рейтинг: 0 / 0
18.02.2004, 13:46
    #32413537
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Ну тогда попробуй в триггере что-то типа:
POST EVENT 'TABLE_1:'||NEW.ID;
Потом лови это на клиенте, парси и делай обновление.

Ещё, как вариант, самому поправить исходники IBX.
...
Рейтинг: 0 / 0
18.02.2004, 13:57
    #32413563
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Кого править, хлопцы?!
Или вы считаете, что проперть GeneratorField придумал Буззаджи с Востриковым?!
...
Рейтинг: 0 / 0
18.02.2004, 14:07
    #32413601
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
2 Мимопроходящий
это Ты к чему???
...
Рейтинг: 0 / 0
18.02.2004, 14:12
    #32413615
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
А это я про то, что в IBX есть свойство такое, спЕцательное.
GeneratorField называется.
Которое тебе как раз и нужно пользовать.
...
Рейтинг: 0 / 0
18.02.2004, 14:14
    #32413618
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
а по подробнее, если можно...
ЗЫ очень стыжусь своей некомпетентности и жуткой лени...
...
Рейтинг: 0 / 0
18.02.2004, 14:16
    #32413622
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Была в IBX бочина что после вставки текущей записью была не вставленная, а другая какая-то (то ли первая, то ли предыдущая). Ключевое поле нормально заполнялось генератором, указанным в GeneratorField, но после выполнения Post курсор почему-то перескакивал на другую запись.
Насколько я понял VF именно на это наступил... Не думаю что он не заметил существование свойства GeneratorField
...
Рейтинг: 0 / 0
18.02.2004, 14:19
    #32413626
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Есть ? Да, действительно есть. Спасибо старине Джеффу :) , большому любителю багофич и просто багов...
Хотя может и работает оно там...
...
Рейтинг: 0 / 0
18.02.2004, 14:23
    #32413638
kata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по генераторам
Кто не знает, есть ещё такой трюк

type
THack = class(TIBCustomDataSet)
end;

...

THack(taJournal).GeneratorField.Field := 'id';
THack(taJournal).GeneratorField.Generator := 'ID_GEN';

если taJournal типа TIBTable а не TIBDataSet
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по генераторам / 25 сообщений из 53, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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