Entwickler-Ecke
Datenbanken - Access Datenbank zur Laufzeit
axlegolas - Fr 10.02.06 09:58
Titel: Access Datenbank zur Laufzeit
Hallo und guten morgen.
wollte mal fragen, wie ich eine access db zur laufzeit erzeugen kann. ich hänge momentan an an meinem TableType und DatabaseName. kann es denn sein, daß delphi kein access unterstützt sondern nur paradox oder dbase?
mkinzler - Fr 10.02.06 10:11
Denn Zugriff auf eine Access-Datenbank sollte man über ADO machen nicht über die BDE, wie du es vermutlich gerade versuchst. Über ADO/Jet kann man in Delphi einfach auf die Daten einer mdb zugreifen.
axlegolas - Fr 10.02.06 10:37
Es geht mir dabei nicht um den zugriff, den handle ich mit ADO. Ich muß aber zunächst mal eine Access db erzeugen(Create db)!
mkinzler - Fr 10.02.06 10:45
Kannst du über ADi keine Datenbanken erzeugen? In diesem Fall kannst du dir in der BDE einen Alias über ODBC auf die Access-Datenbank anlegen und versuchen darüber einen neue dateu zu erstellen.
afk - Fr 10.02.06 12:27
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function DAOJetCreateDB(DBName: String; Options: Integer = dbVersion30): Boolean; var Engine, Workspace: variant; begin Result:=False; try Engine:=CreateOleObject(DAOMSJet); Workspace:=Engine.Workspaces[0]; Workspace.CreateDatabase(DBName, dbLangGeneral, Options); Workspace:=Unassigned; Engine:=Unassigned; Result:=True; except on E: Exception do ShowMessage(E.Message); end; end; |
So sollte es funktionieren. DBName ist der Dateiname (incl. Pfad) der Datenbank-Datei.
Gruß Axel
afk - Fr 10.02.06 12:31
Hab die Konstanten vergessen ... :oops:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| const DAOMSJet = 'DAO.DBEngine.35'; dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0';
dbVersion10 = 1; dbEncrypt = 2; dbDecrypt = 4; dbVersion11 = 8; dbVersion20 = 16; dbVersion30 = 32; |
Gruß Axel
axlegolas - Fr 10.02.06 12:40
Also des funzt mal gar nicht :nixweiss:
afk - Fr 10.02.06 14:06
axlegolas hat folgendes geschrieben: |
| Also des funzt mal gar nicht :nixweiss: |
Was heißt das ?
Compiliert nicht ? Exception ? Legt die DB einfach nicht an ?
Bei mir tut das einwandfrei.
Gruß Axel
axlegolas - Fr 10.02.06 14:21
legt keine db an!!
axlegolas - Fr 10.02.06 14:40
@espen
super link danke für den tip :D
axlegolas - Fr 10.02.06 15:14
@espen
da denkt man gerade 'super alles funzt', da kommt das nächste problem....
wie gesagt legt mir mein prog eine mdb an. nun erzeugt es mir aber eigene tabellen, die dann nicht in der datenbank sind. :eyecrazy:
"HIIIIIIIIIIIILFEEEEEEE" :gruebel:
kannst du mir vielleicht noch sagen kannst wie ich das handlen kann?
espen - Fr 10.02.06 15:33
Hi nochmal,
da habe ich zwei Lösungsvorschläge:
1. Du erstellst eine (leere) Originaldatenbank, welche Du dann in das entsprechende Verzeichnis kopierst.
2. Du benutzt ADOCommand und führst ein 'Create Table TableName (...)' auf der Access-Datenbank aus (Kopfkratz, weiss (noch) nicht ob das mit Access geht)
Edit:
Doch kein kopfkratz, mit ADOCommand kannst Du die Tabellen erzeugen.
Grüßle
axlegolas - Mo 13.02.06 09:16
morgen erstmal,
ich weiß nicht ganz, ich glaub ich steh aufm' schlauch. habe nun die ADOCommand angelegt. Dann habe ich den connectionstring gesetzt und versuch jetzt mit commandtext und execute die tabelle version in meiner datenbank zu erstellen. aber des funzt nicht wirklich. habe wohl die falsche sql anweisung gegeben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| CreateAccessDatabase(pDatabase); TableSet:= TADOCommand.Create(Self); TableSet.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+pDatabase+';Persist Security Info=False'; TableSet.CommandText:= 'CREATE TABLE "Version"'; TableSet.Execute; |
Moderiert von
raziel: Delphi-Tags hinzugefügt
espen - Mo 13.02.06 14:19
Tach auch,
also als erstes muss das heissen:
Delphi-Quelltext
1: 2:
| TableSet.CommandText:= 'CREATE TABLE Version'; |
Damit wird die Tabelle schon mal angelegt. Allerdings solltest Du der Tabelle noch ein paar
Felder gönnen ;-)
z.B.:
Delphi-Quelltext
1:
| TableSet.CommandText := CREATE TABLE Version(Feld1 INTEGER NOT NULL, Feld2 VARCHAR(40) NOT NULL) |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!