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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 13:31   #1
Lion-Tiger
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 43
По умолчанию TIBQuery & Firebird

мне нужно программно добавлять в базу Firebird новые колонки, пробовал создавать хранимую процедуру в самой базе, но она не дает использовать ALTER TABLE(если кто знает - объясните, почему, может что не так делаю?) поэтому пытаюсь через IBQuery, но если делать SQL-запрос с параметрами, то выдает ошибку:
Код:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 2, column 5
?
Запрос
Код:
alter table TABLE_MAIN
add :pname integer
Пытался без параметров, получилось - добавил новую колонку - "1" но теперь, другой IBQuery, который делает выборку нужных полей перестает видеть эту новую колонку, тоесть жму "Add all fields", а он добавляет только те, что были и новой там нет....

Помогите решить проблему, хотя бы чтобы прога видела добавленные колонки
Lion-Tiger вне форума Ответить с цитированием
Старый 01.06.2009, 13:47   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

кстати, такой вопрос где-то месяц назад задавали уже

Цитата:
Сообщение от Lion-Tiger Посмотреть сообщение
мне нужно программно добавлять в базу Firebird новые колонки, пробовал создавать хранимую процедуру в самой базе, но она не дает использовать ALTER TABLE(если кто знает - объясните, почему, может что не так делаю?)
здесь только через execute statement (см. ибейзовские/фбердовые доки)
обычным способом можно добавлять только если название колонки заранее известно (например, это будет процедура создания таблиц БД - хотя скрипт для этого больше подходит)

Цитата:
Сообщение от Lion-Tiger Посмотреть сообщение
Запрос
Код:
alter table TABLE_MAIN
add :pname integer
а здесь имя таблицы нужно передавать не параметром, а через макрос и не забывать про пунктуацию
Код:
IBQuery.Text:=format('alter table TABLE_MAIN add %s integer;', [your_table_name]);
soleil@mmc вне форума Ответить с цитированием
Старый 01.06.2009, 13:56   #3
Lion-Tiger
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 43
По умолчанию

Я немного нуп, но что такое макрос и как им пользоваться и что за пунктуация?
И что здесь подразумевается под скриптом?
Lion-Tiger вне форума Ответить с цитированием
Старый 01.06.2009, 14:09   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Lion-Tiger Посмотреть сообщение
Я немного нуп, но что такое макрос и как им пользоваться и что за пунктуация?
И что здесь подразумевается под скриптом?
пунктуация

макрос

скрипт
soleil@mmc вне форума Ответить с цитированием
Старый 01.06.2009, 14:18   #5
Lion-Tiger
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 43
По умолчанию

ладно, сделал макросом, но выдает:
Код:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 29
integer
Вот сам код:
Код:
begin
     ibquery1.Close;
     ibquery3.SQL.Clear;
     ibquery3.SQL.Add(format('alter table TABLE_MAIN add %s integer;', [edit1.Text]));
     try
     ibquery3.ExecSQL;
     ibtransaction1.CommitRetaining;
     except
     on e:exception do memo1.Text:=e.Message;
     end;
     ibquery1.Open;
end;

Последний раз редактировалось Lion-Tiger; 01.06.2009 в 14:24.
Lion-Tiger вне форума Ответить с цитированием
Старый 01.06.2009, 14:37   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

отлови SQLMonitor-ом то что к нему приходит перед ошибкой
soleil@mmc вне форума Ответить с цитированием
Старый 01.06.2009, 15:01   #7
Lion-Tiger
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 43
По умолчанию

А как?????
Lion-Tiger вне форума Ответить с цитированием
Старый 01.06.2009, 15:55   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

запускаешь SQLMonitor, нажимаешь ему на кнопочку старт, потом запускаешь свою приладу и жмешь кнопу/пункт меню, которые запускают на выполнение твою процедуру вставки колонки
потом топаешь в SQLMonitor и копируешь код, который пришел в него
soleil@mmc вне форума Ответить с цитированием
Старый 01.06.2009, 16:15   #9
Lion-Tiger
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 43
По умолчанию

о! нашел, я просто не знал где лежит монитор, щас просканирую
только вот кнопка старт - выключена, может глюк какой??

Последний раз редактировалось Lion-Tiger; 01.06.2009 в 16:18.
Lion-Tiger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просто не понимаю б чём проблема!!!!!!!(char* && index) artush1984 Общие вопросы C/C++ 12 30.05.2009 03:30
EMS InterBase & FireBird Manager 3 ошибка создания Базы данных Gilio БД в Delphi 2 08.05.2009 15:59
Проблема с MVC++ 2005 && 2008 на висте NetGod Софт 1 09.08.2008 17:14
Повторный проход по записям в TIBQuery novicer Компоненты Delphi 0 19.06.2007 18:58