IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.
Модератор: kdv
-
londinium
- Сообщения: 27
- Зарегистрирован: 17 апр 2006, 14:04
Сообщение
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:
Поэтому IBDataSet1->Open() то же самое, что и IBDataSet1->Active=true;
2. Хороший стиль программирования - использование методов вместо присвоения свойств. В данном случае вместо Active = True использовать Open().
3. Сначала надо задать запрос, а потом уже открывать датасет. То есть правильный код выглядит вот так:
Код: Выделить всё
IBDataSet1->SelectSQL->Clear;
IBDataSet1->SelectSQL->Add("select * from refworkers");
IBDataSet1->Open();