| |

VB & DatenbankenRe: kein RE :Tabelle mit DAO oder SQL kopieren? | |  | Autor: TommyK | Datum: 17.11.03 13:37 |
| Hallo Alex,
ich hab mal vor längerer Zeit eine Prozedur mittels DAO gemacht.
Ist aber sehr aufwendig, da erst alle Felder, dann die Indizies und zuletzt alle Properties gelesen und geschrieben werden.
Public Sub CreateCopyTable(strTabname As String, strNewTabName As String)
'*******************************************
'Name: CreateCopyTable (Sub)
'Purpose: erstellt eine leere 1:1 Kopie einer Tabelle
'Author: Thomas Keßler
'Date: Mai 26, 2003, 07:08:57
'Inputs: strTabName=alter Tabellenname,strNewTabName=neuer 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(strNewTabName)
'
'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
'On Error Resume Next
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)
For Each fldIndexq In idxq.Fields
Set fldIndexz = idxz.CreateField(fldIndexq.Name)
fldIndexz.Attributes = fldIndexq.Attributes
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
Next fldIndexq
idxz.Fields.Append fldIndexz
tdfz.Indexes.Append idxz
tdfz.Indexes.Refresh
Next idxq
'
'
'Codeteil zum hinzufügen der Properties der Felder
'
For Each fldq In tdfq.Fields
For Each fldz In tdfz.Fields
For Each prpq In fldq.Properties
If fldq.Name = fldz.Name Then
Set prpq = fldq.Properties(prpq.Name)
Set prpz = fldz.CreateProperty(prpq.Name, prpq.Type, _
prpq.Value)
fldz.Properties.Append prpz
fldz.Properties.Refresh
End If
Next prpq
Next fldz
Next fldq
'
Set dbs = Nothing
End Sub der Aufruf wäre dann:
CreateCopyTable "NameOrginalTable", "NameCopyTable" Gru? TommyK |  |
 | 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 |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2025 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
|
|