Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Delphi

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 15.11.2007, 17:12   #1
Неактивный пользователь
 
Пол:Мужской
Регистрация: 04.11.2007
Адрес: Миасс
Сообщений: 35
Репутация: 7
По умолчанию Firebird (работа с базой данных из Delphi)

Господа, подскажите решение такого вопроса:
На delphi создана программа, которая добавляет записи в таблицу. В таблице есть поле ключевое (например NUM_1), которое содержит порядковый номер записи. Как сделать, чтобы при добавлении новой записи через IBQuery, увеличить порядковый номер на 1.

Я делал следующим способом, через запрос, переходил к последней записи и смотрел её номер, а при ставке новой к ней прибавлял 1., но если несколько пользователей добавляют одновременно несколько записей, то с момента получения и добавления моих записей, последний номер становится не актуальным.
Как победить это дело, и всё это описать через IBQuery (или как то по другому, кто знает)?
Базу использую Firebird.
AlexanderP вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: шоколад stixсветовое стеклотеплоход булгаков навигация 2024 расписание и ценыподставка под обувь купитьохотники за привидениями наследники фильм 2023


Старый 16.11.2007, 08:27   #2
Gage
Новичок
 
Пол:Мужской
Регистрация: 13.11.2007
Сообщений: 10
Репутация: 2
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

1. Нужно создать генератор - один раз
create generator genForMyKeyField
2. В запросе на вставку данных в таблицу пишешь
insert into MyTable (MyKeyField, Field2,...) values (gen_id(genForMyKeyField,1), 'any value',...)
===
genForMyKeyField - имя генератора - любое имя какое нравится
gen_id(GN,1) - встроенная функция - увеличивает и возвращает значение генератора GN на любое число - в данном случае на единицу.
Сетевые ошибки в данном случае невозможны.
Gage вне форума
 
Ответить с цитированием Вверх
Старый 18.11.2007, 20:26   #3
AlexanderP
Неактивный пользователь
 
Пол:Мужской
Регистрация: 04.11.2007
Адрес: Миасс
Сообщений: 35
Репутация: 7
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

Господа, подскажите как работать с IBDataSet.
В свойствах IBDataSet, выбираю таблицу, поля, делаю Generate SQL (InsertSQL, UpdateSQL, DeleteSQL …).
С добавление новых записей (insert) в таблицу, разобрался, а как выполнить обновление и уделение данных в таблице?
Select запрос в IBDataSet должен быть обязательно открыт для обновления, или как то по другому можно провести?
Как в Delphi это всё описать (хотя бы простейший пример)?
AlexanderP вне форума
 
Ответить с цитированием Вверх
Старый 21.11.2007, 04:39   #4
AlexanderP
Неактивный пользователь
 
Пол:Мужской
Регистрация: 04.11.2007
Адрес: Миасс
Сообщений: 35
Репутация: 7
По умолчанию Firebird (работа с базой данных из Delphi)

Всё, разобрался
Вопрос снимается.
AlexanderP вне форума
 
Ответить с цитированием Вверх
Старый 03.12.2007, 07:04   #5
raptor3
Неактивный пользователь
 
Пол:Мужской
Регистрация: 03.12.2007
Сообщений: 13
Репутация: 0
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

Цитата:
Сообщение от Gage Посмотреть сообщение
1. Нужно создать генератор - один раз
create generator genForMyKeyField
2. В запросе на вставку данных в таблицу пишешь
insert into MyTable (MyKeyField, Field2,...) values (gen_id(genForMyKeyField,1), 'any value',...)
===
genForMyKeyField - имя генератора - любое имя какое нравится
gen_id(GN,1) - встроенная функция - увеличивает и возвращает значение генератора GN на любое число - в данном случае на единицу.
Сетевые ошибки в данном случае невозможны.

Зачем усложнять вызовом генератора в делфи - проще повесить генератор на тригер в самой базе
raptor3 вне форума
 
Ответить с цитированием Вверх
Старый 03.12.2007, 18:27   #6
AlexanderP
Неактивный пользователь
 
Пол:Мужской
Регистрация: 04.11.2007
Адрес: Миасс
Сообщений: 35
Репутация: 7
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

Цитата:
Сообщение от raptor3 Посмотреть сообщение
Зачем усложнять вызовом генератора в делфи - проще повесить генератор на тригер в самой базе

Да нет, проще всё таки генератор на процедуру повесить, так намного проще контролировать значение.
А если на тригер, то останешься без контроля.
AlexanderP вне форума
 
Ответить с цитированием Вверх
Старый 12.12.2007, 13:42   #7
dim34rus
Неактивный пользователь
 
Регистрация: 10.12.2007
Сообщений: 11
Репутация: 4
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

Цитата:
Сообщение от AlexanderP Посмотреть сообщение
Да нет, проще всё таки генератор на процедуру повесить, так намного проще контролировать значение.
А если на тригер, то останешься без контроля.

Если контроль не нужен, первый способ лучше.
dim34rus вне форума
 
Ответить с цитированием Вверх
Старый 20.12.2007, 19:07   #8
AlexanderP
Неактивный пользователь
 
Пол:Мужской
Регистрация: 04.11.2007
Адрес: Миасс
Сообщений: 35
Репутация: 7
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

Подскажите, кто знает...
Как в Delphi написать код, чтобы программно узнать, какие пользователи (Имя) подключены к БД firebird.
И вообще, возможно ли это?
AlexanderP вне форума
 
Ответить с цитированием Вверх
Старый 21.12.2007, 09:30   #9
Cze
Новичок
 
Пол:Мужской
Регистрация: 26.11.2007
Сообщений: 27
Репутация: 20
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

Цитата:
Сообщение от AlexanderP Посмотреть сообщение
какие пользователи (Имя) подключены к БД firebird.

в IBPlusесть свойство компонента TFIBDatabase.UserNames
Это и есть подключенные юзеры, седения о юзере можно узнать через TpFIBSecurityService.UserInfo
Cze вне форума
 
Ответить с цитированием Вверх
Старый 02.01.2008, 23:23   #10
Морковкин
Постоялец
 
Аватар для Морковкин
 
Пол:Мужской
Регистрация: 23.05.2006
Адрес: Бандерштат
Сообщений: 635
Репутация: 2687
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

Может у кого то есть готовый исходник формы алиаса, для подключения к базе данных IB под сервер Firebird 2.0.?
Морковкин вне форума
 
Ответить с цитированием Вверх
Старый 03.01.2008, 09:37   #11
dim34rus
Неактивный пользователь
 
Регистрация: 10.12.2007
Сообщений: 11
Репутация: 4
По умолчанию Ответ: Firebird (работа с базой данных из Delphi)

Цитата:
Сообщение от livand Посмотреть сообщение
Может у кого то есть готовый исходник формы алиаса, для подключения к базе данных IB под сервер Firebird 2.0.?

Написал я типа менеджера алиасов, правда для FB1.5 Смысл такой: Есть база алиасов в ini файле, выбираешь нужный и выгружаешь в конфигурационный файл. Затем твоя программа тупо смотрит этот конфиг и организовывает подключение к базе. Если набо, мыло давай.
dim34rus вне форума
 
Ответить с цитированием Вверх
Ответ

Опции темы
Опции просмотра

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При закрытии соединения в Дельфах с базой данных firebird программа выле ошибкой Азамат31 Delphi 5 28.06.2008 12:10
работа с базой kravit PHP 5 02.05.2008 00:52
Вопрос из разряда Delphi+FireBird Андрей1981 Базы данных 6 12.01.2008 13:30

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:30. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.16881 секунды с 11 запросами