AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Access 2.0 DB erstellen oder von Access 2003 in 2.0 konvert
Thema durchsuchen
Ansicht
Themen-Optionen

Access 2.0 DB erstellen oder von Access 2003 in 2.0 konvert

Ein Thema von thejct · begonnen am 29. Okt 2005 · letzter Beitrag vom 30. Okt 2005
Antwort Antwort
thejct

Registriert seit: 20. Okt 2005
Ort: Göttingen
5 Beiträge
 
#1

Access 2.0 DB erstellen oder von Access 2003 in 2.0 konvert

  Alt 29. Okt 2005, 12:56
Datenbank: Access mdb • Version: 2003 • Zugriff über: ADO
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:
AccessApp := CreateOleObject('Access.Application');
AccessApp.NewCurrentDatabase(pathHoEr);
erstellen lasse und mit Access 2003/ Jet 4.0 eine Datenbank für Access 2003 erstellt wird.


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:
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
Bekommt man das vielleicht in Delphi eingebunden??
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon

  Alt 29. Okt 2005, 16:48
[alter Post]
Die Schweizer haben was brauchbares für dich in der Codelib.

http://www.swissdelphicenter.ch/de/showcode.php?id=1695


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
  Mit Zitat antworten Zitat
thejct

Registriert seit: 20. Okt 2005
Ort: Göttingen
5 Beiträge
 
#3

Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon

  Alt 29. Okt 2005, 17:07
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
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon

  Alt 29. Okt 2005, 19:17
Dann schau die mal die KaDAO Komponenten an.
Freeware incl Source.


http://kadao.dir.bg/

Zitat:
KADao is our TOP and VERY POPULAR FREEWARE component for using Delphi Datasets with Microsoft DAO
It is used by more than 30000 Delphi programmers around the World
In combination with KADao Proffesional it is the most powerfull suite for handling MS Access Databases available on the market.
It is the first freeware component to completly access all databases supported by Microsoft DAO (Data Access Objects) including mdb, xls, dbf etc..
BDE is not required.
Microsoft(r) DAO(tm) must be Installed in order component to run.
Support for both Microsoft(r) Access'xx-Access'97 and Microsoft(r) Access'2000
Works perfectly with Microsoft Office XP - Access'2002
It comes with full source so you can extends its power and protect your future investments.
KADao+KADao Controls+KADao Proffesional gives the user 60 components which handle almost EVERY aspect of DAO programming in Delphi
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon

  Alt 29. Okt 2005, 21:14
Moin moin,

probier mal folgende function:
Delphi-Quellcode:
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;
//..
bzw. ähnlich deinem obigem VB:
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;
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
thejct

Registriert seit: 20. Okt 2005
Ort: Göttingen
5 Beiträge
 
#6

Re: Access 2.0 DB erstellen oder von Access 2003 in 2.0 kon

  Alt 30. Okt 2005, 20:40
Hallo zusammen,

vielen Dank für eure Antworten.

Beide Codes von x000x führen zum gewünschten Ziel!

THX!!!

Gruß

Jan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz