TKSoft-Online

Feld-Erstellen (ADOX) PDF Drucken E-Mail
( 0 Votes )
MS-Access Codes - Codeschnipsel ADO(X)
  
Montag, den 31. Dezember 2007 um 01:00 Uhr

Problemstellung:

Wie kann ich ein Feld mittels ADO(X) erstellen?


Verweis auf die Microsoft ActiveX Data Objects 2.X Library erforderlich
Verweis auf die Microsoft ADO Ext. 2.X for DDL and Security Library erforderlich

 


Sub NewCreateFieldADOX(strTabName As String, strNewFldName As String, _
                       varNewFldTyp 
As Variant
, _
                       
Optional intNewFldSize As Integer 
= 50, _
                       
Optional boolNewZeroL As Boolean False
, _
                       
Optional strNewDefaultV As String 
= "", _
                       
Optional boolAuto As Boolean False
)
'*******************************************
'Name:      NewCreateField (Sub)
'Purpose:   Erstellt ein neues Feld in der angegebenen Tabelle in der 
'           aktuellen Datenbank mittels ADOX
'Author:    Thomas Keßler
'Date:      Januar 09, 2003, 14:05:15
'Inputs:    TabName = Name der neuen Tabelle, NewFldName = Name des neuen Feldes
'           varNewFldTyp = Typ des neuen Feldes,
'           adDate=7, adDouble=5, adInteger=3, adSingle=4, adBoolean=11, adCurrency=6
'           adVarWChar=202, weitere s. OH "DataTypeEnum;"
'           NewFldSize = Grösse des neuen Feldes (nur Textfelder),
'           NewZeroL=Null Zeichenfolge zulässig
'           NewDefaultV = Standardwert, boolAuto=Autowertfeld nur DatenTyp Integer
'Output:
'*******************************************
On Error GoTo 
Err_NewField

Dim cn As New 
ADODB.Connection
Dim cat As New 
ADOX.Catalog
Dim tbl As 
ADOX.Table
Dim col As New 
ADOX.Column

Set 
cn = CurrentProject.Connection
Set 
cat.ActiveConnection = cn
Set 
tbl = cat.Tables(strTabName)
Set 
col.ParentCatalog = cat

    
With 
col
        .Name = strNewFldName
        .Type = varNewFldTyp
        
If varNewFldTyp = 202 Or varNewFldTyp = adVarWChar Then
            If intNewFldSize > 255 Then 
intNewFldSize = 255
            .DefinedSize = intNewFldSize
        
End If
        If boolNewZeroL = True Then 
.Attributes = adColNullable
        
If strNewDefaultV <> "" Then 
.Properties("Default") = strNewDefaultV
        
If boolAuto = True And (varNewFldTyp = 3 Or varNewFldTyp = adInteger) Then
            .Properties("Autoincrement") = True
        End If
        tbl.Columns.Append col
    
End With
    
Set cat = Nothing
cn.Close

Err_NewField_Exit:
    
Exit Sub
Err_NewField:
    
Dim strErrString As String
    strErrString = "Error Information..." & vbCrLf
    strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
    strErrString = strErrString & "Description: " & Err.Description & vbCrLf
    MsgBox strErrString, vbCritical + vbOKOnly, "Error in Sub: NewCreateFieldADOX"
    
Resume 
Err_NewField_Exit
End Sub

Aufruf:


Call NewCreateFieldADOX("tblNeu", "Auto_ID", adInteger, , , , True)


würde in der Tabelle "tblNeu" ein Feld "Auto_ID" vom Typ Long als Autowert-Feld erstellen.


Call NewCreateFieldADOX("tblNeu", "fld_Bez", 202, 105, , "Test")

würde in der Tabelle "tblNeu" ein Feld "fld_Bez" vom Typ Text mit einer Länge von 105 und dem
Standardwert "Test" erstellen.

DatumKlicks
Total1524
Mi. 231
Di. 225
Mo. 211
So. 205
Fr. 181
Do. 171
Mi. 162
Aktualisiert ( Freitag, den 02. Juli 2010 um 06:53 Uhr )
 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Login

Latest Comments

Latest Forum Posts

Mehr »

Download Statistik

41 Kategorien
187 Dateien
173459 Downloads