| Autor |
Beitrag |
axlegolas
      
Beiträge: 42
WIN 2000, WIN XP
D 6,D 2006, C#
|
Verfasst: Fr 10.02.06 09:58
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?
_________________ Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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.
_________________ Markus Kinzler.
|
|
axlegolas 
      
Beiträge: 42
WIN 2000, WIN XP
D 6,D 2006, C#
|
Verfasst: 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)!
_________________ Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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.
_________________ Markus Kinzler.
|
|
afk
      
Beiträge: 102
Win 2K, Win XP
Delphi 2006 Arch., Delphi 6 Ent., MS-SQL 2005 & 2000
|
Verfasst: 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
_________________ Man muß sparn wo mn knn !
|
|
afk
      
Beiträge: 102
Win 2K, Win XP
Delphi 2006 Arch., Delphi 6 Ent., MS-SQL 2005 & 2000
|
Verfasst: Fr 10.02.06 12:31
Hab die Konstanten vergessen ...
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
_________________ Man muß sparn wo mn knn !
|
|
axlegolas 
      
Beiträge: 42
WIN 2000, WIN XP
D 6,D 2006, C#
|
Verfasst: Fr 10.02.06 12:40
Also des funzt mal gar nicht 
|
|
afk
      
Beiträge: 102
Win 2K, Win XP
Delphi 2006 Arch., Delphi 6 Ent., MS-SQL 2005 & 2000
|
Verfasst: Fr 10.02.06 14:06
axlegolas hat folgendes geschrieben: | Also des funzt mal gar nicht  |
Was heißt das ?
Compiliert nicht ? Exception ? Legt die DB einfach nicht an ?
Bei mir tut das einwandfrei.
Gruß Axel
_________________ Man muß sparn wo mn knn !
|
|
axlegolas 
      
Beiträge: 42
WIN 2000, WIN XP
D 6,D 2006, C#
|
Verfasst: Fr 10.02.06 14:21
legt keine db an!!
_________________ Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
|
|
espen
      
Beiträge: 90
Erhaltene Danke: 1
D6 Prof./D7 Prof. MSSQL, MySQL
|
Verfasst: Fr 10.02.06 14:24
|
|
axlegolas 
      
Beiträge: 42
WIN 2000, WIN XP
D 6,D 2006, C#
|
Verfasst: Fr 10.02.06 14:40
@espen
super link danke für den tip 
_________________ Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
|
|
axlegolas 
      
Beiträge: 42
WIN 2000, WIN XP
D 6,D 2006, C#
|
Verfasst: 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.
"HIIIIIIIIIIIILFEEEEEEE"
kannst du mir vielleicht noch sagen kannst wie ich das handlen kann?
_________________ Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
|
|
espen
      
Beiträge: 90
Erhaltene Danke: 1
D6 Prof./D7 Prof. MSSQL, MySQL
|
Verfasst: 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 
      
Beiträge: 42
WIN 2000, WIN XP
D 6,D 2006, C#
|
Verfasst: 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
_________________ Jene Menschen die zu Tage träumen sind gefährliche Menschen, denn ihre Träume sind Träume der Veränderung und des Chaos.
|
|
espen
      
Beiträge: 90
Erhaltene Danke: 1
D6 Prof./D7 Prof. MSSQL, MySQL
|
Verfasst: 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) |
|
|