Bonjour,
Est-il possible de modifier une table lié ?
Je dois :
1) modifier la taille d'un champ en le passant de 50 à 100 caractères
2) ajouter un champ dans une autre table
Merci de votre aide.
Bonjour,
Est-il possible de modifier une table lié ?
Je dois :
1) modifier la taille d'un champ en le passant de 50 à 100 caractères
2) ajouter un champ dans une autre table
Merci de votre aide.
Bonjour,
C'est tout à fait possible par VBA (voir cet excellent tuto DAO), sauf pour l'agrandissement d'un champ texte où il faut :
- créer un nouveau champ + grand
- recopier les valeurs
- effacer l'ancien
- renommer le nouveau champ
voici le code que j'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Public Sub Agrandir(odb As Object, table As String, champ As String, lg As Integer) If Not Mode_debug Then On Error GoTo err: Dim oTbl As DAO.TableDef, oFld As DAO.Field, prp As DAO.Property 100 Set oTbl = odb.TableDefs(table) 102 Set oFld = oTbl.CreateField("x", dbText, lg) 104 oFld.Required = False 'Null interdit ? 106 oFld.AllowZeroLength = True 'chaine vide autorisée ? 108 oTbl.Fields.Append oFld 'Ajoute le champ à la table On Error GoTo e: '10.9g parfois le champ n'a pas de description 110 Set prp = oFld.CreateProperty("Description", dbText, oTbl.Fields(champ).Properties("Description")) 112 oFld.Properties.Append prp e: If Not Mode_debug Then On Error GoTo err: 114 odb.Execute "UPDATE " & table & " SET x=" & champ, dbFailOnError 116 oTbl.Fields.Delete champ 118 oTbl.Fields("x").Name = champ 120 Set prp = Nothing 122 Set oFld = Nothing 124 Set oTbl = Nothing Exit Sub err: Call message("Erreur " & err.Number & "/" & Erl & " dans fonctions.Agrandir : " & err.description) End Sub
Bonjour Willou-78 et Nico84,
Je me permets de m'immiscer, Nico84... tu m'apprends quelque chose. Néanmoins, je trouve cela très dangereux.
Willou-78, pourquoi ne modifies-tu pas la structure de ta table initiale ?
Dans le cas d'un logiciel utilisé par plusieurs clients c'est très pratique au contraire car une fois le code écrit dans la dorsale tu es sûr que toutes les frontales subiront la même modification
Chaque nouvelle version de frontale est donc livrée avec un "patch" qui modifie la frontale à sa première exécution![]()
Oui, oui, je comprends bien (et bravo encore).
Mais, en fait, la question est plus d'ordre "politique" que technique : c'est la raison pour laquelle elle s'adresse plus à Willou-78.
Je ne sais pas pourquoi Willou-78 veut modifier la structure de la table par code :
- si c'est pour la raison que tu évoques, OK,
;
- si c'est pour passer "au-dessus" de l'éventuel DBA (ou celui qui a la responsabilité de la structure de la base), tu imagines le bazar
.
Mais bon, "cela ne nous regarde pas"...
Dans mon cas, la dorsale est protégée par un mot de passe donc seule ma frontale peut la modifier (et l'administrateur du client mais il sait que ce n'est pas son intérêt)
Partager