Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

modif structure table via vba

1 réponse
Avatar
Jean Jacques Hinet
bonjour à tous

j'ai une table avec une clé primaire sur deux champs,
compte tenu de la modification du programme cette clé doit passer à
trois champs. les deux champs initiaux + un (ce champ existe déjà dans
la table)
il n'est pas possible de modifier manuellement la structure, fichier mde
distribué
à 200 exemplaires.
si une bonne âme avait sous le coude une fonction VBA pour effectuer
cette modification
je l'en remercie par avance

jjh

1 réponse

Avatar
eric
J'ai fait un truc de ce genre pour que chaque champs d'une
table accepte des chaines vides.
Lis le script en dessous. Si ca t'éclaire pas envoie moi
un mail.

@+


Option Compare Database

' Fonction pour vérifier que tous les champs Text de la
base (sauf les INDEXES) autorisent les chaines vides
' 1 - copier le code
' 2 - ouvrir la base
' 3 - dans la groupe MODULE faire nouveau
' 4 - coller le code
' 5 - exécuter le code

Sub autorise_chaine_vide()

Set Mabase = DBEngine.Workspaces(0).Databases(0)

For Each table In Mabase.TableDefs

' vérifie que la table n'est pas une table système

If Not table.Name Like "MSys*" Then

For Each champ In table.Fields

'MsgBox table.Name & " " & champ.Name & " " &
champ.Type


' verifie si le champ fait partie d'un index d'une clé
primaire

indexe = False
For Each idx In table.Indexes
If idx.Primary Then
For Each colonne In idx.Fields
If colonne.Name Like champ.Name
Then
'MsgBox "primaire"
indexe = True
Exit For
End If
Next
End If
If indexe Then
Exit For
End If
Next


For i = 0 To champ.Properties.Count - 1
'MsgBox champ.Properties(i).Name

' modifie la propriété du champs si nécessaire

If champ.Properties(i).Name
Like "AllowZeroLength" And Not indexe And champ.Type = 10
Then
If Not champ.Properties(i).Value Then
champ.Properties(i).Value = True
'MsgBox table.Name
'MsgBox champ.Properties(i).Value
& "changé "
End If
End If
Next i
Next
End If

Next
MsgBox "Vérification des champs terminée !"
Set champ = Nothing
Set Mabase = Nothing


End Sub