vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Datenbanken · DAO   |   VB-Versionen: VB5, VB605.01.04
Tabellenstruktur kopieren (DAO)

Hier zeigen wir, wie man die Struktur (Felddefinitionen) einer Tabelle von Datenbank A nach Datenbank B kopiert.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  16.577 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10kein Beispielprojekt 

Heute möchten wir Ihnen zeigen, wie sich die Tabellenstruktur (Felddefinitionen) einer bestimmten Tabelle von Datenbank A nach Datenbank B kopieren lässt. Als Datenbankzugriff verwenden wir DAO 3.51 bzw. DAO 3.6.

' Diese Funktion erstellt ein neues TableDef-Objekt 
' mit allen Feldern der übergebenen Tabellen
Public Function dbCopyTableDef(oTableDef As DAO.TableDef) _
  As DAO.TableDef
 
  Dim oField As DAO.Field
  Dim oIndex As DAO.Index
  Dim i As Integer
 
  Set dbCopyTableDef = New DAO.TableDef
  With dbCopyTableDef
    .Name = oTableDef.Name
 
    ' alle Felder durchlaufen und erstellen
    For i = 0 To oTableDef.Fields.Count - 1
      Set oField = New DAO.Field
      With oTableDef.Fields(i)
        On Error Resume Next
        oField.Name = .Name
        oField.Type = .Type
        oField.Size = .Size
        oField.Attributes = .Attributes
        oField.DefaultValue = .DefaultValue
        oField.OrdinalPosition = .OrdinalPosition
        oField.AllowZeroLength = .AllowZeroLength
      End With
      .Fields.Append oField
    Next i
  End With
End Function

Der Aufruf erfolgt dann in etwa so:

Dim oDBSource As DAO.Database
Dim oDBDest As DAO.Database
Dim oTableDef As TableDef
 
' Quell-Datenbank öffnen
Set oDBSource = DBEngine.OpenDatabase("Datenbank1.mdb")
 
' Ziel-Datenbank öffnen
Set oDBDest = DBEngine.OpenDatabase("Datenbank2.mdb")
 
' Jetzt Tabellenstruktur kopieren
Set oTableDef = dbCopyTableDef(oDBSource.TableDefs("Tabellenname"))
oDBDest.TableDefs.Append oTableDef
 
' Datenbanken schließen  
oDBDest.Close
oDBSource.Close

Erweiterung des Tipps:
Wir möchten alle Tabellen (Tabellenstrukturen) aus Datenbank A in die Datenbank B kopieren, aber nur dann, wenn die Tabelle in Datenbank B noch nicht vorhanden ist. Hierzu müssen wir alle Tabellen in der Datenbank A der Reihe nach durchlaufen und prüfen, ob es in Datenbank B bereits eine Tabelle mit der jeweiligen Bezeichnung gibt. Falls nicht, wird die Tabelle mit Hilfe der dbCopyTableDef-Funktion erstellt. Systemtabellen, die direkt von Access erstellt wurden, dürfen allerdings nicht berücksichtigt werden.

Dim oDBSource As DAO.Database
Dim oDBDest As DAO.Database
Dim oTableDef As TableDef
Dim oNewTableDef As TableDef
 
' Quell-Datenbank öffnen
Set oDBSource = DBEngine.OpenDatabase("Datenbank1.mdb")
 
' Ziel-Datenbank öffnen
Set oDBDest = DBEngine.OpenDatabase("Datenbank2.mdb")
 
' alle Tabelle der Quelldatenbank durchlaufen
' und prüfen, ob diese in der Zieldatenbank existieren
For Each oTableDef In oDBSource.TableDefs
  ' nur wenn keine Systemtabelle
  If LCase$(Left$(oTableDef.Name, 4)) <> "msys" Then
    If Not dbTableExists(oDBDest, oTableDef.Name) Then
      ' Jetzt Tabellenstruktur kopieren
      Set oNewTableDef = dbCopyTableDef(oTableDef)
      oDBDest.TableDefs.Append oNewTableDef
    End If
  End If
Next
oDBDest.Close
oDBSource.Close
' Prüfen, ob Tabelle in der Datenbank vorhanden
Private Function dbTableExists(oDB As Database, _
  ByVal sTableName As String) As Boolean
 
  Dim oTable As TableDef
 
  For Each oTable In oDB.TableDefs
    If oTable.Name = sTableName Then
      dbTableExists = True
      Exit For
    End If
  Next
End Function

Dieser Tipp wurde bereits 16.577 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 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