powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / использование одного FDQuery select для получения данных из разных таблиц.
25 сообщений из 31, страница 1 из 2
использование одного FDQuery select для получения данных из разных таблиц.
    #39267800
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
просмотрев разные темы подобной не нашел ,так что обращаюсь з хелпом к знатокам.

Есть деяток таблиц одинаковой конструкции..

необходимо выбрать из нескольких таблиц данные imep, pmax, или knock.
причем условия выбора по полю hmsmsc для всех одинаковы.

(из за отсутстви опыта )проблема была решена в лоб.сначала делалась выборка для табл1

sq = "SELECT strftime('%H:%M:%f',hmsmsc)";
if( CheckBox_knock->Checked == true ){sq = sq + ",knock"; DF=DF+"knock;"; }
if( CheckBox_imep->Checked == true ) {sq = sq + ",imep"; DF=DF+"imep;"; }
if( CheckBox_pmax->Checked == true ) {sq = sq + ",pmax"; DF=DF+"pmax;";}
sq = sq + " FROM wcdat_cylA1";
sq = sq + " WHERE strftime('%H:%M:%S',hmsmsc) BETWEEN '"+StartTM+"'AND'"+EndTM+"'";
FDQuery_select->SQL->Clear();
FDQuery_select->DetailFields=DF;
FDQuery_select->IndexFieldNames=" strftime('%H:%M:%f',hmsmsc)";
FDQuery_select->SQL->Text = sq;
FDQuery_select->Open();
FDQuery_select->Active=true;
for (int lb =0 ; lb < FDQuery_select->RowsAffected; lb++)
{
if( CheckBox_knock->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[0]->XValues->DateTime = true;
DBChart1->Series[0]->AddXY(XVal, FDQuery_select->FieldByName("knock")->AsFloat);

}
if( CheckBox_imep->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[1]->XValues->DateTime = true;
DBChart1->Series[1]->AddXY(XVal, (FDQuery_select->FieldByName("imep")->AsFloat)/100);
}
if( CheckBox_pmax->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[2]->XValues->DateTime = true;
DBChart1->Series[2]->AddXY(XVal, (FDQuery_select->FieldByName("pmax")->AsFloat)/10);

}
FDQuery_select->Next();
}

и в цикле строились графикию
для следующей таблицы повторялось то же самое.

ВОПРОС.

возможно ли объеденить все запросы в один и впихнуть в компонент FDQuery чтобы не повторять десяток циклов для каждого селекта отдельно.

и как потом вытащить данные разных таблиц.
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39267850
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всплыл есче один вопрос .
Я думаю он полегче первого.
есть ли разница во времени для обрабтки таких запросов для поиска в цикле 1.000.000 записей

цикл постм выше.

SELECT imep FROM wcdat
SELECT imep,pmax,knock FROM wcdat


WHERE strftime('%H:%M:%S',hmsmsc) BETWEEN '"00.00.00.001"'AND'"23.59.59.999"'";
приблизительно плус минус такое колличество
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268158
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikвозможно ли объеденить все запросы в один и впихнуть в компонент FDQuery чтобы не повторять десяток циклов для каждого селекта отдельно.
и как потом вытащить данные разных таблиц.

Число таблиц всегда одинаковое?
Соедини их union all

Можешь автоматизировать генерацию общего SQL через SELECT * FROM sqlite_master

пример:

Код: sql
1.
2.
3.
SELECT 1 type, * FROM wcdat_cylA1
union all
SELECT 2 type, * FROM wcdat_cylA2



В цикле по type сможешь выбирать нужный DBChart1, DBChart2,...
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268174
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

1 число таблиц всегда одинаково.
2 никогда не соединял и не совсем понял как я понял что это возможно .буду копать.

3 данные все время записываются и в процесе записи необходимо или прочитать актуальную базу или базы прошедших дней. Я каждый день создаю новую базу с константным кол- вом таблиц.

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

