Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу динамически настроить набор данных, добавл. полей в DataSet 
:(
    Опции темы
ksili
Дата 27.3.2008, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



У меня на форме один 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 соответствующий столбец или он сам добавится?

Это сообщение отредактировал(а) ksili - 27.3.2008, 07:51


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
korian
Дата 27.3.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



справка 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'ы - правь запрос.

PM   Вверх
ksili
Дата 27.3.2008, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



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


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.