Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизToo many open tables Найти похожие ветки
← →
Openfire (2004-09-29 13:46) [0]День добрый!
Такая проблема: есть две таблицы, в которые с помощью Query добавляются новые записи и в определенные момент выскакивает "Too many open tables", вполне понятно что нельзя залочить в парадоксе более 255 строк, но как послать commit не вполне понятно...
Пытаюсь использовать CommitUpdates при CachedUpdates мне пишется "Invalid handle to the function"...
Помогите, пожалуйста решить проблему...
← →
Anatoly Podgoretsky © (2004-09-29 13:48) [1]Ошибка в 17 строке
← →
Openfire (2004-09-29 14:01) [2]Не понял...
← →
Amoeba © (2004-09-29 14:23) [3]
> Openfire (29.09.04 14:01) [2]
"Ошибка в 17 строке" = "код в студию!"
← →
msguns (2004-09-29 15:06) [4]Commit для парадокса ?
ПАРАДОКС !
← →
Openfire (2004-09-30 06:34) [5]while not Eof(f) do
begin
Readln(f,s);
...
if (fio <> "") and (acc <> "") then
begin
DataModule1.Find_A.Close;
DataModule1.Find_A.ParamByName("acc").AsString:=acc;
DataModule1.Find_A.ExecSQL;
DataModule1.Find_A.Open;
DataModule1.DataSource3.DataSet:=DataModule1.Find_A;
if DataModule1.DataSource3.DataSet.RecordCount > 0 then
begin
DataModule1.Add_Money.ParamByName("n_a").AsInteger:=zz;
DataModule1.Add_Money.ParamByName("n").AsInteger:=DataModule1.DataSource3.DataSet.FieldByName("num").AsInteger;
DataModule1.Add_Money.ParamByName("m").AsCurrency:=mon;
DataModule1.Add_Money.ExecSQL;
DataModule1.Add_Money.Close;
end
else
begin
DataModule1.Add_Human.ParamByName("fio").AsString:=UCase(fio);
DataModule1.Add_Human.ParamByName("acc").AsString:=acc;
DataModule1.Add_Human.ExecSQL;
DataModule1.Add_Human.Close;
DataModule1.Find.ParamByName("fio").AsString:=UCase(fio);
DataModule1.Find.ParamByName("acc").AsString:=acc;
DataModule1.Find.ExecSQL;
DataModule1.Find.Open;
DataModule1.DataSource3.DataSet:=DataModule1.Find;
{-- --}
DataModule1.Add_Money.ParamByName("n_a").AsInteger:=0;
DataModule1.Add_Money.ParamByName("n").AsInteger:=DataModule1.DataSource3.DataSet.FieldByName("num").AsInteger;
DataModule1.Add_Money.ParamByName("m").AsCurrency:=0;
DataModule1.Add_Money.ExecSQL;
DataModule1.Add_Money.Close;
if mon > 0 then
begin
DataModule1.Add_Money.ParamByName("n_a").AsInteger:=zz;
DataModule1.Add_Money.ParamByName("n").AsInteger:=DataModule1.DataSource3.DataSet.FieldByName("num").AsInteger;
DataModule1.Add_Money.ParamByName("m").AsCurrency:=mon;
DataModule1.Add_Money.ExecSQL;
DataModule1.Add_Money.Close;
end;
DataModule1.Find.Close;
inc(jj1);
end;
inc(jj);
end;
inc(j);
end;
в Add_Money и Add_Human insert into...
← →
msguns (2004-09-30 09:18) [6]>
DataModule1.Find_A.ExecSQL;
DataModule1.Find_A.Open;
DataModule1.Add_Money.ExecSQL;
DataModule1.Add_Money.Close;
А вот это что за сладкие парочки ?
← →
DarkMan © (2004-09-30 10:32) [7]DataModule1.Find_A.Open;
DataModule1.Add_Money.Close;
Накой это вот........
← →
Openfire (2004-10-01 05:49) [8]2msguns
>DataModule1.Find_A.ExecSQL;
>DataModule1.Find_A.Open;
Это Query в которой ищется есть ли уже данные в базе или нет
Можно конечно и DataModule1.Find_A.Active написать
>DataModule1.Add_Money.ExecSQL;
Это Query которая записывает даные в базу...
>DataModule1.Add_Money.Close;
Это соответственно ее закрытие, но оно как бы не нужно я просто искал способы отсоединиться от таблицы, что бы мне не писалось "Too many open tables"
← →
ЮЮ © (2004-10-01 07:43) [9]DataModule1.Find_A.ExecSQL;
DataModule1.Find_A.Open;
первое - лишнее, если запрос возвращает НД
DataModule1.Add_Human.ExecSQL;
DataModule1.Add_Human.Close;
второе - лишнее, если запрос вставляет записи
← →
msguns (2004-10-01 09:16) [10]>ЮЮ © (01.10.04 07:43) [9]
Похоже, ExecSQL используется вместо Prepare :)) Хотя при наличии отсутствия сервера и Prepare как мертвому припарки (О ! Какая игра слов !) ;)
← →
Openfire (2004-10-01 09:58) [11]Спасибо за помощь... Убрав ExecSQL при поиске данных все получилось...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.049 c