3 - А зачем ты создаешь много таблиц если у них структура одинаковая - чтобы потом героически их "склеивать"?
p.s.
Для скорости тебе нужно использовать индексы и самому тестировать т.к. живые данные есть только у тебя.
ну и * естественно хуже чем явное указание нужных полей.
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268547
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

Проблемма кроется в отсутствии опыта. Приходится пользоваться советами которые в итоге приводят к тупиковым решениям. По-этому Взял за основу стратегически не верное но рабочее решение.И всячески пытаюсь его допилить.

Плюс задача заказчика иногда меняет свои условия и тд.итп.

Попытаюсь есче раз.Если есть время на простом примере "без страшных для новичков названий" показать.
1. взять три четыре таблицы с ПОЧТИ одинаковым именем типа имя1.имя2.имя3. одной базы.
2. сделать один запрос сразу для всех трёх

чтото типа SELECT имя1.tab1,имя2.tab2,имя3.tab3 FROM tab1,tab2,tab3 WHERE .....условие поиска по времени для всех одинаково типа WHERE strftime('%H:%M:%S',hmsmsc) BETWEEN '"00.00.00.001"'AND'"23.59.59.999"'";

запихнуть этот селект в FDQuery_selectю

а потом прочитать
for (int lb =0 ; lb < FDQuery_select->RowsAffected; lb++)
{
FDQuery_select->FieldByName("имя1.tab1")->AsFloat
FDQuery_select->FieldByName("имя2.tab2")->AsFloat
FDQuery_select->FieldByName("имя3.tab3")->AsFloat
}

вот собственно и всё
индексы,скуэль мастер бинд соединение для меня пока только названия и задача копать в этом направлении.
а на краткосрочном этапе начальство вопрошает типа МОГЁШЬ- предяви. а потом капай себе свои бинд соединения улучшай и ускоряй. но потом.как то так.
С надеждой на понимание.

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

Я ведь привел пример как соединить твои таблицы на примере 2-х штук:
почитай про команду sql - union all

Код: sql
1.
2.
3.
SELECT 1 type, * FROM wcdat_cylA1 WHERE strftime('%H:%M:%S',hmsmsc) BETWEEN '"00.00.00.001"'AND'"23.59.59.999"'"
union all
SELECT 2 type, * FROM wcdat_cylA2 WHERE strftime('%H:%M:%S',hmsmsc) BETWEEN '"00.00.00.001"'AND'"23.59.59.999"'"
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268586
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

это я понял. я не понимаю

PPAВ цикле по type сможешь выбирать нужный DBChart1, DBChart2,...

КАК? ка писать этот " type " .
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268589
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

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

FDQuery_select->FieldByName("type")->AsInteger - тут будет у тебя номер таблицы
по нему сможешь выбрать нужный чарт.
судя по имена ты накидал на форму столько DBChart сколько у тебя таблиц?
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268595
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikPPA,

любой пример с синтаксисом написания

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

FDQuery_select->Close();
FDQuery_select->Connection = FDConnection_wcdat;
FDQuery_select->Connection->DriverName="SQLite";

sq = "SELECT strftime('%H:%M:%f',hmsmsc)";
if( CheckBox_knock->Checked == true ){sq = sq + ",knock"; DF=DF+"knock;"; }
if( CheckBox_imep->Checked == true ) {sq = sq + ",imep"; DF=DF+"imep;"; }
if( CheckBox_pmax->Checked == true ) {sq = sq + ",pmax"; DF=DF+"pmax;";}
sq = sq + " FROM wcdat_cylA2";
sq = sq + " WHERE strftime('%H:%M:%S',hmsmsc) BETWEEN '"+StartTM+"'AND'"+EndTM+"'";

FDQuery_select->SQL->Clear();
FDQuery_select->DetailFields=DF;
FDQuery_select->IndexFieldNames=" strftime('%H:%M:%f',hmsmsc)";
FDQuery_select->SQL->Text = sq;
FDQuery_select->Open();
FDQuery_select->Active=true;

