TKSoft-Online

Leere 1:1 Tabellen-Kopie erstellen mittels DAO PDF Drucken E-Mail
( 0 Votes )
MS-Access Codes - Codeschnipsel DAO
  
Montag, den 31. Dezember 2007 um 01:00 Uhr

Problemstellung:

Wie kann ich eine leere Tabellen-Kopie mittels DAO erstellen?

Verweis auf die Microsoft DAO 3.X Object Library erforderlich

 


Public Sub TableCopyDAO(strTabname As String)
'*******************************************
'Name:      TableCopyDAO (Sub)
'Purpose:   erstellt eine leere 1:1 Kopie einer Tabelle
'Author:    Thomas Keßler, Anne Berg
'Date:      Mai 06, 2005, 07:08:57
'Inputs:    strTabName=Tabellenname
'Output:
'*******************************************

    On Error Resume Next

    Dim dbs As 
DAO.Database
    
Dim tdfq As DAO.TableDef, tdfz As 
DAO.TableDef
    
Dim fldq As DAO.Field, fldz As 
DAO.Field
    
Dim idxq As DAO.Index, idxz As DAO.Index, fldIndexq As DAO.Field, fldIndexz As 
DAO.Field
    
Dim prpq As DAO.Property, prpz As 
DAO.Property

    
Set 
dbs = CurrentDb
    
Set 
tdfq = dbs.TableDefs(strTabname)
    
Set 
tdfz = dbs.CreateTableDef(strTabname & "_Temp000")

    
'­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 
    'Codeteil zum hinzufügen der Felder in der neuen 
    'Tabelle und zuweisen der DAO-Eigenschaften 
    '­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 
    For Each fldq In 
tdfq.Fields
        
Set 
fldz = tdfz.CreateField(fldq.Name, fldq.Type, fldq.Size)
        fldz.Attributes = fldq.Attributes
        
If fldq.Required Then fldz.Required = True
        If fldq.AllowZeroLength Then fldz.AllowZeroLength = True
        fldz.DefaultValue = fldq.DefaultValue
        fldz.ValidationRule = fldq.ValidationRule
        fldz.ValidationText = fldq.ValidationText
        tdfz.Fields.Append fldz
        tdfz.Fields.Refresh
    
Next 
fldq

    dbs.TableDefs.Append tdfz
    dbs.TableDefs.Refresh

    
'­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 
    'Codeteil zum hinzufügen der Indexes und 
    'der Indexfelder und Index-Eigenschaften 
    '­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 
    For Each idxq In 
tdfq.Indexes
        
Set 
idxz = tdfz.CreateIndex(idxq.Name)
        
If idxq.Primary Then idxz.Primary = True
        If idxq.Unique Then idxz.Unique = True
        If idxq.Required Then idxz.Required = True
        If idxq.IgnoreNulls Then idxz.IgnoreNulls = True
        For Each fldIndexq In 
idxq.Fields
            
Set 
fldIndexz = idxz.CreateField(fldIndexq.Name)
            fldIndexz.Attributes = fldIndexq.Attributes
            idxz.Fields.Append fldIndexz
        
Next 
fldIndexq
        tdfz.Indexes.Append idxz
        tdfz.Indexes.Refresh
    
Next 
idxq
    
'­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 

    '­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 
    'Codeteil zum hinzufügen der Properties der Felder 
    '­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 
    For Each fldq In 
tdfq.Fields
        
Set 
fldz = tdfz.Fields(fldq.Name)
        
For Each prpq In 
fldq.Properties
            
Set 
prpz = fldz.CreateProperty(prpq.Name, prpq.Type, prpq.Value)
            fldz.Properties.Append prpz
            fldz.Properties.Refresh
        
Next 
prpq
    
Next 
fldq
    
'­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 
    Set dbs = Nothing

End Sub

Aufruf:


Call TableCopyDAO("tblNeu", "tbl_TestNeu")

würde, in der aktuellen DB, von der Tabelle "tblNeu" eine 1:1 Kopie mit dem Namen "tblTest_Neu" erstellen.
Es wurden alle Felder, Indizies und benutzerdefinierte Eigenschaften kopiert.

DatumKlicks
Total1764
Mi. 234
Di. 226
Mo. 212
So. 204
Sa. 192
Fr. 183
Do. 172
Aktualisiert ( Freitag, den 02. Juli 2010 um 06:38 Uhr )
 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Login

Latest Comments

Latest Forum Posts

Mehr »

Download Statistik

41 Kategorien
187 Dateien
173466 Downloads