Страница 1 из 1

установка генератора ч-з параметр TpFIBDataSet

Добавлено: 24 май 2006, 18:13
mdfv
ч-з TpFIBDataSet получается значение генератора
и должно устанавливаться здесь же, но не хочет.

SelectSQL := 'select GEN_ID(GEN_NPP,0) as GENPP from RDB$DATABASE'
UpdateSQL := 'set generator GEN_NPP to :GENPP';

пытаюсь подставить значение ч-з FieldByName('GENPP').AsInteger:=1234;
и при выполнении ругается на ':' , FIBPlus ,насколько я понял, не находит ключевых слов update,insert,delete и подстановку параметра не производит.

Вручную формиравать запрос не хочу, т.к. он хранится в базе и может быть со временем переделан на что-нибудь другое и возможно безгенераторное.

Можно-ли обойти эту проблему?

FIBPlus 6.4.1

Добавлено: 24 май 2006, 18:34
kdv
параметры в set generator использовать нельзя.
используй макросы FIBPlus.

Добавлено: 15 июн 2006, 18:21
WildSery
UpdateSQL:='select GEN_ID(GEN_NPP, z(:GENPP)-GEN_ID(GEN_NPP, 0)) from RDB$DATABASE'
где z() - стандартная функция из rfunc
Можно использовать любую UDF, возращающую нужное значение.
Без UDF у меня не получилось передать параметр - ругается на "Data Type Unknown", даже с CAST(:GENPP as integer)

Добавлено: 16 июн 2006, 02:28
CyberMax
Зачем тебе прямо в программе менять значение генератора?

Добавлено: 16 июн 2006, 08:02
SAMZ
CyberMax писал(а):Зачем тебе прямо в программе менять значение генератора?
Бывает необходимо менять значение генератора при конвертации данных. В этом случае можно в тексте SQL вместо параметра забивать необходимое значение. Котороче формировать текст SQL в тот момент, когда это необходимо и с необходимым значением параметра

Добавлено: 16 июн 2006, 08:08
CyberMax
Отдает каким-то извращением... Можешь привести конкретный пример данной необходимости?

Добавлено: 16 июн 2006, 09:21
SAMZ
CyberMax писал(а):Отдает каким-то извращением... Можешь привести конкретный пример данной необходимости?
Ну, вот, сразу и извращенцем назвали.
Сейчас за давностью лет до деталей не вспомню, но ситуация была такая. переводил БД из Paradox в IB. При конвертации таблиц необходимо было обеспечить точное соответсствие первичных ключей.
Самым удообным оказалось при вставке записей в IB таблицы не назначать новый ключ по генератору, а присваивать ему значение из соответствующей старой таблицы. После заливки в IB таблицы проверяются мах значения ключей и назначаются значения генераторам.
С чем могу согласиться, - это исключительная ситуация и при нормальной работе с БД не встречается.

Добавлено: 16 июн 2006, 10:07
mdfv
CyberMax писал(а):Зачем тебе прямо в программе менять значение генератора?
Номер формируемого платежного поручения например для оправки в ч-з клиент-банк, в нем кроме всего прочего вручную платежки клепают или из других программ подгружают, а нумерация не должна пересекаться с моей программой, да и в начале года нумерацию можно обнулить.
ЗЫ. Сделал установку генераторов ч-з макросы.

Добавлено: 16 июн 2006, 18:14
CyberMax
SAMZ писал(а):После заливки в IB таблицы проверяются мах значения ключей и назначаются значения генераторам.
А, тогда другое дело :).