powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / использование одного FDQuery select для получения данных из разных таблиц.
6 сообщений из 31, страница 2 из 2
использование одного FDQuery select для получения данных из разных таблиц.
    #39268813
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
const int type = FDQuery_select->FieldByName("type")->AsInteger;

DBChart1->Series[type*3 ]->XValues->DateTime = true;
DBChart1->Series[type*3 ]->AddXY(XVal, FDQuery_select->FieldByName("knock")->AsFloat);

DBChart1->Series[type*3 +1 ]->XValues->DateTime = true;
DBChart1->Series[type*3 +1 ]->AddXY(XVal, FDQuery_select->FieldByName("imep")->AsFloat);

DBChart1->Series[type*3 +2 ]->XValues->DateTime = true;
DBChart1->Series[type*3 +2 ]->AddXY(XVal, FDQuery_select->FieldByName("pmax")->AsFloat);



почему type*3 что происходит?
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268825
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,
PPAТ.е. в таблице лежат всегда одни сутки.
не совсем.
новый день или 00.00.00 создаёт новую базу с новым именеми и новыми таблицами до 23.59.59
и тд так что я получаю отдельные базы .

PPAДобавь в начале цикла код
DBChart1->Series[i]->BeginUpdate();
а в конце
DBChart1->Series[i]->EndUpdate();

сейчас попробую
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268830
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один момент у тебя в цикле 12 лимоно записей
ты там часто делаешь
FDQuery_select->FieldByName("xxx")->As

Если посмотреть на код внутри VCL - то FieldByName выполняет линейный поиск по массиву строк.
это не очень эффективно.

Лучше сделать так

1. В начале цикла сохраняешь указатели на нужные поля в указатели

Код: plaintext
1.
2.
3.
TFloatField * field_knock = FDQuery_select->FieldByName("knock");
TFloatField * field_imep = FDQuery_select->FieldByName("imep");
TFloatField * field_pmax= FDQuery_select->FieldByName("pmax");


2. а уже внутри цикла делаешь обращение вида
Код: plaintext
1.
2.
3.
DBChart1->Series[type*3 ]->AddXY(XVal, field_knock->AsFloat);
DBChart1->Series[type*3 +1 ]->AddXY(XVal,field_imep->AsFloat);
DBChart1->Series[type*3 +2 ]->AddXY(XVal, field_pmax->AsFloat);



И еще убери операцию за цикл
Код: plaintext
1.
DBChart1->Series[i]->XValues->DateTime = true;


ее нужно делать один раз а не 12 миллионов.
т.к. она указывает что серия по X имеет тип-дату
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268836
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik
почему type*3 что происходит?

У тебя ведь для каждой таблице 3 серии используется?
тут и получается переключение на другую таблицу в блоке union all
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268949
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,


PPAее нужно делать один раз а не 12 миллионов.
т.к. она указывает что серия по X имеет тип-дату

я ж говорю был копипаст с учетом дальнейшего усовершенствования и вылизывания.
типа оправдания. всё равно спасибо.за указания.
PPA. а уже внутри цикла делаешь обращение вида
Код: plaintext
1.
2.
3.
DBChart1->Series[type*3 ]->AddXY(XVal, field_knock->AsFloat);
DBChart1->Series[type*3 +1 ]->AddXY(XVal,field_imep->AsFloat);
DBChart1->Series[type*3 +2 ]->AddXY(XVal, field_pmax->AsFloat);



тут не всё понятно. Series[type*3 +1 ] это номер серии почему не Series[3].Series[4].Series[5].
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268963
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

мне кажется я уже покругу бегу. буду пробовать что насобирал. как появятся результаты если интересно отпишусь. если нет то и не буду спамить.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / SQLite [игнор отключен] [закрыт для гостей] / использование одного FDQuery select для получения данных из разных таблиц.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]