Форум: "Базы";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизADO,FOX: файл уже используется??? Найти похожие ветки
← →
Алексей (2004-09-09 16:40) [0]Сообщение "Файл уже используется" при повторном обращении к таблице.
Получаю данные из таблицы:
MyQuery.Close;
MyQuery.SQL.Close;
MyQuery.SQL.Add("select a.поле1,b.поле2 from таблица1 а, таблица 2");
MyQuery.Open;
...
Обработка данных
...
MyQuery.Close;
Далее по ходу работы программы делаю:
if FileExists("таблица2.dbf") then begin
if not DeleteFile("таблица2.dbf") then begin
MessageDlg("Не смог удалить таблица2.dbf",mtInformation,mbOkCancel,0);
Exit;
end;
end;
qTemp.Close; qTemp.SQL.Clear;
qTemp.SQL.Add("create table таблица2.dbf" (");
qTemp.SQL.Add("поле1 numeric (6,0),поле2 numeric (10,2))");
qMagTemp.ExecSQL;
В результате файл не могет удалится....И соответственно, создаться....
Больше ни один запрос к этой таблице не обращается. Специально проверял.
P.S. Сия "хитрая" операция (прибить, а потом создать) делаю для получения чистой фоксовой таблицы, т.к. аналога команды zap в фоксе не нашел :-(
← →
Алексей (2004-09-09 17:22) [1]Вопрос в догону:
использование QuickReport как нибудь "завешивает" файл?
← →
sniknik © (2004-09-09 17:38) [2]вполне возможно в движке остается коннект (не закрывается хендл файла, т.к. это длительная операция а файл может еще понадобится).
попробуй удалять запросом.
← →
Алексей (2004-09-10 11:35) [3]Проблема в том, что при выполнении запроса
delete from таблица2
записи физически не удаляются, а помечаются как удаленные, и через неделю я буду иметь файл размером за мегабайт и далее:-(
Конечно, при тех винтах, что сейчас стоят на клиентских машинах - это копейки, но нехорошо.....
← →
sniknik © (2004-09-10 12:01) [4]> delete from таблица2
да не записи а таблицу удалей запросом.
drop table таблица2
← →
Алексей (2004-09-10 12:48) [5]Не выходит каменный цветок :-(
Нет доступа, говорит.
В обработке данных я записываю данные из запроса MyQuery в другую таблицу вторым запросом.
И потом этот второй запрос тоже пишу QueryInsert.Close;
Еще я делаю отчет, каторый привязываю к MyQuery.
Но эту форму я делаю FormOtchet.Free;
И больше я нигде к этой таблице не обращаюсь.
А есть ли возможность принудительно закрыть хендл файла?
P.S. Самое интересеное, что такая бодяга только с этим файлом. с другими таблицами все пучком.
← →
sniknik © (2004-09-10 12:55) [6]> А есть ли возможность принудительно закрыть хендл файла?
наверняка закроется если сделаеш реконект. или просто его (коннект) закроеш.
← →
Алексей (2004-09-10 13:03) [7]Пишу
MyADOConnection.Connected:=false;
И все равно :-(
← →
sniknik © (2004-09-10 13:12) [8]> Пишу MyADOConnection.Connected:=false;
> И все равно :-(
значит открыт не там. у тебя конект один? и все на него завязано?
← →
Алексей (2004-09-13 11:35) [9]Все закрыл!!!
← →
sniknik © (2004-09-13 11:54) [10]ну а запросом то пробовал?
(при закрытии конекта ADO тоже может не сразу сбрасывать выделенную память и т.д. по тойже причине, может понадобится. он и "надобится" при повторном тут же подключении, не учел.)
запросом должно сработать однозначно.
кстати это и единственно правильный путь, это же база а не разрозненные файлы (у них уже есть ограничения если не используется файл базы *.dbc, и старое снимается с поддержки), а если база есть простое удаление файла это путь к глюкам (радуйся что тебе этого не дали сделать), в базе то ссылка останется.
неиспользование базы не есть оправдание, т.к. разработчики вряд ли будут делать отдельную обработку для устаревшей схемы.
← →
Алексей (2004-09-15 15:10) [11]Прошу прощения за то что не уточнил: именно отдельные файлы....
А про дропп табле я же говорил : нет доступа :-(
← →
sniknik © (2004-09-15 15:41) [12]> А про дропп табле я же говорил : нет доступа :-(
странно, я пробовал нормально удаляет.
> P.S. Самое интересеное, что такая бодяга только с этим файлом. с другими таблицами все пучком.
?
точное имя файла/директории, строка подключения-(к какой директории), последовательность действий (как и после чего дроп делаеш). в общем сообщи все что не секретно и относится к делу.
старайся избегать таких данных
MyQuery.Open;
...
Обработка данных
...
MyQuery.Close;
именно в них глюки и живут.
← →
Алексей (2004-09-15 16:21) [13]Вот кусок кода после которого эта бодяга случается....
qMTemp.Close; qMTemp.SQL.Clear;
qMTemp.SQL.Add("select kod,kol_vo from reg where nm=:nm order by kod");
Screen.Cursor:=crSQLWait;
qMTemp.Parameters.ParamByName("nm").Value:=7;
qMTemp.Open;
Screen.Cursor:=crDefault;
lbOperachiya.Caption:="";Repaint;
lbOperachiya.Caption:="Çàïîëíÿåì VTP";
WriteLog ("Çàïîëíÿåì VTP");Repaint;
qMTemp2.Close; qMTemp2.SQL.Clear;
qMTemp2.SQL.Add("insert into vtp (kod,kol_vo) values (:kod,:kol)");
Kol_voZap:=qMTemp.RecordCount;
while not qMTemp.Eof do begin
qMTemp2.Close;
qMTemp2.Parameters.ParamByName("kod").Value:=
qMTemp.FieldByName("kod").AsInteger;
qMTemp2.Parameters.ParamByName("kol").Value:=
qMTemp.FieldByName("kol_vo").AsFloat;
qMTemp2.ExecSQL;
qMTemp.Next;
if (qMTemp.RecNo mod 25)=0 then begin
lbSost.Caption:="Îáðàáîòàííà çàïèñü "+IntToStr(qMTemp.RecNo)+
" èç "+IntToStr(Kol_voZap);
Repaint;
end;
{$IFDEF __DEB__}
if (qMTemp.RecNo=5) then break;
{$endif}
end;
qMTemp.Close;
qMTemp2.Parameters.Clear;
qMTemp2.Close;
← →
Алексей (2004-09-15 17:00) [14]причем, даже если делаю простой селект, потом клозе этого запроса,и не выхожу из программы, то винкоммандер все равно не могет переименовать этот файл.Т.е.
procedure TfrmMain.Button2Click(Sender: TObject);
qMTemp.Close; qMTemp.SQL.Clear;
qMTemp.SQL.Add("select * from vtp");
qMTemp.Open;
qMTemp.Close;
end;
← →
sniknik © (2004-09-15 17:15) [15]> Вот кусок кода после которого эта бодяга случается....
так и не углядел в нем "drop table имятейбла", это секрет?
убери все Repaint;, проверь. (смутные сомнения) вообще все лишнее убери, весь код, просто открой таблицу закрой и удали. удаляется? после с этим кодом, тогда как? убери часть, так? и т.д. ... раз уж все нужное показать нельзя, разбирайся.
и зачем тебе VFP Driver? простой insert into ... from select сделать нельзя.
> то винкоммандер все равно не могет переименовать этот файл.
про это уже говорили. делай удаление средствами движка.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.04 c