Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Связать добавленное в Runtime новое поле с DBGrid


Автор: Rowi 15.8.2011, 11:29
Доброго времени суток всем!
БД Access, связь через ADO. 
Проблема такая. В RunTime добавлил поле в таблицу БД. Получается. 
Но не могу отобразить новое поле в DBGrid. Т.е. столбец добавляется, но не видит нового поля.

Код

  with DBGrid1.Columns.Add do
  begin
    FieldName:= NewFieldName;
    if Field = nil then // Вставил для проверки
      ShowMessage('Поле не найдено!');
  end;


Те поля, что были созданы в DesignTime, добавлял через Fields Editor (в контекстном меню ADODataSet).
Как правильно связать новый столбец DBGrid с новым полем?

Спасибо.

Автор: superVad 15.8.2011, 20:25
Ты в реальную таблицу поле добавил или просто в запросе его стал выбирать? Или оно уже выбиралось в запросе, а ты просто столбец в грид добавляешь, а данные уже есть? ...

Покажи код того, что ты называешь - добавлением поля в таблицу БД в рантайме (что бы это не значило).

Автор: Rowi 15.8.2011, 22:35
Цитата(superVad @ 15.8.2011,  20:25)
Ты в реальную таблицу поле добавил или просто в запросе его стал выбирать? Или оно уже выбиралось в запросе, а ты просто столбец в грид добавляешь, а данные уже есть? ...

Покажи код того, что ты называешь - добавлением поля в таблицу БД в рантайме (что бы это не значило).


Объясняю.
Есть реальная таблица в БД. Данные из нее отображаются в программе через ADOConnection -> ADODataSet -> DataSource -> DBGrid.
Кроме того, в DesignTime из-за вычисляемых и подстановочных полей приходится всё добавлять в список полей через Fields Editor (двойной щелчок на ADODataSet).

Отдельным SQL-запросом через ADOCommand добавляю в него еще одно поле:
Код

ALTER TABLE MyTable ADD COLUMN NewFieldName TEXT(3)


После этого обновляю набор записей ADODataSet.Requery, и пытаюсь отобразить свежедобавленное поле в DBGrid для редактирования (код в первом посте). Столбец в DBGrid появляется, но для редактирования недоступен и выскакивает моё отладочное сообщение 'Поле не найдено!'

Автор: Rowi 16.8.2011, 01:26
Вот набросал тестовый проектик. Может, кто попробует...

Автор: Rowi 16.8.2011, 14:21
Всё, помогли в другом месте.
На всякий случай выкладываю решение (тот же тестовый проектик, но в исправленном виде) - вдруг кому пригодится:

Вопрос решён.

Автор: Dannasha 30.4.2012, 20:52
Помогите мне пожалуйста, у меня такая же проблема, только база данных на PHP My Admin (sql запросы), пробовала изменить код, но все напрасно(

Автор: Данкинг 30.4.2012, 21:11
Dannasha, создай новую тему и опиши там проблему. Не забудь указать СУБД, т.к лично я такой СУБД - PHP My Admin - не знаю.

Автор: Dannasha 30.4.2012, 21:45
спасибо, создала новую тему!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)