Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.05.2013, 22:05   #1
Allant
 
Регистрация: 08.05.2013
Сообщений: 9
По умолчанию Как получать уникальные ID из генератора Firebird в среде программирования Lazarus.Язык Delphi

Здравствуйте.Задача следующая: есть база данных с кучей таблиц,СУБД-Firebird 2.5. Сейчас разрабатываю интерфейс для программы,и вот столкнулся с трудностями.Добавляться новые записи в таблицу у меня будут с кнопки.У меня есть автоинкрементное поле ClientID,так же в БД создан генератор gen_client_id.Так вот мне нужно,чтобы после нажатия на эту кнопку в DBGrid,в следующей строке,которая появляется для заполнения данными,в поле clientID автоматически подставлялся сгенерированный генератором id.
Причём насколько я понял, это можно реализовать несколькими путями.Можно через триггер,но,по словам одного знакомого программиста,это идея не самая правильная,потому что этот вариант подходит только если нужно сформировать уникальный номер и забыть про это поле,а вот отследить потом у какой строки таблицы какое ID потом будет вроде как нельзя.Есть ещё какой-то способ генерировать эти id.Пожалуйста,знающие люди,просвятите меня как же всё-таки правильно этим генераторов пользоваться, как их создавать и почему.Если можно,с примерами кода.

Последний раз редактировалось Allant; 08.05.2013 в 23:04.
Allant вне форума
Старый 08.05.2013, 22:22   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

А не надо его никому показывать, потому что никому он не интересен.
eval вне форума
Старый 08.05.2013, 23:06   #3
Allant
 
Регистрация: 08.05.2013
Сообщений: 9
По умолчанию

Хорошо,больше не показываю).Но на вопрос-то ответите?
Allant вне форума
Старый 09.05.2013, 12:57   #4
Allant
 
Регистрация: 08.05.2013
Сообщений: 9
По умолчанию

Уважаемые профессионалы,так что,неужели никто не скажет как сделать счётчик во моей ситуации?
Allant вне форума
Старый 09.05.2013, 18:30   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то я не пойму, если у тебя есть автоинкрементное поле, то оно же должно само на автомате получать значение из генератора?
I'm learning to live...
Stilet вне форума
Старый 09.05.2013, 18:36   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

http://yandex.ru/sitesearch?text=Fir...&l10n=ru&web=0
eval вне форума
Старый 09.05.2013, 23:51   #7
Allant
 
Регистрация: 08.05.2013
Сообщений: 9
По умолчанию

Цитата:
Что-то я не пойму, если у тебя есть автоинкрементное поле, то оно же должно само на автомате получать значение из генератора?
Не совсем верно сформулировал,извините.Поле ClientID должно работать как автоинкрементное.Тоесть оно на автомате значения из генератора не получает,эти значения нужно сначала в генераторе создавать, и потом в это поле посредством Delphi как-то подставлять.Вот я и хочу понять как.

Судя по ссылке от eval, это можно сделать триггером,процедурой и оператором Select. Написано что селектом удобнее,если планируется потом эти сгенерированные значения ещё использовать и отслеживать.А как это в Delphi реализовать,если привязывать процедуру создания нового поля и вставки нового сгенерированного значения,скажем,к кнопке "создать запись"?
Allant вне форума
Старый 10.05.2013, 00:18   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

открыл все буквы не смог отгадать слово?
что не понятно?
прежде чем создать запись надо узнать будущий ид
в каждом конкретном случае поступают по разному
eval вне форума
Старый 10.05.2013, 01:10   #9
Allant
 
Регистрация: 08.05.2013
Сообщений: 9
По умолчанию

Цитата:
что не понятно?
Непонятно,например, как узнать будущий ид и как будет лучше и правильнее поступить в моём конкретном случае,который был описан в самом первом посте.Какой должен в итоге получиться код процедуры,которая при добавлении в BDGrid новой записи будет автоматически подставлять новый сгенерированный ид.
Allant вне форума
Старый 10.05.2013, 01:27   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
как узнать будущий ид
Код:
GEN_ID(generatorname, inc_value)
у вас же можно сделать по разому, запросить новый ид у базы, потом отправить его в инсерте, или сделать инсерт, при этом тригером подставить новый ид, потом запросить у базы чего он атам вставила, либо в процедуре вставки взять новый вставить отдать клиенту.
какой вам больше приглянулся?
eval вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать свой язык программирования? future7 Свободное общение 19 05.05.2015 01:08
Составить приложение в среде Delphi (Lazarus) Novenki Помощь студентам 2 21.04.2012 13:12
Несколько условных операторов. Язык программирования Delphi 7 ZigFree Помощь студентам 0 27.12.2010 20:03
Вспомогательное окно!!! Язык программирования Delphi!!! S_Yevgeniy Помощь студентам 19 29.10.2009 15:29