Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi JRO_TLB Fehler meldung "Klasse nicht registiriert" (https://www.delphipraxis.net/67273-jro_tlb-fehler-meldung-klasse-nicht-registiriert.html)

k_ocel 12. Apr 2006 09:56

Datenbank: Access • Version: 2000 • Zugriff über: Jetengine

JRO_TLB Fehler meldung "Klasse nicht registiriert"
 
Hi Leute.
ich habe eine probleme!
weiss jemand ?
ich versuche mit JRO_TLB.pas (komponante jetengine) Access Datenbank reparieren.
ich habe delphi6.
zu erst im delphi5 JRO_TLB compaliert.
dannach im delphi6 installiert.
das funksioniert.
kein fehler meldug aber bei der programm ablauft gib es eine fehler "Klasse nicht registiriert"
Delphi-Quellcode:
procedure TJetEngine.CompactDatabase(const SourceConnection: WideString;
                                     const Destconnection: WideString);
begin
  DefaultInterface.CompactDatabase(SourceConnection, Destconnection);
end;
und fehler meldug

Im Projekt frmaccessdbnamerename.exe ist eine Exeption der Klasse EOleException aufgetreten Meldung:'Klasse nicht registriert'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

wie könnte diese problem lösen?

delphi gesamte code ist
Delphi-Quellcode:
function TfrmAccessDbRenameF.DatabaseCompact(const sdbName: WideString) : boolean;
var
   Jetablechange  : TJetEngine; //Jet Engine
   sdbTemp        : WideString; //TEMP database
   sdbTempConn    : WideString; //Connection string
const
   SProvider      = 'Provider=Microsoft.Jet.OLEDB.4.0'+
                      'Data Source=';
begin
   Result         :=False;
   sdbTemp        := ExtractFileDir(sdbName) +'\TEMP'+ExtractFileName(sdbName);
   sdbTempConn    := SProvider + sdbtemp;
   if FileExists(sdbTemp) then
      DeleteFile(sdbTemp);
   Jetablechange  := TJetEngine.Create(Application);
   try
      try
        Jetablechange.CompactDatabase(SProvider + sdbName, sdbTempConn);
        DeleteFile(sdbName);
        RenameFile(sdbTemp, sdbName);
      except
        on E:Exception do
               ShowMessage(E.Message);
      end;
   finally
     Jetablechange.FreeOnRelease;
     Result:=True;
   end;
end;

procedure TfrmAccessDbRenameF.btnComapctClick(Sender: TObject);
var
  dbSrc : WideString;
  dbDest : WideString;
const
  SProvider = 'Provider=Microsoft.Jet.OLEDB.4.0'+
              'Data Source=d:\kemal\';
begin
  dbSrc := SProvider + edSource.Text;
  dbDest := SProvider + edDest.Text;

  if FileExists(edDest.Text) then
     DeleteFile(edDest.Text);
  if DatabaseCompact(dbsrc)=true then
     showmessage('Repariert!!!')
  else
     showmessage('Nicht repariert!!!')

//  Jetablechange.CompactDatabase(dbSrc,dbDest);
end;
Mit freundlichen Grüssen

Bernhard Geyer 12. Apr 2006 10:15

Re: JRO_TLB Fehler meldung "Klasse nicht registiriert&q
 
Zitat:

Zitat von k_ocel
kein fehler meldug aber bei der programm ablauft gib es eine fehler "Klasse nicht registiriert"

Da ist irgendwas in der JET-Installation im BS nicht korrekt. Schau mal bei MS ob du ein aktuelle Jet-Update herunterladen und installieren kannst. Evtl. wird damit ja dieses Problem korrigiert.

Und nimm mal aus deinen Connection-String die Versionsfestlegung (4.0) heraus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz