| |
Visual-Basic EinsteigerDatenbank erstellen | | | Autor: Sophus | Datum: 24.03.13 21:11 |
| Hallo,
mein Anliegen ist es, mittels Codes eine Datenbank zu erstellen. Zu diesem Thema Fand ich auf diesem Portal auch auch diesen Workshop:http://www.vbarchiv.net/workshop/workshop_7-einfuehrung-in-die-datenbankprogrammierung-mit-vb-teil-1.html. Sowas klappt ja auch alles wunderbar. Aber wie kann ich es so handhaben, dass ich nicht nur eine Tabelle mit den dazugehörigen Felder erstellen kann? In diesem eben vorgestellten Workshop wird ja eine Tabelle mit den dazugehörigen Felder erstellt. Ich habe schon viel herumprobiert, aber ich komme einfach nicht auf die Idee, wie ich beim Erstellen der Datenbank auch gleich mehrere Tabellen mit den dazugehörigen Felder stellen kann.
Jemand einen Vorschlag?
Ich bedanke mich jetzt schon mal.
So long, Sophus. | |
Re: Datenbank erstellen | | | Autor: Rippler | Datum: 25.03.13 00:18 |
| 'unter Projekt/Verweise
' Microsoft ActiveX Data Objects 6.1 Library
' Microsoft ADO Ext. 6.0 for DDL and Security
'oder ähnlich hinzufügen
Option Explicit
Dim oCat As ADOX.Catalog
Dim oTbl As ADOX.Table
Dim oCol As ADOX.Column
Public oCon As ADODB.Connection
Public oRs As ADODB.Recordset
Public Pfad As String
Private Sub Command1_Click()
DatenbankAnlegen ("C:\Test.mdb")
End Sub
Sub DatenbankAnlegen(Pfad As String)
Set oCat = New ADOX.Catalog
oCat.Create "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Pfad
addTabelle "Klient"
oTbl.Columns.Append "Klient", adVarWChar, 255
addTabelle "Mitarbeiter"
oTbl.Columns.Append "Mitarbeiter", adVarWChar, 255
Set oCat = Nothing
Set oTbl = Nothing
Set oCol = Nothing
End Sub
Sub addTabelle(s As String)
Set oTbl = CreateObject("ADOX.Table")
Set oCol = New ADOX.Column
Set oCol.ParentCatalog = oCat
oTbl.Name = s
oCat.Tables.Append oTbl
End Sub | |
Re: Datenbank erstellen | | | Autor: Sophus | Datum: 25.03.13 01:01 |
| Viele Danke Rippler, aber leider benutze ich DAO, nicht ADO. | |
Re: Datenbank erstellen | | | Autor: Rippler | Datum: 25.03.13 02:22 |
| Private Sub Command1_Click()
Dim Db As Database
Dim Tdf As TableDef
Dim F As Field
Set Db = DBEngine.Workspaces(0).CreateDatabase("C:\test.mdb", dbLangGeneral)
Set Tdf = Db.CreateTableDef("Klient")
Set F = Tdf.CreateField("Klient", dbText, 254)
F.Attributes = dbVariableField
Tdf.Fields.Append F
Db.TableDefs.Append Tdf
Set Tdf = Db.CreateTableDef("Mitarbeiter")
Set F = Tdf.CreateField("Mitarbeiter", dbText, 254)
F.Attributes = dbVariableField
Tdf.Fields.Append F
Db.TableDefs.Append Tdf
Db.Close
End Sub | |
Re: Datenbank erstellen | | | Autor: Sophus | Datum: 25.03.13 13:53 |
| Hallo Rippler, zunächst einmal vielen Dank für deinen Code. Soweit ist alles verständlich. Du erinnerst dich ja noch an diesen Workshop, den ich dir vorgestellt habe? Hier ein kleiner Auszug:
' Datenfeld #1
Feld.Name = "AdressNr"
Feld.Type = dbLong
Feld.Attributes = dbAutoIncrField
Tabelle.Fields.Append Feld
Set Feld = Nothing
' Datenfeld #2
Feld.Name = "Anrede"
Feld.Type = dbText
Feld.Size = 20
Feld.AllowZeroLength = True
Tabelle.Fields.Append Feld
Set Feld = Nothing Hier sehen wir, dass so an zirmlich alles gedacht wurde, um eine Tabelle zu erstellen. Typ, Attribut, Größe des Textest, Zulassung von Speichern von leeren Felder etc. Wird dies bei deinem Beispiel auch alles beachtet? Entschuldige, wenn ich mich etwas unbeholen anstelle, aber ich sehe kein Size, AllowZeroLength. Ich bin nur deshalb etwas durcheinander, weil den Workshop ziemlich schnell verstehen konnte, und dort so ziemlich alls strukturiert aufgelsitet ist. In deinem Beispiel hänge ich etwas durch.
Set F = Tdf.CreateField("Mitarbeiter", dbText, 254)
F.Attributes = dbVariableField
Tdf.Fields.Append F
Db.TableDefs.Append Tdf | |
Re: Datenbank erstellen | | | Autor: Sophus | Datum: 25.03.13 15:12 |
| Hallo Rippler,
mir ist was aufgefallen. Und zwar: Bevor ich diesen im ersten Beitrag vorgestellten Workshop (Das Erstellen der Datenbank mittels Codes) ausgeführt habe, habe ich den Verweis [B]Microsoft DAO 3.6 Object Library[/B] hinzugefügt. Der Workshop funktionierte nicht nur, sondern ich konnte die Datenbank auch mittels Visual Data Manager öffnen.
Mit diesem gleichen Verweis führte ich deinen Code durch. Der Code legte mir eine Datenbank, die Tabellen und die dazugehörigen Felder an. Diese erstellte Datenbank konnte aber nicht mit Visual Data Manager geöffnet werden. Da erscheint folgende Fehlermeldung: [u]Nicht erkennbares Datenbankformat. [...]dann folgt die Anzeige des Pfades, wo die Datenbank angelegt wurde[...] Nummer:3343 [...]Und dann folgt die Frage, ob ich die Fehlerauflistung für Datenzugriff angezeigt bekommen will?[...]Also war ich so frei, und habe den Verweis geändert und bin von dem Verweis Microsoft DAO 3.6 Object Library auf den Verweis Microsoft DAO 3.51 Object Library gegangen - sprich nur ausgetauscht. Da funktioniert also beides, das Anlegen der Datenbank, Tabellen und die dazughörigen Felder und die Datenbank lies sich auch über die Visual Data Manager öffnen.
Nun die Frage, wieso lässt sich die unter deinem Code, mit dem verweis Microsoft DAO 3.6 Object Libraray angelegte Datenkbank mit Visual Data Manager nicht öffnen?
Vielen Dank
Sophus
Beitrag wurde zuletzt am 25.03.13 um 15:14:28 editiert. | |
Eine gute Nachricht, aber ein weiteres Problem. | | | Autor: Sophus | Datum: 26.03.13 18:47 |
| Eine gute Nachricht. Ich konnte das Problem für mich beheben. Jedoch habe ich keine ausführliche und detaillierte Erklärung. Was habe ich gemacht?
Ich habe Ripplers Quellcode etwas modifiziert.
Vorher:
Set Db = DBEngine.Workspaces(0).CreateDatabase("C:\test.mdb", dbLangGeneral) Modfiziert:
Set db = DBEngine.Workspaces(0).CreateDatabase(strPath & "\" & Text1.Text & _
".mdb", dbLangGeneral, _
dbEncrypt + dbVersion30) Damit lässt sich die angelegte Datenbank, mit den dazugehörigen Tabellen und Felder auch mit Visual Data Manager öffnen. Soweit alles ganz gut.
Nun, mit meinem Programm will ich es so bewerkstelligen, dass mittels meines Programm eine Datenbank anlegen kann. Dazu ist es möglich den Namen der Datenbank, den Namen der Tabellen und die Namen der Felder selbst zu benennen. Die Größen der Feelder und die Anzahlen der Felder so wie Tabellen bleiben natürlich festgelegt. Nur die Namen können geändert werden. Die Datenbank wird dann angelegt, und die Namen werden bei mir in eine INI-Datei hinterlegt. Beim Start meines Programm werden Namen aus der INI-Datei ausglesen. Soweit auch alles in Ordnung. Nur ein kleines Problem ist, beim Speichern will es nicht klappen.
Vorher bin ich wie folgt verfahren, um Daten in die Datenbank zu speichern. (Es handelt sich hierbei um Ausschnitte): In diesem Auschnitt wird der Name des Feldes vorgegeben. Hier heißt er Titel. Über diesen Weg lässt sich die Daten in die Datenbank speichern.
dyn.AddNew
dyn!Titel = Me.txt_filmtitel.Text
dyn.Update
dyn.Close
Unload Me
End Sub Im nächsten Ausschnitt wollte ich den Namen des Feldes mit dem String übermitteln.
Dim t25 As String
t25 = midi.sKeyNames25.Text'In der Textbox steht "Titel"
dyn.AddNew
dyn!t25 = Me.txt_filmtitel.Text
dyn.Update
dyn.Close
Unload Me
End Sub Aber leider will es mir nicht gelingen, dass der Name des Feldes mit dem String übermittelt wird. Hat jemand eine Idee wo der Fehler liegt? | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|