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 :

Requête SQL UPDATE dans macro [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut Requête SQL UPDATE dans macro
    Bonjour,

    J'ai une tables nommée tArticles composée des champs suivants:
    tArticlePK = référence article
    Articlenom = le nom de l'article
    tStock = le stock actuel

    J'ai un formulaire, d'entrées et de sorties qui contient les champs au nom de l'article et stock actuel.

    Je souhaite que le champ tStock de la table tArticles soit mise à jour à chaque entrée ou sorties en fonction du nom de l'article ou de la référence article présent dans le formulaire.

    Comme c'est dans une boucle UStock représente le champ "Stock actuel" et ChampNomArticle, l'article.
    tStock est le nom de la colonne dans la base tArticles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For I = 1 To 5
    NomChampArticle = "CboArticle" & I
    UStock = "txtStock" & I
    If Not IsNull(Controls(NomChampArticle)) Then
    uSql = "UPDATE tArticles SET tStock = [Formulaires]![fEncoSorties]!UStock WHERE (SELECT tArticles.* FROM tArticlePK WHERE ((tArticles.tArticlePK)=[Formulaires]![fEncoSorties]!NomChampArticle);"
    DoCmd.RunSQL uSql
    Else
    End
    End If
    Next
    Il y a une erreur de syntaxe dans la requête.

    Erreur 3075
    ),] ou élément absent dans l'expression (SELECT tArticles.* FROM tArticlePK WHERE ((tArticles.tArticlePK)=[Formulaires]![fEncoSorties]!NomChampArticle)

    Est-il possible de mettre des conditions en rapport avec un formulaire, ou que la valeur de remplacement soit une variable qui est un champ du formulaire ?

    Merci d'avance.

    Cordialement,

    Fred

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

    UStock étant une variable il doit être sorti de la requête et être ajouté par concaténation, comme l'appel au champ du formulaire.

    Philippe

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut Requête SQL UPDATE dans macro
    Bonjour,

    Je n'avais pas reçu la notification de ta réponse.
    Cela me donne au moins une réponse. Mais j'avoue ne pas bien comprendre comme appliquer ce que tu me suggères.

    Peux-tu m'éclairer d'avantage ?

    Cordialement,

    Fred

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour Fred_rt,

    Philippe veut dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uSql = "UPDATE tArticles SET tStock =" &  [Formulaires]![fEncoSorties]!UStock & " WHERE (SELECT tArticles.* FROM tArticlePK WHERE ((tArticles.tArticlePK)=" & [Formulaires]![fEncoSorties]!NomChampArticle)
    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut Requête SQL UPDATE dans macro
    OK,

    Merci Madefemere. Merci Philippe.

    Concaténer, avec un &

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut Requête SQL UPDATE dans macro
    Bonjour,

    Voici la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For I = 1 To 5
    NomChampArticle = "CboArticle" & I
    UStock = "txtStock" & I
    If Not IsNull(Controls(NomChampArticle)) Then
    uSql = "UPDATE tArticles SET tStock =" & [Formulaires]![fEncoSorties]!UStock & " WHERE (SELECT tArticles.* FROM tArticlePK WHERE ((tArticles.tArticlePK)=" & [Formulaires]![fEncoSorties]!NomChampArticle & "));"
    DoCmd.RunSQL uSql
    Else
    End
    End If
    Next
    Le code corrigé avec vos conseils. Mais maintenant, j'ai une erreur 2465 "MENU PRINCIPAL ne trouve pas le champ "|1" auquel il est fait référence dans votre expression".
    Pourtant j'ai utilisé cette boucle sur ces formulaires pour faire des INSERT et cela fonctionne très bien. Le champ de formulaire txtStock est le résultat d'une fonction qui calcule le stock. Est-ce la le problème ?

    Cordialement,

    Fred

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    deux petites choses je pense :
    - avant d'executer la requete SQL, essaie de voir son contenu exact avec un
    - le WHERE (SELECT *) ne me parait pas correct, a remplacer eventuellement par un
    WHERE ID IN (SELECT ID FROM ...)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  8. #8
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut Requête SQL UPDATE dans macro
    Bonjour Jean-Philippe,

    Voici le résultat des espions. En revanche, je n'ai aucun affichage dans la fenêtre d’exécution.

    Nom : Espion.JPG
Affichages : 244
Taille : 41,1 Ko

    Je vais voir comment utiliser la syntaxe que tu as suggérée.

    Cordialement,

    Fred

  9. #9
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut Requête SQL UPDATE dans macro
    Bonjour à tous,

    Voici ce qui fonctionne :
    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
    Dim uSql As String
    Dim I As Integer
    Dim NomChampArticle As String
    Dim UStock As String
    Dim AStock As String
    Dim SQuant As String
    Dim UArticle As String
     
    For I = 1 To 5
    NomChampArticle = "CboArticle" & I
    AStock = "txtStock" & I
    SQuant = "txtQuant" & I
    If Not IsNull(Controls(NomChampArticle)) And Not IsNull(Controls(AStock)) And Not IsNull(Controls(SQuant)) Then
    UStock = Forms("fEncoSorties").Controls(AStock).Value - Forms("fEncoSorties").Controls(SQuant).Value
    UArticle = Forms("fEncoSorties").Controls(NomChampArticle).Value
    uSql = "UPDATE tArticles SET tStock =" & UStock & " WHERE (tArticles.tArticlePK)=" & UArticle & ";"
    DoCmd.RunSQL uSql
    Else
    End
    End If
    Next
    Merci pour votre aide.

    Cordialement,

    Fred

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

Discussions similaires

  1. Requête SQL UPDATE dans VBA
    Par Pingouin22 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 23/09/2022, 10h37
  2. [Requête/SQL]Conditions dans un champs calculé
    Par taisherg dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/04/2007, 15h55
  3. [VB.Net] Requête d'update dans un gridview
    Par djdada dans le forum ASP.NET
    Réponses: 5
    Dernier message: 11/10/2006, 13h15
  4. Aide Requête SQL (UPDATE)
    Par Glowprod dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/07/2006, 14h04
  5. Access - Requête SQL - UPDATE
    Par tchoo83 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/12/2005, 15h48

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