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 :

SQL en VBa sur formulaires


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Points : 94
    Points
    94
    Par défaut SQL en VBa sur formulaires
    Bonjour,

    Ne connaissant pas très bien le SQL en vba, je bloque sur deux sujets :

    J'ai une table T_Stock où j'ai trois champs vetements, taille, et quantité
    Sur un formulaire F_Vetements, je peux ajouter des vêtements de dotation à une personne en fonction du vêtement et de la taille
    Dans ce formulaire F_Vetements, après la sélection du vetement et de la taille choisie, je souhaite faire apparaitre la qté de stock sur ce formulaire
    Or, j'ai une erreur sur le code que je trouve pas

    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
    Private Sub Vetements_Taille_Change()
    Dim ligne As Recordset
    Dim base As Database
     
    Set base = Application.CurrentDb
    Set ligne = base.OpenRecordset("SELECT T_Stock.Vetements, T_Stock.Taille, T_Stock.Quantite FROM T_Stock WHERE T_Stock.Vetements = " & Vetements_Vetements.Value & "and T_Stock.Taille=" & Vetemetns_Taille.Value & "'", dbOpenDynaset)
    '
    'Set ligne = base.OpenRecordset("SELECT T_Stock.Vetements, T_Stock.Taille,  FROM T_Stock WHERE (((T_Stock.Vetements)=[Formulaires]![F_Vetements]![Vetements_Vetements]) AND ((T_Stock.Taille)=[Formulaires]![F_Vetements]![Vetements_Taille]));", dbOpenDynaset)
    ligne.MoveFirst
    StockActuel.Value = ligne.Fields("Quantite").Value
     
    ligne.Close
    base.Close
    Set ligne = Nothing
    Set base = Nothing
    End Sub
    L'autre problème est que je voudrais ajouter une quantité de dotation sur la table T_Stock par la méthode Update ... Set... mais je ne connais pas la manière de le faire

    Merci pour votre aide

    Cordialement,

  2. #2
    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 595
    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 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Salut,

    le SQL que tu génères est faux, mais il nous faudrait savoir si les champs Vetements et Taille sont de type texte ou numérique.

    De plus, il te manque un espace avant le and de ton where.
    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Points : 94
    Points
    94
    Par défaut
    j'ai réussi à trouver le pbre sur le premier

    mais je ne trouve rien sur update

    Même si vous ne voulez pas répondre, pouvez vous au moins me dire si ma structure est correcte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set lig = "UPDATE T_stock SET T_stock.Quantite ='" & Vetements_Quantite.Value & "' WHERE Vetements = '" & Vetements_Vetements.Value & "' AND Taille='" & Vetements_Taille.Value & "'"
    cordialement,

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    La meilleur méthode pour écrire du SQL dans Access c'est de ne pas le faire manuellement.

    Va dans l'éditeur de requête et crée une requête qui fait ce que tu veux (pour un cas en particulier), puis change l'affichage pour "SQL" (en haut à gauche) et lit le SQL généré par Access.
    Tu peux le copier dans l'éditeur de code et ensuite intégrer les variables là où tu avais mis tes valeurs "en dur".
    Ça prend généralement 3 mn en procédant ainsi.

    Attention il faut penser à doubler les "" dans les chaînes de caractères (ou les remplacer par des apostrophes).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,

    concernant cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set lig = "UPDATE T_stock SET T_stock.Quantite ='" & Vetements_Quantite.Value & "' WHERE Vetements = '" & Vetements_Vetements.Value & "' AND Taille='" & Vetements_Taille.Value & "'"
    L'instruction SET sert à instancier un objet en VBA, ici la variable lig est de type string; ce n'est donc pas nécessaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lig = "UPDATE T_stock SET T_stock.Quantite ='" & Vetements_Quantite.Value & "' WHERE Vetements = '" & Vetements_Vetements.Value & "' AND Taille='" & Vetements_Taille.Value & "'"

Discussions similaires

  1. [AC-2007] Activer Code VBA sur Formulaire Feuille de données
    Par FewRa dans le forum IHM
    Réponses: 5
    Dernier message: 19/02/2013, 10h40
  2. [XL-2007] Requete SQL en VBA sur "Sélection" d'un feuille de données ?
    Par Cyborg dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/12/2011, 08h16
  3. Pb de syntaxe SQL en VBA sur la sélection d'une date
    Par rch05 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 18/09/2010, 17h58
  4. [AC-2007] enlever lecture seul en vba sur formulaire
    Par massi15 dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/05/2010, 16h16
  5. [SQL]vs[VBA] dans formulaire de recherche
    Par alex.a dans le forum Access
    Réponses: 3
    Dernier message: 28/07/2006, 16h20

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