ADOX zum Erstellen einer mdb-Datei

Ich verwende Delphi bzw. den Borland C++ Builder 6. Ich habe ADOX als Type-Bibliothek importiert und führe den folgenden Code aus, um eine leere Access Datenbank zu erzeugen:

wchar_t data_source[4096];
AnsiString string (
„Provider=Microsoft.Jet.OLEDB.4.0;“
„Data Source=‚D:\sample.mdb‘;“
„Jet OLEDB:Engine Type=4“
);
string.WideChar(data_source,sizeof(data_source));
ADOXCatalog->Create(data_source);

In der letzten Zeile erhalte ich jedes mal eine Schutzverletzung. Was mache ich falsch?

Gruß Markus

Hallo…

ich würde einfach mal vermuten, dass Dein Problem darin liegt, dass ADOXCatalog eine Variable vom Typen TADOXCatalog ist. Das Objekt musst Du über die Klasse instanzieren. Die - zumindest für Delphi - richtige Zeile würde lauten:

 ADOXCatalog := TADOXCatalog.Create(data\_source);

Für C++ müsste das dann etwa so aussehen:

 ADOXCatalog := TADOXCatalog-\>Create(data\_source);

Ich hoffe, dass ich jetzt nicht kompletten Blödsinn geschrieben habe, wäre toll wenn Du demnächst die Deklaration der Variablen mit postest.

Gruß
Stage

[…]

Ich hoffe, dass ich jetzt nicht kompletten Blödsinn
geschrieben habe, wäre toll wenn Du demnächst die Deklaration
der Variablen mit postest.

ADOXCatalog ist in diesem Fall eine Komponente vom Typ TADOXCatalog,
ich habe sie über die Komponentenleiste/ActiveX in mein Datenmodul eingefügt.
Nachdem nun diese Komponente versagt, habe ich es alternativ mit folgendem versucht:

_Catalog* Catalog = 0;
_di_IInterface mif = CreateComObject( Sysutils::StringToGUID(„ADOX.Catalog“) );
mif->QueryInterface( &Catalog );

AnsiString bs =
„Provider=Microsoft.Jet.OLEDB.4.0;“
„Data Source=‚D:\sample.mdb‘;“
„Jet OLEDB:Engine Type=5“;

wchar_t buffer[8192];
bs.WideChar(buffer,sizeof(buffer));
Catalog->Create(buffer); // access violation!!!

Auch hier gibt es an derselben Stelle eine Schutzverletzung.
Nachdem ich anfangs die Typbibliothek importiert und Wrapper-Klassen erstellt habe, habe ich nun versucht, diesen Vorgang umzukehren. Anscheinend habe ich meinen C++ Builder nun komplett durcheinander gewürfelt - was ADOX angeht => nichts geht mehr!

Ich habe versucht, die Wrapper und Import für ADOX wieder zu entfernen. Über die IDE geht das nicht direkt, deshalb habe ich das Projekt dclusr.bpl (für Benutzerkomponenten) von ADOX befreit. Nach dem neuen Import habe ich jetzt zwar wieder die TADOXCatalog, … Komponenten in der Palette, beim kompilieren kann er mit TADOXCatalog nicht anfangen, da er den Typ nicht kennt. Im Header ADOX_OCX.h ist dieser aber als Package definiert, allerdings im namespace „Adox_tlb“.

Kannst du mir vielleicht einen Tipp geben, wie ich mein System wieder hin bekommen? Oder muss ich alles neu installieren?

Danke und Gruß

Markus