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

Requêtes et SQL. Discussion :

[VBA][SQL] code pour requete sql update en vba


Sujet :

Requêtes et SQL.

  1. #1
    titocv723
    Invité(e)
    Par défaut [VBA][SQL] code pour requete sql update en vba
    J'ai un problème avec ce morceau de code qui est censé me mettre la valeur d'une requete SQL dans le champ [nb serveurs] de mon formulaire ouvert
    Le logiciel m'affiche l'erreur suivante: Erreur de compilation, fonction ou variable attendue.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Nb_serveurs_Click()
     
    Dim SQL As String
    SQL = "SELECT Sum(Serveur.[Nombre de serveur de ce type] FROM Serveur GROUP BY Serveur.[Code Basicat], Serveur.G00R00 HAVING ((Serveur.[Code Basicat])=ME![Code basicat]) AND ((Serveur.G00R00)=ME![G00R00])"
    Me![Nb serveurs] = DoCmd.RunSQL(SQL)
     
    End Sub
    Dernière modification par titocv723 ; 23/10/2006 à 15h34.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 002
    Points : 24 587
    Points
    24 587
    Par défaut
    Il y a un mélange entre le code SQL et VBA au niveau des appels formulaires.

    ((Serveur.[Code Basicat])=" & ME![Code basicat] & ") AND ((Serveur.G00R00)=" & ME![G00R00] & ")"

    Dans le cas ou c'est du numérique sinon il faut tripler les double cotes.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    titocv723
    Invité(e)
    Par défaut
    Ok merci!
    BOn j'ai une nouvelle erreur mais je vais essayer de la résoudre tout seul. Si je bloque je reposterai un message
    Merci pour ton aide.

  4. #4
    titocv723
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Nb_serveurs_Click()
     
    Dim SQL As String
    SQL = "SELECT Sum(Serveur.[Nombre de serveur de ce type]) " & _
            "FROM Serveur " & _
            "GROUP BY Serveur.[Code Basicat], Serveur.G00R00 " & _
            "HAVING (((Serveur.[Code Basicat])=""" & Me![Code basicat] & """) AND ((Serveur.G00R00)=""" & Me![G00R00] & """));"
     
    DoCmd.RunSQL (SQL)
     
    End Sub
    Lorsque je lance l'exécution du code, j'ai un pop up: un action ExecuterSQL nécessite un argument consistant en une instruction SQL"
    Quelqu'un a une idée d'où ça peut venir?
    Merci

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Après le runsql, je mettrais plutôt un update, un delete ou un insert, pas un select.
    [Access] Les bases du débogage => ici

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Salut,


    DoCmd.RunSQL :
    Citation Envoyé par F1
    ... Expression chaîne qui correspond à une instruction SQL valide pour une requête action ...
    DoCmd.RunSQL c'est pour les requètes MAJ, suppression, création de table ....

    Pour manipuler les données de ta requête selection regarde du coté des recordset

    Ou, selon ton besoin, regarde aussi dlookup sans passer par une requête.

    A+

  7. #7
    titocv723
    Invité(e)
    Par défaut
    Merci pour ta réponse en plus ça tombe bien c'est ce que je voulais faire un Update.
    Mais du coup au moment où j'essaye d'assigner la valeur du select à la variable de l'update il me le prends pas!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Nb_serveurs_Click()
     
    Dim SQL As String
    SQL = "update application set [nb serveurs]= SELECT Sum(Serveur.[Nombre de serveur de ce type]) FROM Serveur GROUP BY Serveur.[Code Basicat], Serveur.G00R00 HAVING (((Serveur.[Code Basicat])= """ & Me![Code basicat] & """ ) AND ((Serveur.G00R00)= """ & Me![G00R00] & """ ));"
     
    DoCmd.RunSQL (SQL)
     
    End Sub
    avec update [table application] set [champs nb serveurs]=somme de ...
    TU as une idée de l'erreur que je fais parce que le logiciel m'affiche:"erreur de syntaxe dans l'expression 'SELECT Sum(Serveur.[Nombre de serveur de ce type]) FROM Serveur GROUP BY Serveur.[Code Basicat]'
    il s'arrete là (à code basicat) je sais pas pourquoi non plus.
    Merci de ton aide

  8. #8
    titocv723
    Invité(e)
    Par défaut
    Quelqu'un a une idée?
    Merci

  9. #9
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Nb_serveurs_Click()
     
    Dim SQL As String
    SQL = "update application " & _
            "set [nb serveurs]= SELECT Sum(Serveur.[Nombre de serveur de ce type]) " & _
            "FROM Serveur " & _
            "GROUP BY Serveur.[Code Basicat], Serveur.G00R00 " & _
            "HAVING (((Serveur.[Code Basicat])= """ & Me![Code basicat] & """ ) " & _
            "AND ((Serveur.G00R00)= """ & Me![G00R00] & """ ));"
    debug.print sql 
    currentDB.execute sql, dbfailonerror 
    End Sub
    Récupère le sql dans la fenêtre de débogage et copie-colle dans une requête, tu pourras plus facilement voir ce qui cloche.
    [Access] Les bases du débogage => ici

  10. #10
    titocv723
    Invité(e)
    Par défaut
    J'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update application set [nb serveurs]= SELECT Sum(Serveur.[Nombre de serveur de ce type]) FROM Serveur GROUP BY Serveur.[Code Basicat], Serveur.G00R00 HAVING (((Serveur.[Code Basicat])= "D5R" ) AND ((Serveur.G00R00)= "G02R10" ));
    ce qui est bon non?

  11. #11
    titocv723
    Invité(e)
    Par défaut
    j'ai fait des modifs sur le code.
    Maintenant j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strsql = "SELECT Sum([Nb_serveur_de_ce_type]) FROM Serveur " & _
            "WHERE (([Code Basicat]= """ & Me![Code basicat] & """ ) AND (G00R00= """ & Me![G00R00] & """ ));"
    Mais quand je l'exécute il me sort l'erreur 2342 qui dit que ce n'est pas du SQL.
    je fais un debug print et je copie colle le resultat dans un requete : la requete marche et me donne le bon résultat!
    Quelqu'un sait d'où ça vient?
    Merci

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 002
    Points : 24 587
    Points
    24 587
    Par défaut
    Bonjour voisin,

    Le générateur de requête pratique la correction automatique.

    Regarde les différences entre la requête afficher dans le générateur et celle présente dans le code.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    titocv723
    Invité(e)
    Par défaut
    Non mais là j'ai beau tout essayer, je vois pas et je pers un peu courage.
    Si quelqu'un à n'imorte quoi à me proposer je suis preneur.

  14. #14
    titocv723
    Invité(e)
    Par défaut
    j'ai coupé le code en deux morceaux!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim SQL As String
    SQL = "update application " & _
            "set [nb serveurs]= 3"
    Debug.Print SQL
    CurrentDb.Execute SQL
    Comme ça ça marche le seul problème c'est qu'il me faut remplacer le 3 par la somme d'une variable qui est stockée dans un autre table.
    Mais si j'imbrique la somme dans l'update ça marche pas.
    le code du compte c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "SELECT Sum(Serveur.[Nb_serveur_de_ce_type]) FROM Serveur" & _
    "GROUP BY Serveur.[Code Basicat], Serveur.G00R00" & _
    "HAVING (((Serveur.[Code Basicat])= """ & Me![Code basicat] & """ ) AND ((Serveur.G00R00)= """ & Me![G00R00] & """ ));"
    J'ai toutes les données mais j'y arrive pas
    Quelqu'un peu me sortir du pétrain?
    Merci

  15. #15
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Jette un oeil sur l'aide de DSum pour récupérer les données de ton select.
    [Access] Les bases du débogage => ici

Discussions similaires

  1. Echapper des caractères avec VBA pour requete SQL
    Par mpereg dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2008, 03h41
  2. Donnee excel pour requete sql dans fichier txt ou doc
    Par Yogi_01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2006, 10h04
  3. [OGS ?] Demande d'aide pour requete SQL
    Par hamtary dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/03/2006, 12h58
  4. Aide Pour Requete SQL Simple ... Merci d'avance :)
    Par thefutureisnow dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/12/2005, 11h39
  5. [SQL] aide pour requete UPDATE SVP
    Par ganok dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/03/2005, 09h17

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