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 :

Ajouter un nouveau champ NuméroAuto à plusieurs tables en vba et sql [AC-2013]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de kikinou61
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut Ajouter un nouveau champ NuméroAuto à plusieurs tables en vba et sql
    Bonjour,

    J'ai parcouru beaucoup de forums access et vba et j'ai essayé de créer un code, mais j'ai toujours un message d'erreur.
    Le but est d'ajouter un nouveau champ NuméroAuto dans plusieurs tables (issues d'une importation txt). Quand je fais le code pour une table, cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub Cleprim()
     Dim sql As String
     
        sql = "ALTER TABLE G10060717203159_txt ADD COLUMN ID COUNTER"
        DoCmd.RunSQL sql
     
    End Sub

    et lorsque c'est pour plusieurs table :



    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
    Public Sub chgTbl()
     Dim db As DAO.Database
     Dim tdf As DAO.TableDef
     Set db = CurrentDb
     
     Dim sql As String
     
        sql = "ALTER TABLE tdf.Name ADD COLUMN ID COUNTER"
     
     For Each tdf In db.TableDefs
        If Not (tdf.Name Like "MSys*") And tdf.Name Like "G10*" Then
          DoCmd.RunSQL sql, tdf.Name
     
     
        End If
     
     Next
    End Sub
    j'ai le message suivant : erreur d'exécution 3371 : le type d'une expression entrée pour un des arguments est incorrect.

    Merci de votre aide !

    ps:Je suis novice en Vba

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

    Ton sql est mal placé il doit être mis après le test et avec la variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "ALTER TABLE [" & tdf.Name &"] ADD COLUMN ID COUNTER"
    Philippe

  3. #3
    Membre averti Avatar de kikinou61
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut Toujours le même message d'erreur.
    Après le test signifie après "next" ou après "end if" ?
    J'ai essayé les deux mais j'ai toujours le même message. Je l'ai collé après "for each...".
    Cela ne fonctionne pas non plus.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Par défaut
    Bonjour,

    Je pense que Philippe voulais dire ça:

    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
     
    Public Sub chgTbl()
     Dim db As DAO.Database
     Dim tdf As DAO.TableDef
     Set db = CurrentDb
     
     Dim sql As String
     
     For Each tdf In db.TableDefs
        If Not (tdf.Name Like "MSys*") And tdf.Name Like "G10*" Then
          sql = "ALTER TABLE [" & tdf.Name & "] ADD COLUMN ID COUNTER"
          DoCmd.RunSQL sql, tdf.Name
        End If
     Next
    End Sub

  5. #5
    Membre averti Avatar de kikinou61
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut Idem, erreur 3371
    Bonjour Syrald,

    J'ai malheureusement toujours le même message : le type d'une expression.... Le débogage me remet sur la ligne écrite en jaune

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub chgTbl()
     Dim db As DAO.Database
     Dim tdf As DAO.TableDef
     Set db = CurrentDb
     
     Dim sql As String
     
     For Each tdf In db.TableDefs
        If Not (tdf.Name Like "MSys*") And tdf.Name Like "G10*" Then
          sql = "ALTER TABLE [" & tdf.Name & "] ADD COLUMN ID COUNTER"
          DoCmd.RunSQL sql, tdf.Name
        End If
     Next
    End Sub
    Je souhaite que ça marche , car il faut que je fasse la même chose avec plusieurs requêtes.
    Merci de votre aide.

    Valérie

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Par défaut
    Et si tu enlève le tdf.Name dans la ligne en jaune?

    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
     
    Public Sub chgTbl()
     Dim db As DAO.Database
     Dim tdf As DAO.TableDef
     Set db = CurrentDb
     
     Dim sql As String
     
     For Each tdf In db.TableDefs
        If Not (tdf.Name Like "MSys*") And tdf.Name Like "G10*" Then
          sql = "ALTER TABLE [" & tdf.Name & "] ADD COLUMN ID COUNTER"
          DoCmd.RunSQL sql
        End If
     Next
    End Sub
    D'ailleurs au passage, tu peux modifier ton IF comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If tdf.Name Like "G10*" Then
    Forcément si ça commence par "G10", ça ne commencera pas par "MSys".

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 27/07/2016, 14h56
  2. Réponses: 3
    Dernier message: 23/01/2012, 14h55
  3. Réponses: 3
    Dernier message: 10/05/2007, 07h43
  4. sous-formulaire : champs provenant plusieurs tables
    Par patbeautifulday1 dans le forum IHM
    Réponses: 13
    Dernier message: 21/12/2005, 11h17

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