1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| Function fAddUpdateField(nombase, nomtable As String, NomChamp, TypeChamp, ValDefaut, Longueur, ValFormat, _
valCaption, ValDescr) As Variant
' Ajoute un champ s'il n'existe pas
' sinon le modifie
Dim CurDbs As Database
Dim MyTableDef As TableDef
Dim MyField As Field
Dim Exist As Variant
Dim i As Integer
Dim AddOk As Variant
' initialise la base courrante avec le param NomBase
If IsNull(nombase) Then
' verification de la version de table
nombase = GetAttachedDBName(nomtable)
End If
Set CurDbs = DBEngine.Workspaces(0).OpenDatabase(nombase)
' initialise la TableDef avec NomTable
Set MyTableDef = CurDbs.TableDefs(nomtable)
' Verifie si le nom du champ existe déjà
Exist = False
For i = 0 To MyTableDef.Fields.Count - 1
If MyTableDef.Fields(i).Name = NomChamp Then Exist = True
Next i
If Not Exist Then
' défini le nouveau champ
Select Case TypeChamp
Case dbAutoIncrField ' cas d'un Numero Auto
Set MyField = MyTableDef.CreateField(NomChamp, dbLong)
MyField.Attributes = MyField.Attributes + dbAutoIncrField ' long + autoincr
Case dbText ' cas du text + size
Set MyField = MyTableDef.CreateField(NomChamp, TypeChamp)
If Not IsNull(Longueur) Or Not IsEmpty(Longueur) Or Longueur > 0 Then
MyField.Size = Longueur
End If
Case Else
Set MyField = MyTableDef.CreateField(NomChamp, TypeChamp) ' les autres cas
MyField.Attributes = MyField.Attributes
End Select
' initialise la valeur par defaut
If Not (ValDefaut = "") Then
MyField.DefaultValue = ValDefaut
End If
' Ajoute le nouveau champ
MyTableDef.Fields.Append MyField
'initialise les propriétés
SetProperty MyField, "Format", ValFormat ' Format
SetProperty MyField, "Description", ValDescr ' Desciption
SetProperty MyField, "Caption", valCaption ' Etiquette
AddOk = True
Else
'le champ existe (modification)
MyTableDef.Fields(NomChamp).DefaultValue = ValDefaut
AddOk = False
End If
fAddUpdateField = AddOk
End Function |
Partager