Вниз
Скачать: CL | DM;

Вопрос по генераторам   Найти похожие ветки 

← →
Alpine   (2006-05-25 13:55) [0]

Доброго времени суток. Как программно установить текущее значение в генераторе ? Вобщем мне нужно, чтоб когда значение в генераторе доходило до 200, оно скидывалось опять на 0.

Заранее благодарен.


← →
Desdechado ©   (2006-05-25 13:58) [1]

SET GENERATOR gen TO 0


← →
unknown ©   (2006-05-25 13:59) [2]

IBSQL1.SQl.Text:="SET GENERATOR GEN_MY_ID TO 0";
IBSQL1.ExecQuery;
Это программно.
А автоматом можно и в хп/триггере :
if (Gen_id(gen_my_id,0)>=200) then
execute statement "SET GENERATOR GEN_MY_ID TO 0";


← →
Sergey13 ©   (2006-05-25 14:00) [3]

2 Alpine   (25.05.06 13:55)
Сдается мне - ты как то неправильно используешь генератор. 8-)


← →
Desdechado ©   (2006-05-25 14:02) [4]

unknown ©   (25.05.06 13:59) [2]
коряво и не во всех версиях работает
сбрасывать проще gen_id( genNAME, -gen_id( genNAME, 0 ) )

но что-то я склоняюсь к [3]


← →
Alpine   (2006-05-25 14:26) [5]

2 unknown

Вы не могли бы поподробнее, как сделать такой тригер ? Я вашим примером пользуюсь выдаёт ошибку.

Делаю так

if (gen_ord_schet(gen_ord_schet,0)>=200) then
execute statement "SET GENERATOR gen_ord_schet TO 0";

Этот тригер перед вставкой.


← →
Alpine   (2006-05-25 14:28) [6]

2 Desdechado

gen_id( genNAME, -gen_id( genNAME, 0 ) ) - Это триггер ?

Gen_id - это я как понимаю нужен ещё один триггер, а genName - это мой триггер. Правильно ?


← →
Sergey13 ©   (2006-05-25 14:39) [7]

Gen_id - это функция.

ЗЫ: Я укрепляюсь в подозрении из [3]. 8-)


← →
unknown ©   (2006-05-25 14:40) [8]


> Alpine   (25.05.06 14:26) [5]

В [4] более правильный вариант :)

> Alpine   (25.05.06 14:28) [6]

Gen_id - это не триггер, это встроенная функция, с помощью которой
производятся манипуляции со значениями генераторов.
genName - тоже не триггер а имя генератора.
т.е д.б. :
if (gen_id(gen_ord_schet,0)>=200) then
gen_id( gen_ord_schet, -gen_id( gen_ord_schet, 0 ) );


← →
Alpine   (2006-05-25 14:58) [9]

2 unknown

Сделал триггер после вставки

if (gen_id(gen_ord_schet,0)>=200) then
gen_id( gen_ord_schet, -gen_id( gen_ord_schet, 0 ) );

Выдаёт ошибку

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, char -1.
gen_id.

Что делать ? (


← →
unknown ©   (2006-05-25 15:03) [10]

CREATE TRIGGER xxx FOR xxx
ACTIVE AFTER INSERT POSITION 0
AS
declare variable i integer;
begin
if (gen_id(gen_ord_schet,0)>=200) then
   i=gen_id( gen_ord_schet, -gen_id( gen_ord_schet, 0 ) );
end


← →
Desdechado ©   (2006-05-25 15:27) [11]

автор, природу таких махинаций не разъяснишь?
а то что-то веет душком от них нехорошим...
может, посоветуем более правильное решение


← →
Alpine   (2006-05-25 15:33) [12]

Вобщем в бухгалтерии есть такая фишка: бывают такие счета, у которых макс номер =200, а потом опять с 1 начинаются.


← →
Sergey13 ©   (2006-05-25 15:38) [13]

2[12] Alpine   (25.05.06 15:33)
Я не уверен все ли ты правильно понял в бухгалтерии. Что за счета такие? Балансовые? На оплату?
Номера документов лучше заполнять не генератором, а max()+1 или чем то таким. Генераторы - они в основном для кодов.


← →
Alpine   (2006-05-25 15:46) [14]

2 Sergey13

Я с тобой полностью согласен. Но наше дело малое, удовлитворить клиента )) Им так надо .. Им понравилось )) ...


← →
Sergey13 ©   (2006-05-25 15:51) [15]

2 [14] Alpine   (25.05.06 15:46)
Удовлеворяя клиента - помни, как бы он потом тебя не удовлетворил извращенным способом, когда выяснится, что вы друг друга не поняли. 8-)


← →
Alpine   (2006-05-25 16:02) [16]

2 Sergey13

Да вроде я им всё показал и всё нравится )) .. Ну живы будем не помрём ... Посмотрим )) ... ВСЕМ ОГРОМНОЕ СПАСИБО !



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
3-1145287275
Рустем
2006-04-17 19:21
2006.06.11
Неправильно осуществляется поиск в таблице...


2-1148287944
WebSqlNeederr
2006-05-22 12:52
2006.06.11
Как разбить строку по разделителю ""


15-1147954038
Udaff
2006-05-18 16:07
2006.06.11
Разрезание пазлов


15-1147636626
Gero_
2006-05-14 23:57
2006.06.11
Вопрос к пользователям клиентских программ для форума


2-1148815472
Ntea-pot
2006-05-28 15:24
2006.06.11
описание класса




   Наверх