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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2011, 02:16   #11
Rowi
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 12
По умолчанию

Вот набросал тестовый проектик. Может, кто попробует...
Вложения
Тип файла: zip TestExample.zip (12.8 Кб, 5 просмотров)

Последний раз редактировалось Rowi; 16.08.2011 в 12:20.
Rowi вне форума Ответить с цитированием
Старый 16.08.2011, 11:19   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Rowi

фактически, Вам нужен такой код:
Код:
             field := TWideStringField.Create(nil);
             with field do begin
               Size:= 20;
               FieldName := FieldNameAdd;
               Dataset := ADODataSet1;
             end;
вот, кинул такой код на кнопочку (добавляет отсутствующие в датасете поля):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
  field : TField;
  FieldNameAdd : string;
begin
    ADODataSet1.Close;
    for I := 0 to ADODataSet1.FieldDefList.Count - 1 do
      with ADODataSet1.FieldDefList[I] do
        if (FieldClass <> nil) and not (faHiddenCol in Attributes) then
        begin
          FieldNameAdd := ADODataSet1.FieldDefList.Strings[I];
          Field := ADODataSet1.FindField(FieldNameAdd);
          if (Field = nil) or (Field.Owner <> ADODataSet1.Owner) then begin
             field := TWideStringField.Create(nil);
             with field do begin
               Size:= 20;
               FieldName := FieldNameAdd;
               Dataset := ADODataSet1;
             end;
             with DBGrid1.Columns.Add do
             begin
                FieldName:= FieldNameAdd;
             end;

          end;
        end;
    ADODataSet1.Open;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.08.2011, 15:15   #13
Rowi
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 12
Хорошо

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Rowi
фактически, Вам нужен такой код:
Код:
             field := TWideStringField.Create(nil);
             with field do begin
               Size:= 20;
               FieldName := FieldNameAdd;
               Dataset := ADODataSet1;
             end;
Здорово!!! Это именно то, что было нужно!!!
Теперь кнопочка работает: новое поле добавляется в БД и сразу отображается в DBGrid для редактирования.

А вот это я поставил на OnCreate формы и при запуске программы подхватываются поля, которые были добавлены в RunTime ранее:
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вот, кинул такой код на кнопочку (добавляет отсутствующие в датасете поля):
...
ОГРОМНОЕ спасибо, Serge_Bliznykov!
Проблема решена.
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