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 :

UPDATE avec paramètre


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut UPDATE avec paramètre
    Bonjour,

    Je ne trouve rien sur mon problème. Qui est pourtant bien basique ....

    Je n'arrive pas à éxécuter un update en vb. Mon select * from Table se passe correctement, donc le problème doit résider dans la syntaxe de ma requête. Le problème est que je ne trouve rien de suffisamment complet pour pouvoir résoudre mon soucis en terme de syntaxe :


    en gros j'ai deux paramètres qui me servent à updater ma table (problématique de gestion de stock)

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub MAJ_Click()
    Dim db As DAO.Database, rst As DAO.Recordset
    Dim sSQL As String
    ' Ouverture de la base de données
    Set db = CurrentDb
     
    sSQL = " UPDATE EFFET_EN_STOCK SET EFFET_EN_STOCK.[QTE_STOCK]=forms!EFFET_EN_STOCK1!QTE_STOCK - forms!EFFET_EN_STOCK1!QTE_DOTATION WHERE EFFET_EN_STOCK.[CODE_EFFET]= forms!EFFET_EN_STOCK1!CODE_EFFET"
    Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
     
     
    End Sub
    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    les requêtes de type action (select into, update, delete, drop, alter, etc.) sont lancées avec la fonction Execute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    strSQL = "UPDATE EFFET_EN_STOCK " & _ 
    "SET EFFET_EN_STOCK.[QTE_STOCK]=forms!EFFET_EN_STOCK1!QTE_STOCK - forms!EFFET_EN_STOCK1!QTE_DOTATION " &  _
    "WHERE EFFET_EN_STOCK.[CODE_EFFET]= forms!EFFET_EN_STOCK1!CODE_EFFET"
     
    'pour l'exécution
    CurrentDb.Execute strSQL
     
    'ou
    Docmd.RunSQl strSQL
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    merci pour votre réponse.
    A l exécution, j'ai des msbbox qui apparaissent et qui me demandent de valoriser les 3 paramètres que j'utilise dans la requête d'update.
    "Entrez une valeur de paramètre"

    Je dois aussi me tromper dans la syntaxe des paramètres (j'ai testé forms! et formulaires!")

    Auriez vous une idée ? merci d'avance


    Requête modifiée :

    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
    Private Sub MAJ_Click()
    Dim db As DAO.Database, rst As DAO.Recordset
    Dim strSQL As String
     
     
    Dim QteStock As Integer, QteDotation As Integer, NewStock As Integer, CodeEffet As String
     
    QteStock = Me.QTE_STOCK.Value
    QteDotation = Me.QTE_DOTATION.Value
    CodeEffet = Me.CODE_EFFET.Value
    NewStock = QteStock - QteDotation
     
    ' Ouverture de la base de données
    Set db = CurrentDb
     
    strSQL = "UPDATE EFFET_EN_STOCK " & _
    "SET EFFET_EN_STOCK.[QTE_STOCK]= NewStock " & _
    "WHERE EFFET_EN_STOCK.[CODE_EFFET]= CodeEffet"
     
    'pour l'exécution
    DoCmd.RunSQL strSQL
     
     
    End Sub

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    alors si tu progresses comme ceci, la nouveau sera :
    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
    Private Sub MAJ_Click()
    Dim db As DAO.Database, rst As DAO.Recordset
    Dim strSQL As String
     
     
    Dim QteStock As Integer, QteDotation As Integer, NewStock As Integer, CodeEffet As String
     
    QteStock = Me.QTE_STOCK.Value
    QteDotation = Me.QTE_DOTATION.Value
    CodeEffet = Me.CODE_EFFET.Value
    NewStock = QteStock - QteDotation
     
    ' Ouverture de la base de données
    Set db = CurrentDb
     
    strSQL = "UPDATE EFFET_EN_STOCK " & _
    "SET EFFET_EN_STOCK.[QTE_STOCK]= " & NewStock & _
    " WHERE EFFET_EN_STOCK.[CODE_EFFET]= " & CodeEffet
     
    'pour l'exécution
    DoCmd.RunSQL strSQL
     
     
    End Sub
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    merci, ça me parait bon, sauf pour le paramètre CODE_EFFET.

    En effet j'ai une msgbox qui apparait : le texte de la msgbox est égal à la valeur du paramètre attendu. La variable est bien valorisée puisqu'il s'en sert dans la texte de la msgbox mais il me demande de renseigner ce paramètre.

    En complément : dans le debugger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " WHERE EFFET_EN_STOCK.[CODE_EFFET]=  " & CodeEffet
    est bien renseigné, et pourtant il me demande quand meme de renseigner une valeur de paramètre.

  6. #6
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Pour être plus clair, mon paramètre CodeEffet est égal à "BOT_47".

    Mais quand j'exécute mon formulaire access me demande de renseigner le paramètre BOT_47.

    Serait ce un problème de Type ? Ou bien l'initialisation du paramètre ?
    CodeEffet = Me.Formulaire_code_effet.Value Peut-être n'est ce pas Value qu'il faut utiliser.


    La requête fonctionne quand je mets "BOT_47" en dur à la place du paramètre CodeEffet (pourtant lui-même correctement initialisé à "BOT_47")

    Merci d'avance pour votre aide

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

Discussions similaires

  1. [Débutant] Appel d'une procédure insert ou update avec paramètres
    Par Bakkach dans le forum VB.NET
    Réponses: 17
    Dernier message: 18/04/2013, 14h44
  2. MySqlCommand - Update avec paramètres
    Par oublie13 dans le forum C#
    Réponses: 2
    Dernier message: 19/03/2013, 21h18
  3. update avec tableau en paramètre
    Par viny dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/10/2009, 16h58
  4. [AC-2003] Update avec requête paramétrée
    Par buzz73 dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/08/2009, 19h24
  5. update avec paramètre dans access (pour modifier une image)
    Par salihovic dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/02/2008, 21h27

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