C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Работа с dbexpress, перенес прогу с BDE на dbexpress и появи
labslo
Отправлено: 11.08.2003, 14:41


Ученик-кочегар

Группа: Участник
Сообщений: 6



Была у меня программа написанная с помощью BDE. Решил ее перенести на dbexpress перенос осуществил как написано на http://www.ibase.ru .
Да вот что то уж очень медленно работает.
Конфигурация: сервер — MS W2K AS + Interbase 6.0.1
клиент — Win2k prof
пример кода
.........
DMI1->tcoper->Active=true; // Или Open();
//между этими операторами проходит мин 1-3.
DMI1->tcoperDS->CommandText = "select * from TC_OPER where F_NAME='xxxx '";
DMI1->tcoperDS->Open();
if (DMI1->tcoperDS->RecordCount !=0) // выполненеие этого оператора занимает 2-3 мин.
fownerTCOPER=DMI1->tcoperDS->Fields->Fields[2]->AsInteger;
DMI1->tcoperDS->Close();

DMI1-Data module
tcoper — table
tcoperDS — dataset

Далее я открываю еще где-то 10-20 таблиц и открытие их занимает более 1 часа.

В чем может быть проблема ?
SEDEGOFF
Отправлено: 12.08.2003, 07:04


Ученик-кочегар

Группа: Участник
Сообщений: 19



пробле у тебя в машине так как dbexpress являються самыми быстрыми компонентами
Но для потверждения этого попробуй запустить тоже самое на компонентах со странички InterBase
labslo
Отправлено: 12.08.2003, 07:37


Ученик-кочегар

Группа: Участник
Сообщений: 6



Вечером дома так и начал делать.
Похлже у меня проблема с сетью на работе.
Nick
Отправлено: 12.08.2003, 08:48


Машинист паровоза

Группа: Участник
Сообщений: 247



При открытии таблицы
Active = True
IBase клиент забирает с сервера только часть данных,
где-то несколько первых записей
(по моему установлено переменной BufferChunks в IBX)
командой
(DMI1->tcoperDS->RecordCount !=0)
ты заставляеш клиента IBase забрать с сервера все данные

Вообще лучше забыть компонент Table и пользоваться IBQuery
Запрос — select count(*) from TC_OPER where F_NAME='xxxx '
выполниться гораздо быстрее.
Сервер подсчитает записи и вернет клиенту только количество.
SEDEGOFF
Отправлено: 12.08.2003, 12:37


Ученик-кочегар

Группа: Участник
Сообщений: 19



Ну тогда уж IBSQL — он намного быстрее IBQuery
а строка DMI1->tcoperDS->RecordCount !=0 не заставляет его забирать все данные
labslo
Отправлено: 12.08.2003, 16:36


Ученик-кочегар

Группа: Участник
Сообщений: 6



Переписал все на IBX 6.08 все работает.
LeeMouse
Отправлено: 04.09.2003, 11:35


Дежурный стрелочник

Группа: Участник
Сообщений: 79



IBX + Interbase == ОТСТОЙ!!!
Firebird + FIBPlus == RULEZZ!!! (и никаких тормозов)
labslo
Отправлено: 16.09.2003, 11:24


Ученик-кочегар

Группа: Участник
Сообщений: 6



QUOTE

IBX + Interbase == ОТСТОЙ!!!
Firebird + FIBPlus == RULEZZ!!! (и никаких тормозов)

Да smile.gif Только у меня база не моя, т.е. я вынужден дорабатывать чужой проект к которому есть свой интерфейс а мне в их базу надо данные записать

Вернуться в Работа с базами данных в C++Builder