Autor |
Beitrag |
THF
      
Beiträge: 110
Vista
Delphi 2005 professional
|
Verfasst: Fr 30.01.09 12:02
Hallo,
wie kann ich ohne BDE eine neue Access-Datenbank (z.B. Test.mdb) mit ADO anlegen ???
Ich hab das noch nie gemacht.
|
|
iKilledKenny
      
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: Fr 30.01.09 12:05
Ich glaube, das geht nicht. ADO ist eine Möglichkeit auf vorhandene Datenbanken zuzugreifen, nicht aber welche anzulegen.
Bitte korrigiert mich, wenn das anders ein sollte.
|
|
THF 
      
Beiträge: 110
Vista
Delphi 2005 professional
|
Verfasst: Fr 30.01.09 12:08
iKilledKenny hat folgendes geschrieben : | Ich glaube, das geht nicht. ADO ist eine Möglichkeit auf vorhandene Datenbanken zuzugreifen, nicht aber welche anzulegen.
Bitte korrigiert mich, wenn das anders ein sollte. |
Also eine Datenbank mit BDE anlegen und dann mit ADO zugreifen ?
|
|
iKilledKenny
      
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: Fr 30.01.09 12:14
Also wenns drum geht, eine leere Access-DB mit einem Programm auszuliefern, so habe ich die DB immer als Resource mit im Programm gehabt und bei bedarf "entpackt".
Ansonsten halt mit Access anlegen.
|
|
THF 
      
Beiträge: 110
Vista
Delphi 2005 professional
|
Verfasst: Fr 30.01.09 12:18
|
|
THF 
      
Beiträge: 110
Vista
Delphi 2005 professional
|
Verfasst: Fr 30.01.09 16:56
Ich hab jetzt die leere Access-Datenbank angelegt.
Hat funktioniert, da ich kein Access habe , geht es leider nicht anders.
Müßte jetzt nur noch wissen , wie ich jetzt eine Tabelle mit Spalten anlege.
Was muß ich bei ADOTable1.Tablename:= ........ eintragen ??
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: Fr 30.01.09 21:59
THF hat folgendes geschrieben : | wie kann ich ohne BDE eine neue Access-Datenbank (z.B. Test.mdb) mit ADO anlegen ??? |
svn.berlios.de/wsvn/...atorCreateAccess.pas
twm
|
|
Ydobon
      
Beiträge: 42
|
Verfasst: Fr 30.01.09 22:09
Wenn man schon eine Datenbank hat, ist es eher zu empfehlen diese mit einer TADOConnection zu verbinden und per Execute ein 'CREATE TABLE Tabelle1 (Feld1 INTEGER, Feld2 TEXT(50)...' abzuschicken. Mit ADOX lässt sich zwar mehr einstellen, aber, wann braucht man das und SQL erspart den Schreibkrampf.
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: Fr 30.01.09 22:31
Das erstellen einer AccessDB und das erstellen einer Tabelle darin sieht folgendermaßen aus.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124:
| Function CreateDB(DBName: String; DelIfExists: Boolean = False): String; Var DBEngine, Workspace, Database: OleVariant; s, DBError : String; Const dbLangGeneral = ';LANGID=0x0409;';
Function DBAnlegen: String; Begin s := dbLangGeneral + 'CP=' + IntToStr(GetACP()) + ';COUNTRY=0'; DBEngine := CreateOleObject('DAO.DBEngine.36'); Try Try Workspace := DBEngine.Workspaces[0]; Database := Workspace.CreateDatabase(DBName, s, 64); Database.Close; Workspace.Close; DBError := OpenDB(DBName); If DBError <> '' Then Result := DBError; Except On E: Exception Do Result := E.Message; End; Finally Database := NULL; Workspace := NULL; DBEngine := NULL; End; End; Begin Result := ''; If LowerCase(Copy(DBName, Length(DBName) - 3, 4)) <> '.mdb' Then DBName := DBName + '.mdb'; If FileExists(DBName) Then If DelIfExists Then Begin DeleteFile(PChar(DBName)); Result := DBAnlegen; End Else Begin DBError := 'Datenbank existiert bereits, das löschen wurde verweigert'; Result := DBError; End Else Result := DBAnlegen; End;
Function CreateTable(DBName, Tabelle: String): String; Var cCreateData, s, DBError: String;
Begin cCreateData := 'CREATE TABLE ' + Tabelle + '(' + 'ID Counter PRIMARY KEY,' + 'Name Varchar(30),' + 'Row integer,' + 'Col integer,' + 'Data Varchar(30),' + 'DataTyp Byte,' + 'FormatNr Byte,' + 'Format Varchar(20),' + 'Pre Varchar(10),' + 'Post Varchar(10));';
s := OpenDB(DBName); if s='' then begin Con1.LoginPrompt := False; Con1.Open; qryDat.Connection := Con1;
Try qryDat.SQL.Text := cCreateData; qryDat.ExecSQL; qryDat.SQL.Text := 'Create Index IxRow on ' + Tabelle + '(Row)'; qryDat.ExecSQL; qryDat.SQL.Text := 'Create Index IxCol on ' + Tabelle + '(Col)'; qryDat.ExecSQL; qryDat.SQL.Text := 'Select * From ' + Tabelle; qryDat.Open; LastTable := Tabelle; Result := ''; Except DBError := 'Tabelle konnte nicht angelegt werden'; LastTable := ''; Result := DBError; End; end; End; |
|
|