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 :

ALTER TABLE en VB


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut ALTER TABLE en VB
    Bonjour,

    j'ai un problème concernant cette instruction SQL que je n'arrive pas à m'expliquer.

    Quand je crée une requête sur ACCESS avec cette instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "ALTER TABLE nomTable ADD COLUMN Datedujour DATETIME;"
    Cela marche niquel.
    Par contre, quand je le mets dans mon code VBA avec un traitement associé à cette nouvelle colonne, la base plante (ne répond plus)...

    Voici le code :

    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
     
    Me!Date_en_traitement.SetFocus
    DoCmd.RunCommand acCmdCopy
     
    DoCmd.OpenTable Table, acViewNormal, acEdit
    'DoCmd.RunCommand acCmdInsertTableColumn
     
    Set AjoutColonne = CurrentDb.CreateQueryDef("Téléphonie_" & Date_traitée & "", "ALTER TABLE Téléphonie_" & Date_traitée & " ADD COLUMN Datedujour DATETIME;")
    AjoutColonne.Execute
     
    For Ligne = 1 To 24
        DoCmd.RunCommand acCmdPaste
        DoCmd.RunCommand acCmdRecordsGoToNext
     
    Next
     
    DoCmd.RunCommand acCmdClose
    Peut-être ai je loupé une subtilité. J'ai essayé avec un DoCmd.RunSQL, ça ne fonctionne pas non plus.

    Ca marche avec 'DoCmd.RunCommand acCmdInsertTableColumn, apparaissant là en commentaire, mais en fait je veux créer la nouvelle colonne avec un nom (au lieu de Champ1).

    Merci par avance de votre aide

    EDIT : AjoutColonne est défini de la façon suivante : Dim AjoutColonne As QueryDef

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    As-tu essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSql ("ALTER TABLE nomTable ADD COLUMN Datedujour DATETIME;")
    Starec

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Oui, j'ai testé ces deux méthodes (DoCmd.RunSQL et en passant par un objet QueryDef) => même problème dans les deux cas

    EDIT : Est il possible par hasard de spécifier le nom d'une colonne dans la méthode

    DoCmd.RunCommand acCmdInsertTableColumn

    ???

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Pourquoir passer par un objet query def, juste cette instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSql ("ALTER TABLE nomTable ADD COLUMN Datedujour DATETIME;")
    Cela fonctionne je viens de le tester

    Starec

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Ben, je comprends pas du tout de quoi vient le problème alors :

    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
     
    Table = "Téléphonie_" & Date_traitée
     
    Me!Date_en_traitement.SetFocus
    DoCmd.RunCommand acCmdCopy
     
    DoCmd.OpenTable Table, acViewNormal, acEdit
    'DoCmd.RunCommand acCmdInsertTableColumn
     
    DoCmd.RunSQL ("ALTER TABLE Téléphonie_" & Date_traitée & " ADD COLUMN Datedujour DATETIME;")
     
    For Ligne = 1 To 24
        DoCmd.RunCommand acCmdPaste
        DoCmd.RunCommand acCmdRecordsGoToNext
     
    Next
    DoCmd.RunCommand acCmdClose
    Et j'ai le même souci, plantage de la base. Si je mets la commande SQL en commentaire et remets valide la ligne au dessus, la colonne se crée bien (mais avec le nom Champ1). Si cela marche chez toi, je ne comprends pas pourquoi ça plante pour moi :/

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Le nom de ta table c'est : Téléphonie_" & DateTraitée & ", n'est ce pas ?

    1 - Eviter tous les accents
    2 - Met le nom de ta table entre crochet
    3 - DateTraitée est donc une variable, elle doit être au format texte, utilise la fonction cstr pour la convertir.

    Il n'y a pas de raison que cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSQL ("ALTER TABLE [Téléphonie_" & Date_traitée & "] ADD COLUMN Datedujour DATETIME;")
    Starec

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Même souci je comprends pas...

    Je regarderai après manger. A toute

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    Je viens de faire un nouveau test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim dte As Date
        dte = #1/1/2006#
        DoCmd.RunSQL ("ALTER TABLE [test" & CStr(dte) & "] ADD COLUMN Datedujour DATETIME;")
    Cela me rajoute bien un champ date à la table test01012006

    Je ne comprends vraiment pas.
    Tu n'as pas répondu à mes questions précédentes. As-tu un message d'erreur et lequel

    Starec

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Re,

    En fait je n'ai aucun message d'erreur qui apparait. J'ai un gros freeze puis : Ce programme ne répond pas. Tout cela lors de l'exécution

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Bonjour,
    Tu ouvres ta table en consultation avant de la modifier. il est possible que le souci viennent de là.
    Si la table est ouverte en consultation, elle est verrouillée en modification structurelle.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Re

    Merci Oleff, j'avais pas vue ce truc, je ne comprenais pas car l'instruction que j'ai donné est bonne.

    Tsuna78, met mon instruction en début de procédure

    Starec

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Ca m'échappe quand même. J'ai tout mis en commentaire (les instructions servaient à remplir la colonne nouvellement créée). J'ai donc juste laissé l'instruction SQL, j'ai mis tout le reste en commentaire. Et pourtant je plante de la même façon... Pas de message d'erreur, plantage. Je ne sais pas si je fais une mauvaise manip ou pas.

    Code actuel :

    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
     
    '------------------------------------------------------------------------------|
    ' Rajout d'une colonne dans la table : Ajout de la date en cours de traitement |
    '------------------------------------------------------------------------------|
     
        'Me!Date_en_traitement.SetFocus
        'DoCmd.RunCommand acCmdCopy
     
        DoCmd.RunSQL ("ALTER TABLE [Téléphonie_" & Date_traitée & "] ADD COLUMN Datedujour DATETIME;")
     
        'DoCmd.OpenTable Table, acViewNormal, acEdit
        'DoCmd.RunCommand acCmdInsertTableColumn
     
        'For Ligne = 1 To 24
        '    DoCmd.RunCommand acCmdPaste
        '    DoCmd.RunCommand acCmdRecordsGoToNext
        'Next
        'DoCmd.RunCommand acCmdClose

  13. #13
    Invité
    Invité(e)
    Par défaut
    Re

    Tu n'as pas encore répondu à mes questions, lit les post précédents

    Starec

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    et pourquoi pas utiliser la méthode Append pour rajouter ton champ.

    En gros cela donnerait ca :
    CurrentDb.TableDefs!NomDeLaTable.Fields.Append CurrentDb.TableDefs!NomDeLaTable.CreateField("Datedujour", dbDate)

    @+
    rafu0n3r

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Starec : Je ne vois pas les questions que tu poses :/

    Je ne vois qu'une question, concernant les QueryDef et je ne l'utilise pas.
    Sinon Date_Traitée est au format texte.

Discussions similaires

  1. Renommer une colonne avec ALTER TABLE...
    Par David.V dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/07/2004, 10h33
  2. [débutant] conseils sur contraintes et alter table
    Par maysa dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 26/05/2004, 09h03
  3. [Delphi 2] Alter Table
    Par Form_Load dans le forum Bases de données
    Réponses: 11
    Dernier message: 23/04/2004, 14h26
  4. Probleme 'ALTER TABLE' et 'FOREIGN KEY'
    Par maahta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/09/2003, 14h25
  5. Alter table qui ne passe...
    Par Gential dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/06/2003, 17h48

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