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: 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 18.842 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
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. |