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 :

Problème mise à jour stock


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème mise à jour stock
    Bonjour à tous,

    J’ai créer une base de données Access pour la gestion d’un petit magasin au sein de ma société.

    J’aimerais que le champ quantité d’une table se mette à jour automatiquement à l’encodage via deux formualires pour l’entrée et la sortie de marchandises

    J’ai créer les tables suivantes pour gérer les mouvements et stock.
    T_Articles_Inventaire 0115 : est la table qui contient les articles en stock à un moment donné ( inventaire fait une fois par an)
    T_Stock_SAP :sert à entrer les marchandises qui sont commandées au fournisseur .
    T_Bon_de_commande et T_détails : sont les deux tables qui enregistrent les sorties de mon magasins.

    Mon but est de mettre à jour la quantité dans la table « T_Articles_Inventaire 0115 » INV_QTY avec le formulaire Ajouter une commande SF via le champ DC_QTY.

    1.J’ai essayer de par un événement après mis à jour dans le formulaire sur le champ DC_QTY avec le code suivant :
    DoCmd.RunSql "UPDATE T_Articles_Inventaire 0115 SET T_Articles_Inventaire 0115.INV_QTY=Formulaires!Ajouter une commande SF![DC_QTY] WHERE ((T_Détails.OUT_ID)=[Formulaire] ! [Ajouter une commande SF] ![OUT_ID])
    Mais il y a un problème de syntaxe

    2.J’ai également créer une requête de mis à jour pour récupérer le code SQL et faire calculer :
    DoCmd.RunSQL "UPDATE [T_Articles_Inventaire 0115] INNER JOIN [T_Détails] ON [T_Articles_Inventaire 0115].OUT_ID=[T_Détails].OUT_ID SET [T_Détails].DC_QTY=[T_Articles_Inventaire 0115]![INV_QTY]-[T_Détails]![DC_QTY]"
    Mais il veut me changer tous mes enregistrements et pas juste un seul

    Par contre je peux gérer le message d’erreur sur événement de sortie par :
    DoCmd.SetWarnings False

    Voici la DB en pièce jointe mais allégée.

    Quelqu’un peut-il me corriger et me mettre sur la bonne voie.

    Merci d’avance
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 099
    Points : 5 217
    Points
    5 217
    Par défaut
    Bonjour,

    Qq remarques :
    - il vaut mieux éviter les espaces dans les noms d'objet, sinon cela oblige à les mettre systématiquement entre [] (d'où le bug 1)
    - il n'y a pas de WHERE dans la requete 2 -> modifie toute la table
    - j'utilise currentDB.execute plutot que docmd.runsql car cela permet une gestion d'erreur complète qui fait gagner du temps

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub nouveau_Click()
    dim Sr as string
    If Not Mode_debug Then On Error GoTo err:
    104 Sr = "INSERT INTO tool (cd_tool,e_tool,tool_cre,tool_qui,frequence,Dnext) VALUES (" & cd & ",'P','" & Date & "','" & User_init & "',12,'" & Date & "');"
    106 CurrentDb.Execute Sr, dbFailOnError
        Exit Sub
    err: msgbox "Erreur " & err.Number & "/" & Erl & " dans tool.nouveau : " & err.description & vbcr & Sr
    end sub
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse Nico84.

    J'ai essayé de suivre tes conseils mais je ne sais pour quel raison rien ne fonction, j'ai toujours autant d'erreur.

    Si je ne passe pas par le premier code avec le WHERE qui modifie tous les enregistrements de ma table, je peux garder la deuxième :
    CurrentDb.Execute "UPDATE T_Articles_Inventaire 0115 INNER JOIN T_Détails ON [T_Articles_Inventaire 0115].OUT_ID=[T_Détails].OUT_ID SET [T_Détails].DC_QTY=T_Articles_Inventaire 0115![INV_QTY]-T_Détails![DC_QTY]" ?

    Merci pour ton aide!

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 099
    Points : 5 217
    Points
    5 217
    Par défaut
    D'abord dans "T_Articles_Inventaire 0115" il y a un espace ! Les accents j'évite aussi et du coup je n'ai jamais besoin de [] qui me gonflent...
    Et pourquoi écrire le même champ une fois [T_Détails].DC_QTY et plus loin T_Détails![DC_QTY] ? [T_Détails].[DC_QTY] est la seule syntaxe toujours ok

    Ensuite pour la clause WHERE : comme tu peux le voir dans mon exemple, pour utiliser un champ d'une fenêtre je l'appelle dans le code et non dans le string. D'une part c'est plus standard, d'autre part je pense que ta syntaxe ne marche pas (mais je n'en suis pas sûr car je n'ai jamais essayé)

    Dit autrement : .runSQL (ou .execute) ne connait probablement pas les variables des fenêtres, il faut donc les remplacer par leurs valeurs pour que ça marche !
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

Discussions similaires

  1. Problème Mise à Jour de Table
    Par pignouflolo dans le forum Access
    Réponses: 8
    Dernier message: 21/07/2006, 15h34
  2. Réponses: 6
    Dernier message: 29/05/2006, 14h22
  3. Problème mise à jour onglet
    Par auriolbeach dans le forum Access
    Réponses: 1
    Dernier message: 25/12/2005, 13h10
  4. Problème mise à jour vers IE6 sous W2K
    Par lio33 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 11/10/2005, 11h51
  5. [HTML] Problème mise à jour des fichiers en cache
    Par El Riiico dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/09/2005, 17h00

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