Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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."
Где код?


Наверх

Титульная страница Поиск, карта сайта Написать письмо