Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: 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 вся ветка

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

Наверх




Память: 0.5 MB
Время: 0.038 c
2-1148235527
Василий Алибабаевич
2006-05-21 22:18
2006.06.11
работа со строкой


1-1146481260
Vir
2006-05-01 15:01
2006.06.11
многопоточность и общие переменные


2-1148269241
Raf
2006-05-22 07:40
2006.06.11
ACCESS


3-1145514966
vishnia
2006-04-20 10:36
2006.06.11
Индексы в Access


2-1148540655
rra
2006-05-25 11:04
2006.06.11
Ошибка закрытия основной формы из другой...