Tipp 0321 Datenbank erstellen (DAO)
Autor/Einsender:
Datum:
  Detlev Schubert
25.03.2003
Entwicklungsumgebung:   VB 6
Dieses Beispiel zeigt, wie mit dem DAO-Datenzugriffsmodell eine neue Datenbank erstellt wird und dieser auch zwei Tabellen hinzufügt werden. Mit der Append- und CreateField-Methode werden neue Felder erstellt, wobei sowohl der Name als auch Datentyp und Größe des Feldes festgelegt werden. Zusätzlich wird mit dem Relation-Objekt eine Beziehung zwischen Feldern in den Tabellen hergestellt.
 
Option Explicit

Private Sub cmdCreateDB_Click()
  Dim strPWD As String

  Dim strAppPath As String
  Dim strDBFileName As String

  Dim WS As Workspace
  Dim DB As Database
  Dim tdfNew1 As TableDef, tdfNew2 As TableDef
  Dim idxNew As Index
  Dim relNew As Relation

  If chkPWD.Value <> 0 Then
    strPWD = txtPWD.Text
    If Len(strPWD) = 0 Then
      MsgBox "Bitte geben Sie ein Passwort ein!", _
               vbOKOnly + vbInformation, Me.Caption
      txtPWD.SetFocus
      Exit Sub
    End If
  End If

  If Len(txtDBName.Text) <> 0 Then
    strAppPath = App.Path
    If Right$(strAppPath, 1) <> "\" Then
      strAppPath = strAppPath & "\"
    End If

    strDBFileName = strAppPath & txtDBName.Text
    If LCase$(Right$(strDBFileName, 4)) <> ".mdb" Then
      strDBFileName = strDBFileName & ".mdb"
    End If

    On Error GoTo err_Handler

    Set WS = DBEngine.Workspaces(0)

    If chkPWD.Value = 0 Then
      Set DB = WS.CreateDatabase(strDBFileName, dbLangGeneral, _
            dbEncrypt)
    Else
      Set DB = WS.CreateDatabase(strDBFileName, dbLangGeneral & _
            ";pwd=" & strPWD, dbEncrypt)
    End If

    Set tdfNew1 = DB.CreateTableDef("tbl_Adressen")
    With tdfNew1
      .Fields.Append .CreateField("ID", dbLong)
      .Fields(0).Attributes = dbAutoIncrField
      .Fields.Append .CreateField("Name", dbText, 50)
      .Fields.Append .CreateField("Vorname", dbText, 50)
      .Fields.Append .CreateField("Strasse", dbText, 50)
      .Fields.Append .CreateField("Ort", dbText, 50)
      .Fields.Append .CreateField("Telefon", dbText, 20)
      .Fields(5).AllowZeroLength = True
      .Fields.Append .CreateField("GebDatum", dbText, 10)
      .Fields(6).AllowZeroLength = True

      Set idxNew = .CreateIndex("IDIndex")
      idxNew.Fields.Append idxNew.CreateField("ID")
      idxNew.Primary = True
      .Indexes.Append idxNew
    End With
    DB.TableDefs.Append tdfNew1

    Set tdfNew2 = DB.CreateTableDef("tbl_Schulden")
    With tdfNew2
      .Fields.Append .CreateField("ID", dbLong)
      .Fields.Append .CreateField("Datum", dbDate)
      .Fields.Append .CreateField("Gesamtschulden", dbDouble)
      .Fields.Append .CreateField("Einzelbetrag", dbDouble)
      .Fields.Append .CreateField("Bemerkungen", dbText, 50)
      .Fields(4).AllowZeroLength = True
    End With
    DB.TableDefs.Append tdfNew2

    Set relNew = DB.CreateRelation( _
          "ID_Relation", tdfNew1.Name, tdfNew2.Name, _
          dbRelationUpdateCascade + dbRelationDeleteCascade)
    relNew.Fields.Append relNew.CreateField("ID")
    relNew.Fields!ID.ForeignName = "ID"
    DB.Relations.Append relNew

    DB.Close
    WS.Close

  Else
    MsgBox "Bitte geben Sie einen Datenbanknamen ein", _
            vbCritical, "Fehler"
  End If
  Exit Sub

err_Handler:
  Select Case Err.Number
    Case 3204
      MsgBox "Der Datenbankname ist schon vorhanden!", _
              vbExclamation, "Fehler"
    Case Else
      MsgBox "Es ist der Fehler:" & Str$(Err.Number) & vbCrLf & _
              """quot; & Err.Description & """aufgetreten.", _
              vbCritical, "Fehler"
  End Select
  Exit Sub
End Sub
 
Hinweis für VBA-Anwender
Mit kleinen Anpassungen funktioniert der hier abgebildete Code auch in einem VBA-Projekt. Dieser muss dazu in den VB-Editor der entsprechenden Anwendung kopiert werden. Ein Import der im Download enthaltenen *.frm-Datei ist nicht möglich.
Hinweis
Um diesen Tipp ausführen zu können, muss entweder die Microsoft DAO 3.51 Object Library oder die Microsoft DAO 3.6 Object Library als Verweis in das Projekt eingebunden werden.
Weitere Links zum Thema
Datenbank erstellen (ADO)
Tabellen in Datenbank analysieren

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (4 kB) Downloads bisher: [ 3306 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 27. August 2011