![]() |
Datenbank: Access mdb • Version: 2003 • Zugriff über: ADO
Access 2.0 DB erstellen oder von Access 2003 in 2.0 konvert
Hallo,
stehe vor einem ziemlich blöden Problem: Habe eine Anwendung programmiert, die Daten transformiert und in eine (neue) Access-DB (.mdb) ausschreibt. Das klappt soweit. Problem ist nur, dass ich die Datenbank mittels
Delphi-Quellcode:
erstellen lasse und mit Access 2003/ Jet 4.0 eine Datenbank für Access 2003 erstellt wird.
AccessApp := CreateOleObject('Access.Application');
AccessApp.NewCurrentDatabase(pathHoEr); Die neue DB muss aber in ein (veraltetes) Programm (, dass ich nicht geschrieben habe!!!!) eingelesen werden, welches nur Access 2.0 unterstützt. Gibt es eine Möglichkeit eine solch antiquierte DB zu erstellen oder die neue Datenbank (abwärts) zu konvertieren? (vielleicht mit einer Jet 2.0 Version - wenn ja, wo bekommt man diese - bei Microsoft ist Jet erst ab 3.x erhältlich.) Freue mich auf eure Vorschläge! Gruss thejct PS: für VisualBasic stellt Microsoft offenbar ein Script zur Verfügung eine Access2.0-DB zu erstellen
Delphi-Quellcode:
Bekommt man das vielleicht in Delphi eingebunden??
Public Function CreateDB()
Dim newdb As DAO.DATABASE, mydb As DAO.DATABASE Dim dbname As String Dim tdf As DAO.TableDef 'Set the path and name for the new database. dbname = "C:\Program Files\Microsoft Office" _ & "\Office\Samples\Newdb.mdb" 'Create the new 2.0 database and close newdb. Set newdb = DBEngine.Workspaces(0).CreateDatabase(dbname, _ dbLangGeneral, dbVersion20) newdb.Close 'Export all non-system tables to the version 2.0 database. Set mydb = CurrentDb() For Each tdf In mydb.TableDefs If (tdf.Attributes And dbSystemObject) = 0 Then DoCmd.TransferDatabase acExport, "Microsoft Access", _ dbname, acTable, tdf.Name, tdf.Name End If Next tdf End Function |
Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon
[alter Post]
Die Schweizer haben was brauchbares für dich in der Codelib. ![]() Habs eben mal probiert. Trotzt installiertem Access 2003 erstellt die Variante über ADOX brav eine 2000er Datenbank .... [/alter Post] Habe das 2.0 ignoriert ... Google mal nach DAO und Delphi. Da solltest du was finden. Als Notlösung kannst du dir einfach ein VB Script basteln, das die DB über DAO erzeugt. Du kannst das Script aus deinem Programm aufrufen und den DB-Namen als Parameter übergeben .... Schöne Grüße, Jens :hi: |
Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon
Hi Jens,
danke für deine Antwort! Leider ist das noch nicht die Lösung! Ja, damit kann ich zwar eine Access2000-DB erstellen, aber ich brauche tatsächlich (auch wenns kaum zu glauben ist) ein Access2.0-DB, also noch vor Access97! Bitte helft mir - ich weiß nicht mehr weiter!!!!!!!!! Gruß thejct |
Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon
Dann schau die mal die KaDAO Komponenten an.
Freeware incl Source. ![]() Zitat:
|
Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon
Moin moin,
probier mal folgende function:
Delphi-Quellcode:
bzw. ähnlich deinem obigem VB:
uses {..,}Variants, ComObj{,..};
//.. Const Jet10 = 1; Jet11 = 2; Jet20 = 3; Jet3x = 4; Jet4x = 5; function CreateAccessDatabase(const FileName: String; const Version: Integer; DelIfExists: Boolean = False): string; var cat: OLEVariant; begin Result := ''; if FileExists(FileName) And DelIfExists then DeleteFile(FileName); try cat := CreateOleObject('ADOX.Catalog'); cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Jet OLEDB:Engine Type='+IntToStr(Version)+';'+ 'Data Source=' + FileName + ';'); cat := NULL; except on e: Exception do Result := e.message; end; end; procedure TForm1.Button1.Click(Sender: TObject); begin CreateAccessDatabase('test.mdb', Jet20); end; //..
Delphi-Quellcode:
uses {..,}Variants, ComObj{,..};
//.. const dbVersion10 = 1; dbVersion11 = 8; dbVersion20 = 16; dbVersion30 = 32; dbVersion40 = 64; function CreateDB(const FileName: String; const Version: Integer; DelIfExists: Boolean = False): String; var DBEngine, Workspace, Database : OleVariant; s : String; const dbLangGeneral = ';LANGID=0x0409;'; begin Result := ''; if FileExists(FileName) And DelIfExists then DeleteFile(FileName); s := dbLangGeneral + 'CP=' + IntToStr(GetACP()) + ';COUNTRY=0'; DBEngine:= CreateOleObject('DAO.DBEngine.36'); try try Workspace := DBEngine.Workspaces[0]; Database := Workspace.CreateDatabase(FileName, s, Version); Database.Close; Workspace.Close; except On E: Exception do Result := E.Message; end; finally Database := NULL; Workspace := NULL; DBEngine := NULL; end; end; procedure TForm1.Button1.Click(Sender: TObject); begin CreateDB('test.mdb', dbVersion20); end; |
Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon
Hallo zusammen,
vielen Dank für eure Antworten. Beide Codes von x000x führen zum gewünschten Ziel! THX!!! Gruß Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 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-2025 by Thomas Breitkreuz