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 :

Insertion de champ via une boucle


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut Insertion de champ via une boucle
    Bonjour

    J'ai un petit souci dont je ne trouve pas la solution, pourtant tout me parait correct.

    En fait, j'ai un formulaire qui me sert à créer un switch (de X ports), lorsque je veux créer un nouveau switch, je veux qu'Access me créer tous les ports de ce switch dans une de mes table. Le nombre de ports est défini est fonction de l'info entrée dans le formulaire.

    Tout semble fonctionner sauf qu'il ne me crée pas les ports et je ne comprends pas pourquoi !!

    J'ai fait ceci :

    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
    Private Sub Commande26_Click()
     
    Dim count
     
        count = 0
     
       Do While count <= Me.Nombre_de_ports.Value
     
    Dim essai
    Dim essai2
     
    essai = "INSERT INTO [T_PORT.N°Switch] VALUES ('"
    essai = essai & N°_Switch.Value & "')"
     
    essai2 = "INSERT INTO [T_PORT.Port] VALUES ('"
    essai2 = essai2 & count & "');"
     
     
        count = count + 1
        Loop
     
        End

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 881
    Points : 4 758
    Points
    4 758
    Par défaut
    Il faut respecter la syntaxe d'INSERT .
    Tu trouves de l'aide partout dans ce forum, Google ...

    "Always look at the bright side of life." Monty Python.

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    la syntaxe correcte est :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO [table] ( [champ], [champ], ...) VALUES( [valeur], [valeur], ...)
    le nombres de champs et de valeurs doivent être identiques
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Bonjour

    Bon j'ai testé plusieurs choses mais j'ai toujours la meme erreur : Access me dit qu'un point virgule manque à la fin de mon instruction SQL, alors qu'il y est !! Je pense qu'il est possible que cela vienne du DoCmd.RunSQL et de sa syntaxe.
    Si quelqu'un pouvait m'aider car j'ai beau cherché, je ne trouve pas ^^

    Voici les deux codes testés :

    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
    27
    28
    29
    30
    31
    32
    Private Sub Commande26_Click()
    On Error GoTo Err_Commande26_Click
     
     
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
     
    Dim Sw
    Sw = Me.N°_Switch.Value
     
    Dim cpte
     
        cpte = 1
     
       Do While cpte <= Me.Nombre_de_ports.Value
     
    DoCmd.RunSQL "INSERT INTO T_PORT (Port) VALUES ('" & cpte & "') WHERE [N°Switch.Value] = & Sw & "";"
     
        cpte = cpte + 1
        Loop
     
     
        End
     
     
    Exit_Commande26_Click:
        Exit Sub
     
    Err_Commande26_Click:
        MsgBox Err.Description
        Resume Exit_Commande26_Click
     
    End Sub
    et :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub Commande26_Click()
    On Error GoTo Err_Commande26_Click
     
     
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
     
    Dim Sw
    Sw = Me.N°_Switch.Value
    MsgBox Sw
     
    Dim cpte
     
        cpte = 1
     
       Do While cpte <= Me.Nombre_de_ports.Value
     
    Dim StrSql As String
    StrSql = "INSERT INTO T_PORT (Port) VALUES "
    StrSql = StrSql & "('" & cpte & "') WHERE [N°Switch.Value] = "
    StrSql = StrSql & Sw & ";"
    DoCmd.RunSQL (StrSql)
     
        cpte = cpte + 1
        Loop
     
        End
     
    Exit_Commande26_Click:
        Exit Sub
     
    Err_Commande26_Click:
        MsgBox Err.Description
        Resume Exit_Commande26_Click
     
    End Sub

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    dans le premier code il te manque un guillemet dans ton runsql

    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
    27
    28
    29
    30
    31
    32
    Private Sub Commande26_Click()
    On Error GoTo Err_Commande26_Click
     
     
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
     
    Dim Sw
    Sw = Me.N°_Switch.Value
     
    Dim cpte
     
        cpte = 1
     
       Do While cpte <= Me.Nombre_de_ports.Value
     
    DoCmd.RunSQL "INSERT INTO T_PORT (Port) VALUES ('" & cpte & "') WHERE [N°Switch.Value] =" & Sw & ";"
     
        cpte = cpte + 1
        Loop
     
     
        End
     
     
    Exit_Commande26_Click:
        Exit Sub
     
    Err_Commande26_Click:
        MsgBox Err.Description
        Resume Exit_Commande26_Click
     
    End Sub
    et dans le deusieme quand tu effectue un runsql tu n'a pas besoin de parenthèse un peu comme quand tu fait un msgbox:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub Commande26_Click()
    On Error GoTo Err_Commande26_Click
     
     
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
     
    Dim Sw
    Sw = Me.N°_Switch.Value
    MsgBox Sw
     
    Dim cpte
     
        cpte = 1
     
       Do While cpte <= Me.Nombre_de_ports.Value
     
    Dim StrSql As String
    StrSql = "INSERT INTO T_PORT (Port) VALUES "
    StrSql = StrSql & "('" & cpte & "') WHERE [N°Switch.Value] = "
    StrSql = StrSql & Sw & ";"
    DoCmd.RunSQL StrSql
     
        cpte = cpte + 1
        Loop
     
        End
     
    Exit_Commande26_Click:
        Exit Sub
     
    Err_Commande26_Click:
        MsgBox Err.Description
        Resume Exit_Commande26_Click
     
    End Sub
    [/QUOTE]

    j'esper que ca résoudra ton problème
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Bonjour et merci de ta réponse

    Malgré cette bonne volonté, j'ai toujours encore la meme erreur

    Access me dit toujours qu'un point virgule manque à la fin de l'instruction SQL...

  7. #7
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    peut tu montrer ton code?
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Ba c'est le même que dans le post n°4 avec les rectifications que tu as préconisé

    le voici :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    Private Sub Commande26_Click()
    On Error GoTo Err_Commande26_Click
     
     
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
     
     
    Dim Sw
    Sw = Me.N°_Switch.Value
     
    Dim cpte
     
        cpte = 1
     
       Do While cpte <= Me.Nombre_de_ports.Value
     
    Dim StrSql As String
    StrSql = "INSERT INTO T_PORT (Port) VALUES "
    StrSql = StrSql & "('" & cpte & "') WHERE [N°Switch.Value] = "
    StrSql = StrSql & Sw & ";"
    DoCmd.RunSQL StrSql
     
        cpte = cpte + 1
        Loop
     
        End
     
     
    Exit_Commande26_Click:
        Exit Sub
     
    Err_Commande26_Click:
        MsgBox Err.Description
        Resume Exit_Commande26_Click
     
    End Sub

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Ou :

    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
    27
    28
    29
    30
    31
    32
     
    Private Sub Commande26_Click()
    On Error GoTo Err_Commande26_Click
     
     
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
     
     
    Dim Sw
    Sw = Me.N°_Switch.Value
     
    Dim cpte
     
        cpte = 1
     
       Do While cpte <= Me.Nombre_de_ports.Value
     
    DoCmd.RunSQL "INSERT INTO T_PORT (Port) VALUES ('" & cpte & "') WHERE [N°Switch.Value] =" & Sw & ";"
     
        cpte = cpte + 1
        Loop
     
        End
     
    Exit_Commande26_Click:
        Exit Sub
     
    Err_Commande26_Click:
        MsgBox Err.Description
        Resume Exit_Commande26_Click
     
    End Sub

  10. #10
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    ok
    ton code ma l'air correcte.
    l'erreur doit surment provnir de tes variables. qu'est ce que renvoi sw?
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Il me renvoi bien le numéro du switch que je veux créer, à ce niveau là tout est bon ^^

    la boucle en elle-même fonctionne aussi

  12. #12
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    jpense pas que ca va résoudre ton problème. mais pk tu a mis des "end" apré tes "loop"???
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Effectivement cela ne règle pas le problème et pour dire vrai, je sais plus pourquoi j'ai mis end

    j'ai créer cette boucle y'a un mois au moins donc m'en souviens plus

  14. #14
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 881
    Points : 4 758
    Points
    4 758
    Par défaut
    DoCmd.RunSQL "INSERT INTO T_PORT (Port) VALUES ('" & cpte & "') WHERE [N°Switch.Value] =" & Sw & ";"
    si cpte est un entier il ne faut pas mettre de '

    alors que si Sw est un String (??? tu devrais typer tes variables ...) il faut lui en mettre ...

    "Always look at the bright side of life." Monty Python.

Discussions similaires

  1. Parcourir un champ avec une boucle
    Par gentoo dans le forum Access
    Réponses: 2
    Dernier message: 18/02/2007, 18h20
  2. Auto commit via une boucle
    Par magic charly dans le forum Sql*Plus
    Réponses: 7
    Dernier message: 06/12/2006, 15h01
  3. multiplication de champs via une table
    Par lumbroso dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 12/09/2006, 10h00
  4. [A97] VBA : Commande sql pour insertion de champs dans une table
    Par JeremieT dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/07/2006, 13h12
  5. Réponses: 4
    Dernier message: 26/08/2004, 08h01

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