IBDataSet и Select

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
londinium
Сообщения: 27
Зарегистрирован: 17 апр 2006, 14:04

IBDataSet и Select

Сообщение londinium » 15 июл 2006, 17:21

День добрый, Господа!

Начинаю работать с FireBird 1.5 SS. Клиент разрабатывается на C++Builder 6 с помощью IBX.

Возникла такая проблема
На форму брошены IBTransaction, IBDatabase,IBDataSet, DataSource, DBGrid, Button.
На щелчке по кнопке пишу такое:

Код: Выделить всё


 IBDatabase1->Connected=true;
 IBDataSet1->Open();
 IBDataSet1->Active=true;
 IBDataSet1->SelectSQL->Add("select * from refworkers");
В результате данных в DBGrid не вижу и ошибок не выскакивает.
Если

Код: Выделить всё

IBDatabase1->Connected=true;
IBDataSet1->Active=true;
переложить в FormCreate, то все видится.

Вопрос: у меня руки кривые (вероятнее всего) или что-то другое.
В любом случае спасибо тому, кто поделится правильным кодом.

С уважением, Londinium

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 15 июл 2006, 17:47

1. Код метода Open:

Код: Выделить всё

Active = True;
Поэтому IBDataSet1->Open() то же самое, что и IBDataSet1->Active=true;
2. Хороший стиль программирования - использование методов вместо присвоения свойств. В данном случае вместо Active = True использовать Open().
3. Сначала надо задать запрос, а потом уже открывать датасет. То есть правильный код выглядит вот так:

Код: Выделить всё

IBDataSet1->SelectSQL->Clear;
IBDataSet1->SelectSQL->Add("select * from refworkers");
IBDataSet1->Open();

londinium
Сообщения: 27
Зарегистрирован: 17 апр 2006, 14:04

Сообщение londinium » 15 июл 2006, 19:48

Спасибо. Все работает.

Ответить