![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Too many open tables [D7, Paradox]
Tigra © (2005-12-20 17:55:00)Есть приложение, которое может формировать отчет из данных таблиц (отчет несколько замороченный). Делается это на локале при помощи query.execsql. Только select.
Квери в приложении 2шт.
2 раза отчет формируется, на третий выдает ошибку : Too many open tables.
Куда рулить?
Tigra (2005-12-21 09:49:00) [1]
> ЮЮ © (21.12.05 08:49) [9]
> Может и впрямь, выполняя ExecSQL для селективного запроса,
> ты безвозвратно используешь ресурсы БДЕ?
На сколько понял так и получается. Почитал хелп, понял для SELECT нада OPEN делать. Все зажило. Всем спасибо.
ЮЮ (2005-12-21 08:51:00) [2]и поубивай временные файлы таблиц-результатов запросов, которые остаются при аварийном завершении программы
ЮЮ (2005-12-21 08:49:00) [3]Тогда уж лучше так
if act then
try
Query1.Active:=true;
finally
Result := Query1.Active;
end
else
try
Query1.ExecSQL;
Result:=true;
except
Result:=false
end;
Может и впрямь, выполняя ExecSQL для селективного запроса, ты безвозвратно используешь ресурсы БДЕ?
Tigra (2005-12-21 08:08:00) [4]
> Может почитаешь для начала чего-нибуть?
Я читаю =)
По делу ты так ничего и не сказал. А мог бы.
Плохиш (2005-12-20 22:16:00) [5]
> Tigra (20.12.05 19:36) [6]
>
> > Плохиш ©
>
> Это не порнография
Может почитаешь для начала чего-нибуть?
Tigra (2005-12-20 19:36:00) [6]
> Плохиш ©
Это не порнография, просто если нужны результаты запроса (при select), то делаю его активным, в иных случиях - нет.
> Где закрытие старого запроса?
А его закрывать надо? =) Я не знал =)
query.close?
Anatoly Podgoretsky (2005-12-20 18:39:00) [7]Tigra (20.12.05 18:22) [2]
А это как понимать ExecSQL и SELECT, должна быть рантайм ошибка.
Как затем понимать if act then Query1.Active:=true;
Где закрытие старого запроса?
Плохиш (2005-12-20 18:33:00) [8]
> try
> Query1.ExecSQL;
> except
> Result:=false
> end;
> if act then Query1.Active:=true;
Это ещё, что за порнография?
umbra (2005-12-20 18:29:00) [9]рулить надо в BDE Administrator\System\INIT, параметр MAXFILEHANDLES
Tigra (2005-12-20 18:22:00) [10]Моя процедура делающая запросы
function TForm1.sql (sql_string:string; act : boolean): boolean;
begin
Result:=True;
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add(sql_string);
try
Query1.ExecSQL;
except
Result:=false
end;
if act then Query1.Active:=true;
end;
Ее вызывает много раз в цикле другая процедура:
Form1.sql('SELECT * FROM oper WHERE D="'+datetostr(DateTimePicker1.Date)+'" AND REESTR='+Edit1.Text+' AND U='+inttostr(form1.user_code)+' AND VAL1="'+val[k]+'" AND VAL2="'+val[l]+'" AND CODE="'+kod_oper[j]+'" AND ((Code_Stran<>"643" OR Code_Stran="") AND VAL1<>"" AND VAL2<>"")',true);
Отрабатывает только пару раз =(
Anatoly Podgoretsky (2005-12-20 18:19:00) [11]Как понимать при "помощи query. execsql. Только select."
Где код?