Tabellen - Feld löschen

Wie kann ich ein Feld löschen?

Sollte es die Situation erfordern, muss auch schon mal ein Feld gelöscht werden. Bitte beachten Sie, dass nur Felder gelöscht werden können, die keinen Index besitzen und achten Sie darauf, dass die Datenintegrität gewährleistet bleibt. Falls nötig, löschen Sie zunächst den Index und dann erst das Feld.

DAO-Variante

Beispiel:

Public Function DAO_DeleteField(pdbs As DAO.Database, _
                                ByVal psTable As String, _
                                ByVal psField As String) As Boolean
 
    On Error Resume Next
    pdbs.TableDefs(psTable).Fields.Delete psField
    DAO_DeleteField = (Err.Number = 0)
 
End Function
ADOX-Variante

Beispiel:

Public Function ADO_DeleteField(pcnn As ADODB.Connection, _
                                ByVal psTable As String, _
                                ByVal psField As String) As Boolean
    Dim cat As New ADOX.Catalog
 
    On Error Resume Next
    cat.ActiveConnection = pcnn
    cat.Tables(psTable).Columns.Delete psField
    ADO_DeleteField = (Err.Number = 0)
    If Not cat Is Nothing Then Set cat = Nothing
 
End Function
SQL-DDL-Variante

Beispiel:

' DAO-Variante
Public Function DDL_DeleteFieldDao(pdbs As DAO.Database, _
                                   psTable As String, _
                                   psFieldName As String) As Boolean
 
  On Error Resume Next
  Dim sSQL As String
 
  sSQL = "ALTER TABLE " & psTable & " DROP COLUMN " & psFieldName
 
  pdbs.Execute sSQL, dbFailOnError
  DDL_DeleteFieldDao = (Err.Number = 0)
 
End Function
 
' ADO-Variante
Public Function DDL_DeleteFieldADO(pcnn As ADODB.Connection, _
                                   psTable As String, _
                                   psFieldName As String) As Boolean
 
  On Error Resume Next
  Dim sSQL As String
 
  sSQL = "ALTER TABLE " & psTable & " DROP COLUMN " & psFieldName
 
  pcnn.Execute sSQL, dbFailOnError
  DDL_DeleteFieldADO = (Err.Number = 0)
 
End Function