vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Datenbank 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datenbank erstellen 
Autor: Sophus
Datum: 25.03.13 01:01

Viele Danke Rippler, aber leider benutze ich DAO, nicht ADO.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel