Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.021 c
2-1148639361
Туч
2006-05-26 14:29
2006.06.11
какой выбрать драйвер/сервер для базы данных


2-1148641158
Megabyte
2006-05-26 14:59
2006.06.11
Форматирование строки в дату


2-1148704224
Ezorcist
2006-05-27 08:30
2006.06.11
Значение переменной "по-умолчанию"))))


8-1134483031
calmterror
2005-12-13 17:10
2006.06.11
Визуализация звука


15-1147634815
Kolan
2006-05-14 23:26
2006.06.11
А как и где выложить Веб приложение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский