Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

TQuery

8.8K
03 сентября 2005 года
Tayrus
13 / / 05.06.2005
Здравствуйте Строители!!!
Вот какой вопрос:

for(unsigned int i = 0; i < RecCount; i++)
{
f_dm->q->Close();
f_dm->q->SQL->Clear();
f_dm->q->SQL->Add("Тут сам запрос");
f_dm->q->ExecSQL();
f_dm->q->Open();
}

Если RecCount > 300...все вываливается сообщение типа Too many open tables...и указывается та таблица, с которой я работаю, но без цикла мне никак не обойтись...что делать?
Заранее всем спасибо за ответ.
299
03 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Tayrus
Здравствуйте Строители!!!
Вот какой вопрос:

for(unsigned int i = 0; i < RecCount; i++){
f_dm->q->Close();
f_dm->q->SQL->Clear();
f_dm->q->SQL->Add("Тут сам запрос");
f_dm->q->ExecSQL();
f_dm->q->Open();
}

Если RecCount > 300...все вываливается сообщение типа Too many open tables...и указывается та таблица, с которой я работаю, но без цикла мне никак не обойтись...что делать?
Заранее всем спасибо за ответ.


А зачем ты сначало закрываешь и потом открываешь??? Извращения и нагрузка на ресурсы... Делай так.

 
Код:
f_dm->q->Close();
for(unsigned int i = 0; i < RecCount; i++){
    f_dm->q->SQL->Add("Тут сам запрос");
    f_dm->q->ExecSQL();
    f_dm->q->SQL->Clear();
}
f_dm->q->Open();

А еще лучше так..
 
Код:
f_dm->q->Close();
for(unsigned int i = 0; i < RecCount; i++){
    f_dm->q->SQL->Text = "Тут сам запрос";
    f_dm->q->ExecSQL();
}
f_dm->q->Open();

8.8K
04 сентября 2005 года
Tayrus
13 / / 05.06.2005
Цитата:
Originally posted by 3D Bob
А зачем ты сначало закрываешь и потом открываешь??? Извращения и нагрузка на ресурсы... Делай так.
 
Код:
f_dm->q->Close();
for(unsigned int i = 0; i < RecCount; i++){
    f_dm->q->SQL->Add("Тут сам запрос");
    f_dm->q->ExecSQL();
    f_dm->q->SQL->Clear();
}
f_dm->q->Open();

А еще лучше так..
 
Код:
f_dm->q->Close();
for(unsigned int i = 0; i < RecCount; i++){
    f_dm->q->SQL->Text = "Тут сам запрос";
    f_dm->q->ExecSQL();
}
f_dm->q->Open();



Так ничего не получится...т.к.
..м-м-м...в общем смотри...

for(unsigned int i = 0; i < RecCount; i++)
{
Здесь я формирую кое-какие данные для SQL-запроса(данные разные, все зависит от текущего шага цикла).
Затем очищаю SQL-запрос.
f_dm->q->SQL->Clear();
Затем я формирую SQL-зарпос, используя полученные данные.
f_dm->q->SQL->Text = "Тут сам запрос";
Все это тщательно перемешиваем и ставим в духовку:))
f_dm->q->ExecSQL();
...и вот настал момент и мы достаем то что у нас получилось
f_dm->q->Open();

Затем мне надо проверить сколько всего записей я получил в рез-те запроса
int count = f_dm->q->RecordCount;

Если я выполню f_dm->q->Open(); после скобок, то просто напросто доступ бедт закрыт к результатам запроса... и я не получу кол-во записей!!!
}

299
04 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Tayrus
Так ничего не получится...т.к.
..м-м-м...в общем смотри...

for(unsigned int i = 0; i < RecCount; i++)
{
Здесь я формирую кое-какие данные для SQL-запроса(данные разные, все зависит от текущего шага цикла).
Затем очищаю SQL-запрос.
f_dm->q->SQL->Clear();
Затем я формирую SQL-зарпос, используя полученные данные.
f_dm->q->SQL->Text = "Тут сам запрос";
Все это тщательно перемешиваем и ставим в духовку:))
f_dm->q->ExecSQL();
...и вот настал момент и мы достаем то что у нас получилось
f_dm->q->Open();

Затем мне надо проверить сколько всего записей я получил в рез-те запроса
int count = f_dm->q->RecordCount;

Если я выполню f_dm->q->Open(); после скобок, то просто напросто доступ бедт закрыт к результатам запроса... и я не получу кол-во записей!!!
}



Если использовать Text, Clear не нужен.
Ругается потому что видимо не происходит закрытия таблицы и лучше всего это делать в КОНЦЕ цикла а не начале.
Далее зачем тебе знать сколько данных?? Зачем напрягать ресурсы? Когда можно просто самому вести подсчет, того сколько раз цикл выполнил код. И скорее всего ты не знаешь, про поле аутоинкримента. Другой причины значть кол-во записей я не вижу. Код пододробней в студию.

10
04 сентября 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Tayrus
Если я выполню f_dm->q->Open(); после скобок, то просто напросто доступ бедт закрыт к результатам запроса... и я не получу кол-во записей!!!
}


А что за глупость вызывать ExecSQL() перед Open()?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог