Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Не могу динамически настроить набор данных


Автор: ksili 27.3.2008, 06:37
У меня на форме один DBGrid. Я его хочу испльзовать для отображения нескольких таблиц БД (они выбираются в меню). 
Использую компоненты FIBPlus
Соответственно есть pFIBDatabase (далее - Database1), pFIBDataSet (далее - DataSet1), DataSource1, DBGrid1. Они связаны так:
DataSet1->Database = Database1
DataSource1->DataSet = DataSet1
DBGrid1->DataSource = DataSource1

Пытаюсь пока настроить отображение хотя бы одной таблицы AuthOut c такими полями:
Код

    AUTHID       INTEGER NOT NULL,
    LOGIN        VARCHAR(80),
    "PASSWORD"   VARCHAR(80),
    OUTPHONE     INTEGER NOT NULL,
    OUTANI       INTEGER NOT NULL,
    MAXCHAN      INTEGER,
    DESCRIPTION  VARCHAR(50)


AUTHID не отображаю, а пок хотя бы одно поле LOGIN:
Код

TField *f1,*f2,*f3;
DataSet1->Active = false;

     DataSet1->Fields->Clear();
     f1 = new TField(DataSet1);
     DataSet1->Fields->Count;

     f1->FieldKind = fkData;
     f1->FieldName = "LOGIN";
     DataSet1->Fields->Add(f1);

     DataSet1->SelectSQL->Text = "select * from AuthOut";
     
     DataSet1->Connected = true;
     DataSet1->Active = true;


При этом происходит ошибка "Invalid field size". f1->Size действительно равно нулю, но если его указывать явно равным 80 или другому числу, при этом присвоении возникает та же ошибка

Как программно добавить поле в DataSet? И надо ли будет при этом ещё вручную добавлять в DBGrid соответствующий столбец или он сам добавится?

Автор: korian 27.3.2008, 09:02
справка BCB, на первой странице про TField
Цитата

Do not create instances of TField. TField descendants are created automatically each time a dataset is activated. These descendants can be dynamic (the default) or persistent. Dynamic field components reflect the columns in the underlying metadata at the time a dataset is opened. Persistent field components are created at design time using the Fields editor, which specifies the fields in the dataset, their properties, and their ordering.

короче они рассказывают, что так лучше не делать.
нужны конкретные field'ы - правь запрос.

Автор: ksili 27.3.2008, 09:04
Да я уже решил делать проще: создам несколько датасетов, настроенных каждый на свою таблицу, и буду их переключать

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