среда: Delphi7 ( WinXp; ADO версии: 2.7)
//в этой строке ADOConnection.ConnectionString='FILE NAME=D:\Work\MCHS\BIN\MCHSProject.udl'
ADOConnection.Open;
//в этой строке
(*ADOConnection.ConnectionString='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=.\data\MCHS.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False'
*)
//здесь все o.k. - TADODataSet - нормально открываются
ADOConnection.Close;
... поскипано, но здесь обращений к ADOConnection - нет
//в этой строке ADOConnection.ConnectionString='FILE NAME=D:\Work\MCHS\BIN\MCHSProject.udl'
ADOConnection.Open;
//здесь я получаю ошибку: Строка 'd:\Temp\MCHSProject\data\MCHS.mdb' задает ошибочный путь. Проверьте, что путь задан правильно и имеется подключение к серверу, на котором находятся файлы
откуда появляется строка d:\Temp... ?!? :xz: :crash: :shuffle: :( :maniac: :xz:
подозреваю, что проблема связана с тем, что в ConnectionString указан путь к 'udl'
т.к. при работе с путем, ведущем непосредсвенно к 'mdb' - всё работает
вырезанный кусок :
try
try
ADOConnection.Close;
CopyFile(PChar(fullNameNameSourceDB), PChar(fullNameNameBakDB), False);
V := CreateOleObject('jro.JetEngine');
r := DeleteFile(PChar(fullNameNameTargetDB));
V.CompactDatabase(SourceDB, TargetDB);
CopyFile(PChar(fullNameNameTargetDB), PChar(fullNameNameSourceDB), False);
r := DeleteFile(PChar(fullNameNameTargetDB));
finally
V := Unassigned;
end;
except
else
ShowMessage('procedure CompactDb: ' + #13#10 + Exception(ExceptObject).message);
end;