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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2010, 04:24   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Вопрос Добавление колонок в Firebird с дальнейшей работой с ними

Доброе утро! Как программно добавлять колонки в БД Firebird, чтобы в дальнейшем можно было работать с ними? Например я добавил две колонки, затем проставил программно в них значения, а затем запросами уже мог вытаскивать нужную мне информацию. На данный момент основной вопрос - это как программно создавать и добавлять колонки в таблицу БД. Через что это делать?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.07.2010, 04:36   #2
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Доброе утро! Как программно добавлять колонки в БД Firebird, чтобы в дальнейшем можно было работать с ними? Например я добавил две колонки, затем проставил программно в них значения, а затем запросами уже мог вытаскивать нужную мне информацию. На данный момент основной вопрос - это как программно создавать и добавлять колонки в таблицу БД. Через что это делать?

Firebird - это не "типа дбф", а типа "набор дбф + код обработки"
для начала поставь инструмент себе
http://www.ibexpert.com/rus/index.html
потом почитай
http://www.ibase.ru/ - раздел Начинающим, Data Definition Guide

и если хошь - в аську стучись, а то ты так долго ответы получать будешь
Non est culpa vin, sed culpa bibentis

Последний раз редактировалось Korben5E; 23.07.2010 в 04:42.
Korben5E вне форума Ответить с цитированием
Старый 23.07.2010, 06:10   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Korben5E, ну все, ставь чайник, сегодня вечером постучусь
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.07.2010, 06:20   #4
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Korben5E, ну все, ставь чайник, сегодня вечером постучусь
разница с тобой 1 час..

From artemavd: у меня сейчас 11:22. У тебя сколько?
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 23.07.2010, 08:58   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,091
По умолчанию

http://www.firebirdsql.su/doku.php?id=alter_table
pu4koff вне форума Ответить с цитированием
Старый 23.07.2010, 09:17   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

То есть все можно сделать через запрос добавление? Например:
Код:
 Query1.Active:=False;
 Query1.SQL.Text:='ALTER TABLE COUNTRY ADD ' + QuotedStr(Edit1.Text) + ' VARCHAR(25) DROP CURRENCY';
 Query1.Active:=True;
Можно ли так делать например?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.07.2010, 09:25   #7
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

не совсем так, но можно
если прав хватит

только это отдельно делается
ALTER TABLE COUNTRY DROP CURRENCY
Non est culpa vin, sed culpa bibentis

Последний раз редактировалось Korben5E; 23.07.2010 в 09:28.
Korben5E вне форума Ответить с цитированием
Старый 23.07.2010, 09:32   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
если прав хватит
Нужно, чтобы пользователь сам программно мог добавлять столцы
Цитата:
только это отдельно делается
ALTER TABLE COUNTRY DROP CURRENCY
В смысле как "отдельно"?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.07.2010, 09:38   #9
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Нужно, чтобы пользователь сам программно мог добавлять столцы
раздать права на системные таблицы для соответствующей роли


а вообще - нет необходимости добавлять программно колонки
это плохой подход к решению задачи


Цитата:
Сообщение от artemavd Посмотреть сообщение
В смысле как "отдельно"?
в смысле следующим шагом, а не в кучу все пихать
это 2 разных запроса


Цитата:
Сообщение от Korben5E Посмотреть сообщение
разница с тобой 1 час..
From artemavd: у меня сейчас 11:22. У тебя сколько?
я знаю сколько времени в Иркутске по этому и говорю.(у меня на 1 час меньше)
Non est culpa vin, sed culpa bibentis

Последний раз редактировалось Korben5E; 23.07.2010 в 09:41.
Korben5E вне форума Ответить с цитированием
Старый 23.07.2010, 12:23   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,091
По умолчанию

Цитата:
Сообщение от Korben5E Посмотреть сообщение
раздать права на системные таблицы для соответствующей роли
Подозреваю, что в данном случае, как обычно, используется SYSDBA/masterkey. Так что с правами проблем не будет. Другого варианта всё равно нет, разве что засунуть это в хранимку, но в любом случае всё сведется к ALTER TABLE.
Цитата:
Сообщение от Korben5E Посмотреть сообщение
а вообще - нет необходимости добавлять программно колонки
это плохой подход к решению задачи
Как можно обсуждать способ решения, если неизвестна задача? Не вижу ничего плохого в программном добавлении колонок в том же IBExpert'e, например.
Цитата:
Сообщение от Korben5E Посмотреть сообщение
в смысле следующим шагом, а не в кучу все пихать
это 2 разных запроса
Синтаксис ALTER TABLE позволяет в одной транзакции одним запросом добавлять и удалять произвольное число колонок:
Код:
ALTER TABLE NEW_TABLE
  ADD MY_FIELD1 VARCHAR(25),
  ADD MY_FIELD2 int,
  DROP OLD_FIELD;
pu4koff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое добавление колонок BDGrideh Pypkin30159 БД в Delphi 9 28.06.2010 02:02
Модули и как с ними бороться rlevv Общие вопросы Delphi 1 10.05.2010 21:22
Создание файлов и работа с ними... Olka... Общие вопросы C/C++ 12 02.04.2010 23:30
добавление записи firebird alex_-87 БД в Delphi 1 03.01.2010 16:45