IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Modifier une table liée


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    fais ce que je peux en n'informatique
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : fais ce que je peux en n'informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut Modifier une table liée
    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.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    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

  3. #3
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    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 ?

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    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

  5. #5
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    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"...

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    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 )

Discussions similaires

  1. Modifier une table liée en cours de lecture
    Par béodéo dans le forum VBA Access
    Réponses: 21
    Dernier message: 07/11/2012, 15h13
  2. Modifier la structure d'une table liée
    Par Stargate SG1 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/05/2009, 12h56
  3. Modifier le type d'un champ d'une table liée à un fichier CSV
    Par Borowsky dans le forum Modélisation
    Réponses: 3
    Dernier message: 26/03/2009, 12h14
  4. Comment modifier un champ dans une table liée ?
    Par HookerSeven dans le forum Access
    Réponses: 11
    Dernier message: 05/02/2006, 23h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo