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

Access Discussion :

Modifier la structure d'une table par macro / vba


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 45
    Points
    45
    Par défaut Modifier la structure d'une table par macro / vba
    Bonjour,
    Est-il possible de modifier par le biais d'une macro ou mieux j'imagine par le vba la structure d'une table. Par exemple ajouter ou supprimer un champ, modifier ses caractéristiques.

    Le but est de faire de la maintenance à distance en envoyant à l'utilisateur une mise à jour qui modifiera ses formulaires et etats suivant ses besoins (ça je sais faire) mais aussi les tables si nécessaire (idem pour les requêtes j'imagine).

    Merci par avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Tu peux le faire avec une requête action.

  3. #3
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    oups !

    Je présume qu'heureux-Oli voulait parler des requêtes DDL et pas des requêtes Action.

    En efeft, en SQL, tu as tout un tas de clauses qui te permettent d'intervenir sur la structure d'une table :
    CREATE ...
    ALTER ...
    DROP...
    etc.
    etc.

    Puisqu'il s'agit de SQL, tu peux, soit créer ces requêtes et les exécuter, soit exécuter directement le SQL depuis le VBA.

    Enfin, pour ce qui est de modifier une requête, rien de plus facile : il te suffit de modifier la propriété SQL de l'objet QueryDef que tu veux, en y mettant le SQL voulu.

    voili

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Exact, ma langue à fourché et mes doigts on glissés.

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 45
    Points
    45
    Par défaut
    Merci, je sais ce qu'il me reste à faire... ce sera long

  6. #6
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Mais non pas long !
    C'est très simple !

    Tu veux un exemple ?

  7. #7
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    A ta disposition aussi la faq DAO
    http://warin.developpez.com/access/dao/
    Objet Tabledef (Chapitre 4)

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 45
    Points
    45
    Par défaut
    Merci beaucoup.

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 45
    Points
    45
    Par défaut
    Je me permets d'ajouter une réponse "toute faite" à ma question initiale pour ajouter un champ dans une table... ce qui n'empêche pas d'apprendre le DAO naturellement

    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
    24
    25
    26
     
    Public Function FieldsAdd()
        Dim Db As DAO.Database
        Dim Tbl As DAO.TableDef
        Dim fld As DAO.Field
        Dim Idx As DAO.Index
     
        Set Db = CurrentDb() ' Ouverture base de données
        Set Tbl = Db.TableDefs("NouvelleTable")  'ouverture définitions tables
     
        Set fld = Tbl.CreateField("Ville", dbText)
        fld.OrdinalPosition = 3                             'champ position 3
        fld.Size = 50                                      'taille 50 caractères
        fld.Required = True                                 'valeur nulle interdite
        fld.AllowZeroLength = False                         'chaine vide autorisée
     
        Tbl.Fields.Append fld                           'ajout du champ dans la table
        Set Idx = Tbl.CreateIndex("Ville")              'création d'un index
        Idx.Primary = False
        Idx.Required = True
        Idx.Unique = False                                   ' avec doublons
        Set fld = Idx.CreateField("Ville")                   'définition du champ qui sert d'index
        Idx.Fields.Append fld                               'ajout du champ dans l'index
        Tbl.Indexes.Append Idx                          'ajout de l'index dans la table
     
    End Function



    et pour le type de champ
    dbBoolean = "Oui/Non"
    dbByte = "Octet"
    dbInteger = "Entier"
    dbLong = "Entier long"
    dbCurrency = "Monétaire"
    dbSingle = "Réel S"
    dbDouble = "Réel D"
    dbDate = "Date"
    dbBinary = "Binaire"
    dbText, dbChar = "Texte"
    dbLongBinary, dbVarBinary = "Binaire 2"
    dbMemo = "Mémo"
    dbGUID = "GUID"
    dbBigInt = "Numérique HP"
    dbNumeric = "Numérique"
    dbDecimal = "Décimal"
    dbFloat = "Flottant"
    dbTime, dbTimeStamp = "Heure"

    en espérant que cela puisse vous aider aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier la structure d'une table sql server2000
    Par pigeon11 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/03/2009, 18h18
  2. Modifier la structure d'une table
    Par kroma23 dans le forum InterBase
    Réponses: 1
    Dernier message: 14/02/2009, 11h42
  3. modifier la structure d'une table
    Par kroma23 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/01/2009, 16h05
  4. Modifier la structure d'une table
    Par sami_c dans le forum WinDev
    Réponses: 3
    Dernier message: 01/10/2006, 20h00
  5. [SQL Access] Modifier la structure d'une table
    Par Le Lézard dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/06/2004, 14h03

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