for (int lb =0 ; lb < FDQuery_select->RowsAffected; lb++)
{
if( CheckBox_knock->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[3]->XValues->DateTime = true;
DBChart1->Series[3]->AddXY(XVal, FDQuery_select->FieldByName("knock")->AsFloat);

}
if( CheckBox_imep->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[4]->XValues->DateTime = true;
DBChart1->Series[4]->AddXY(XVal, (FDQuery_select->FieldByName("imep")->AsFloat)/100);

}
if( CheckBox_pmax->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[5]->XValues->DateTime = true;
DBChart1->Series[5]->AddXY(XVal, (FDQuery_select->FieldByName("pmax")->AsFloat)/10);

}
FDQuery_select->Next();
}
Application->ProcessMessages();
}

//---------------------------------- CYLINDER A3 ----------------------

if(CheckBoxCyl3->Checked == true )
{
FDQuery_select->Close();
FDQuery_select->Connection = FDConnection_wcdat;
FDQuery_select->Connection->DriverName="SQLite";

sq = "SELECT strftime('%H:%M:%f',hmsmsc)";
if( CheckBox_knock->Checked == true ){sq = sq + ",knock"; DF=DF+"knock;"; }
if( CheckBox_imep->Checked == true ) {sq = sq + ",imep"; DF=DF+"imep;"; }
if( CheckBox_pmax->Checked == true ) {sq = sq + ",pmax"; DF=DF+"pmax;";}
sq = sq + " FROM wcdat_cylA3";
sq = sq + " WHERE strftime('%H:%M:%S',hmsmsc) BETWEEN '"+StartTM+"'AND'"+EndTM+"'";



FDQuery_select->SQL->Clear();
FDQuery_select->DetailFields=DF;
FDQuery_select->IndexFieldNames=" strftime('%H:%M:%f',hmsmsc)";
FDQuery_select->SQL->Text = sq;
FDQuery_select->Open();
FDQuery_select->Active=true;



for (int lb =0 ; lb < FDQuery_select->RowsAffected; lb++)
{
if( CheckBox_knock->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[6]->XValues->DateTime = true;
DBChart1->Series[6]->AddXY(XVal, FDQuery_select->FieldByName("knock")->AsFloat);

}
if( CheckBox_imep->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[7]->XValues->DateTime = true;
DBChart1->Series[7]->AddXY(XVal, (FDQuery_select->FieldByName("imep")->AsFloat)/100);

}
if( CheckBox_pmax->Checked == true )
{
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
DBChart1->Series[8]->XValues->DateTime = true;
DBChart1->Series[8]->AddXY(XVal, (FDQuery_select->FieldByName("pmax")->AsFloat)/10);

}
FDQuery_select->Next();
}
Application->ProcessMessages();
}
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268694
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

как видно из кода это обыкновенный копипаст.
а хотелось бы все же чистоты написания.

существует 12 цилиндров и данные пишутся для всех одинаково но!
для прочтения и получения кривых не обязательно вызавать все 12

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

попробывал тайп. чесно говоря не то что ожидал .
получается что в случае чтения 24 часов у меня соберется одна таблица из 12 и колличество строк соотвественно вместо1.000.000 будет 12.000.000. а это тормоза.
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268754
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikPPA,

попробывал тайп. чесно говоря не то что ожидал .
получается что в случае чтения 24 часов у меня соберется одна таблица из 12 и колличество строк соотвественно вместо1.000.000 будет 12.000.000. а это тормоза.

Ты ведь сам хотел выполнить один запрос вместо 12?
А тормоза у тебя из-за того что выборка идет не по индексу.
также приведи в цифрах как выглядят эти тормоза?
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268767
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikPPA,

например надо посмотреть 3.5.и 7 цилиндры.
прога селектирует сначала 3тий потом крутит в цикле и показывает.затем то же самое с 5ым и 7мым
а хотелось бы один раз в цикле сразу все таблицы проскакать.

