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

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

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

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

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

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

Когда добавляю новую колонку в базу, хочу чтобы ее сразу можно было увидеть в DBGrid новую колонку, в обычном режиме - дизайн тайме нужно кликнуть два раза на TIBQuery и правой кнопкой и выбрать Add all fields
Как программно добавить новое поле?
Lion-Tiger вне форума Ответить с цитированием
Старый 02.06.2009, 14:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тебе вычисляемое поле? Или нужно изменять структуру БД физически?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2009, 14:51   #3
Lion-Tiger
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 43
По умолчанию

ээм
ну я через
alter table table_name
add Name integer
это наверно физически?
Lion-Tiger вне форума Ответить с цитированием
Старый 02.06.2009, 15:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это наверно физически?
Да. Ну тогда просто поудаляй все записи из списка полей в дизайне, и пусть DBGrid сам берет поля которые ты в SELECT указал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2009, 17:34   #5
Lion-Tiger
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 43
По умолчанию

Гениально! =)
как я сам не додумался! о_О
огромнейшее спасибо)))
темку можно крыть
Lion-Tiger вне форума Ответить с цитированием
Старый 15.08.2011, 14:51   #6
Rowi
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 12
По умолчанию

Абсолютно аналогичная задача, только БД Access/ADO.
Но совет Stilet не подходит, т.к. в дизайне приходится добавлять в список полей и вычисляемые, и подстановочные поля. А в RunTime'е нужно добавить в DBGrid простое свежедобавленное в БД поле. Как?
Rowi вне форума Ответить с цитированием
Старый 15.08.2011, 15:15   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Rowi

попробуйте что-то вроде:
Код:
with AdoQuery1 do
    begin
        with FieldDefs.AddFieldDef do
            begin
                DataType := ftFloat; {тип Вашего свежедобавленного поля}
                Name := 'MY_NEW_FIELD'; {имя добавленого поля}
            end;
     end;
вызывать ОДИН раз перед открытием датасета...

p.s. не проверял, просто предполагаю, что должно сработать...
если не сработает - чур, я не виноват!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.08.2011, 17:27   #8
Rowi
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Rowi

попробуйте что-то вроде:
Код:
with AdoQuery1 do
    begin
        with FieldDefs.AddFieldDef do
            begin
                DataType := ftFloat; {тип Вашего свежедобавленного поля}
                Name := 'MY_NEW_FIELD'; {имя добавленого поля}
            end;
     end;
вызывать ОДИН раз перед открытием датасета...

p.s. не проверял, просто предполагаю, что должно сработать...
если не сработает - чур, я не виноват!
Попробовал. Увы, не помогает...

Последний раз редактировалось Rowi; 15.08.2011 в 17:38.
Rowi вне форума Ответить с цитированием
Старый 15.08.2011, 18:05   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Попробовал. Увы, не помогает...
выдаётся системное сообщение с текстом "Не помогло!" ?!
Или как Вы определили, что не работает?

p.s. может сделаете небольшой тестовый проект + БД небольшую к нему и выложите исходики (в виде архива, разумеется)... Лень создать проект с нуля, чтобы убедиться в том, что предложенный способ работает (или не работает...)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.08.2011, 23:41   #10
Rowi
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
выдаётся системное сообщение с текстом "Не помогло!" ?!
Или как Вы определили, что не работает?

p.s. может сделаете небольшой тестовый проект + БД небольшую к нему и выложите исходики (в виде архива, разумеется)... Лень создать проект с нуля, чтобы убедиться в том, что предложенный способ работает (или не работает...)...
Определил по тому, что во-первых столбец в DBGrid добавляется, но недоступен для редактирования, во-вторых, проверяю "новый_столбец".Field = nil.

А тестовый проект попробую с утра набросать и залить сюда.
Rowi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TIBQuery & Firebird Lion-Tiger БД в Delphi 8 01.06.2009 16:15
delphi add all fields runtime tarakan1983 БД в Delphi 1 24.03.2009 13:05
delete where fields=null??? Geddar SQL, базы данных 1 02.06.2008 16:57
Повторный проход по записям в TIBQuery novicer Компоненты Delphi 0 19.06.2007 18:58