ADOConnection - проблем с переоткрытием
От: Sergey__ Россия  
Дата: 07.01.05 14:44
Оценка:
среда: 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;
Sergey
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.