Зачем сразу все 12?
тебе нужно на основании галок собрать SQL из union all 3 5 и 7 таблиц
выполнить один раз запрос и закидать данные в чарты.

+ разобраться с индексами и построить нужный для оптимизации вот этого условия
WHERE strftime('%H:%M:%S',hmsmsc) BETWEEN '"+StartTM+"'AND'"+EndTM+"'"
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268776
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik,

при чтении таблицы и выборке все 24 часа программа в цикле выбирает и строит графики приблизительно 30- 40 секунд соответственно для 24 цилиндров 24 раз по тридцать сек.
идея была запихнуть все 24 запроса в один цикл.
для этого или написать мультиселект или использовать 24 компонента FDQuery.
а это( согласитесь) не есть чистота реализации.
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268780
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

программа создается в двух версиях 12 и 24 цилиндра
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268784
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikPPA,

попробывал тайп. чесно говоря не то что ожидал .
получается что в случае чтения 24 часов у меня соберется одна таблица из 12 и колличество строк соотвественно вместо1.000.000 будет 12.000.000. а это тормоза.

В случае с один запросом и полем type у тебя будет так:
type в SQL генерируй с 0,1,2,3,4.... 11

Код: 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);



И убери в своем код дублирование в каждом условии Checked == true )
Код: plaintext
1.
2.
3.
DecodeTime(FDQuery_select->FieldByName("strftime('%H:%M:%f',hmsmsc)")->AsDateTime, Hour, Min, Sec, MSec);
dtXValue = EncodeTime(Hour, Min, Sec, MSec);
const double XVal = dtXValue;
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268786
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPAЗачем сразу все 12?
тебе нужно на основании галок собрать SQL из union all 3 5 и 7 таблиц
выполнить один раз запрос и закидать данные в чарты.

проверка на скорость идет по максимуму 24 цилиндра 24 часа все переменные.
(короче как в турции )всё включено. и на этапе максипроверки время построения занимает много времени.
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268794
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikkomvik,

при чтении таблицы и выборке все 24 часа программа в цикле выбирает и строит графики приблизительно 30- 40 секунд соответственно для 24 цилиндров 24 раз по тридцать сек.
идея была запихнуть все 24 запроса в один цикл.
для этого или написать мультиселект или использовать 24 компонента FDQuery.
а это( согласитесь) не есть чистота реализации.


Выборка всех записей в SQL без построения графика сколько идет тоже 30-40 сек?

Я выше написал как выполнить выборку через один SQL
не понял зачем тебе 24 компонента FDQuery ?
ты их что 24 штуки на форму понакидал?

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

оч интересно. буду пробовать .не совсем понял. но всё равно спасибо за советы.
вернее идея хороша и теоретически выглядит супер. надо тестить.

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

есче не накидал но отчаянно близок к такому .
графики не тормозят проверенно. чтение занимает больше двух третей времени.
всё дело в повторении цикла для каждого цилиндра.

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

хочу отдельно сказать спасибо за участие . конечно карма программиста получает свои плюсы. но может как то отдельно можно выразить благодарность. как?
...
Рейтинг: 0 / 0
использование одного FDQuery select для получения данных из разных таблиц.
    #39268812
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikPPAЗачем сразу все 12?
тебе нужно на основании галок собрать SQL из union all 3 5 и 7 таблиц
выполнить один раз запрос и закидать данные в чарты.
проверка на скорость идет по максимуму 24 цилиндра 24 часа все переменные.
(короче как в турции )всё включено. и на этапе максипроверки время построения занимает много времени.

Т.е. в таблице лежат всегда одни сутки.
в этом случае тебе индекс не поможет т.к. все равно будет полное сканирование.

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

где i - перебери все серии по аналогии с этим
http://www.teechart.net/support/viewtopic.php?f=3&t=5615

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


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