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 :

Gestion Stocks facile


Sujet :

VBA Access

  1. #1
    Membre actif Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Points : 236
    Points
    236
    Par défaut Gestion Stocks facile
    Bonjour tout le monde voila j'ai un petit probleme que je n'arrive pas a comprendre, j'ai une table stock qui contient QTE et Prod ,probleme quand je veux faire une MAJ je saisie le code prod et la qtesaisie ca bloc voici le programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Commande6_Click()
     Dim aa As Recordset, ssql As String
     ssql = "select last(qte) as qtes from stock where  " & _
           "prod='" & texte2 & "' ;"
     Set aa = CurrentDb.OpenRecordset(ssql)
      If qtes < qtesaisie Then
       MsgBox " Quantité indisponible"
        qtesaisie.SetFocus
      Else
       DoCmd.GoToRecord , , acNewRec
        qte = qtes - qtesaisie
      End If
    End Sub
    Je fume du thé et je reste éveillé, le cauchemar continue.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Ca irait probablement mieux!

    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
    25
    26
    27
     
    Private Sub Commande6_Click()
     
      Dim aa As DAO.Recordset, ssql As String
     
      ssql = "select last(qte) as qtes from stock where " & _
        "prod='" & texte2 & "' ;"
     
      Set aa = CurrentDb.OpenRecordset(ssql)
     
      If aa!qtes < me.qtesaisie Then
        MsgBox " Quantité indisponible"
        me.qtesaisie.SetFocus
      Else
        DoCmd.GoToRecord , , acNewRec
     
    '
    '   supposons que qte est le contrôle du formulaire lié 
    '   au champ de la table: stock!qte
    '
        me.qte = aa!qtes - me.qtesaisie
     
      End If
    '
      aa.close
      set aa=nothing
    End Sub

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Pour lire une seule valeur dans une table, il y a aussi : DLookUp.

    Bon courage,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  4. #4
    Membre actif Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Points : 236
    Points
    236
    Par défaut probleme perciste encore
    aucune mise a jour ne se fait après de docmd.gotorecodr , , acneaw

    le me.qte ne l'accepte pas sachant que qte c'est le champ de ma table stock

    Me.qte = aa!qtes - Me.qtesaisie

    End If
    aa.Close
    Set aa = Nothing
    End Sub

    merci pour votre aide
    Je fume du thé et je reste éveillé, le cauchemar continue.

  5. #5
    Membre actif Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Points : 236
    Points
    236
    Par défaut Gestion Stocks suite
    Bonjour, le programme marche bien jusqu'au niveau du DoCmd.GoToRecord , , acNewRec , aucune mise à-jour qui se fait !!!

    quelqu'un peut mexliquer svp ... merci pour vos lumiers

    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
    25
    26
    Private Sub Commande6_Click()
     
      Dim aa As DAO.Recordset, ssql As String
     
      ssql = "select last(qte) as qtes from stock where " & _
        "prod='" & texte2 & "' ;"
     
      Set aa = CurrentDb.OpenRecordset(ssql)
     
      If aa!qtes < me.qtesaisie Then
        MsgBox " Quantité indisponible"
        me.qtesaisie.SetFocus
      Else
        DoCmd.GoToRecord , , acNewRec
     
    '
    '   supposons que qte est le contrôle du formulaire lié 
    '   au champ de la table: stock!qte
    '
       qte = aa!qtes - me.qtesaisie
     
      End If
    '
      aa.close
      set aa=nothing
    End Sub
    Je fume du thé et je reste éveillé, le cauchemar continue.

  6. #6
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Je n'ai pas bien compris le but de ta démarche ou ton algorithme.
    je devine que tu veux mettre à jour la quantité d'un produit lorsque aa!qtes >= me.qtesaisie ?

    Alors ceci pourrait être une solution:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    Private Sub Commande6_Click()
     
      dim dQty as double
      Dim db As DAO.Database
      Dim aa As DAO.Recordset, ssql As String
     
      Set db = CurrentDb
     
      ssql = "SELECT qte AS qtes FROM stock WHERE " & _
        "prod = '" & me.texte2 & "';"
     
      Set aa = db.OpenRecordset(ssql)
      if(aa.EOF) then
        dQty  = 0
      else
        dQty  = Nz(aa!qtes)
      end if
    '
      aa.close
      set aa=nothing
    '
      If (dQty < Nz(me.qtesaisie)) Then
        MsgBox " Quantité indisponible"
        me.qtesaisie.SetFocus
      Else
    '   DoCmd.GoToRecord , , acLast
     
    '
    '  metrre à jour la table via DAO-SQL:
    '
       dQty = dQty - Nz(me.qtesaisie)
    '
       ssql = "UPDATE stock" _
         & " SET qte = " & dQty _
         & " WHERE prod = '" & me.texte2 & "';"
       db.Execute ssql, dbFailOnError
    '
    '  MàJ le formulaire en question s'il est lié à la table stock:
    '        
    '  qte = aa!qtes - me.qtesaisie
    '
       Me.requery
    ' 
      End If
    '
      Set db = Nothing
    '
    End Sub

  7. #7
    Membre actif Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Points : 236
    Points
    236
    Par défaut Simple
    je ne veux pas ecraser l'ancien enregistrement (prod) c'est pour ça que j'ai mis last(qte),il me selectionne la derniere qte du meme produit,via ce dernier je créee un nouveau enregistrement. le prod et la nouvelle quantité qui est l'ancienne quantité - la quatité saisite.
    le probleme qui se pose je n'arrive pas a comprendre pourquoi il ne veut pas faire de mise à jour apres le docmd.gotrecord ,, acnew .
    Je fume du thé et je reste éveillé, le cauchemar continue.

  8. #8
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Il te faut ajouter, sur le formulaire de l'évènement, un contrôle nommé qte => me.qte, qui est lié au champ du même nom de la table stock, ie, stock.qte , la table stock est le .RecordSource de ce premier (formulaire) quand tu crées ce formulaire.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Private Sub Commande6_Click()
     
      dim dQty as double
      Dim db As DAO.Database
      Dim aa As DAO.Recordset, ssql As String
     
      Set db = CurrentDb
     
      ssql = "SELECT LAST(qte) AS qtes FROM stock WHERE " & _
        "prod = '" & me.texte2 & "';"
     
      Set aa = db.OpenRecordset(ssql)
      if(aa.EOF) then
        dQty  = 0
      else
        dQty  = Nz(aa!qtes)
      end if
    '
      aa.close
      set aa=nothing
    '
      Set db = Nothing
    '
      If (dQty < Nz(me.qtesaisie)) Then
        MsgBox " Quantité indisponible"
        me.qtesaisie.SetFocus
      Else
    '
        DoCmd.GoToRecord , , acNewRec  
    '
    '  mettre à jour la valeur sur le formulaire, qui sera répercutée sur 
    '  la table automatiquement par Access ...
    '
       me.qte = dQty - Nz(me.qtesaisie)
    ' 
      End If
    '
    End Sub

  9. #9
    Membre actif Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Points : 236
    Points
    236
    Par défaut Merci
    merci Jacou ça marche , c'est possible d'avoir independance total entre ma table et mon formulaire sinon a quoi bon faire tout ce programme un simple if suffira ....!!!!
    Je fume du thé et je reste éveillé, le cauchemar continue.

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

Discussions similaires

  1. [MCD] gestion stock, fournisseur et commande
    Par label55 dans le forum Schéma
    Réponses: 3
    Dernier message: 28/02/2008, 15h16
  2. Gestion Stocks suite
    Par le_dilem dans le forum VBA Access
    Réponses: 0
    Dernier message: 06/11/2007, 10h18
  3. gestion stock et commandes
    Par Cheorches dans le forum Modélisation
    Réponses: 2
    Dernier message: 17/08/2007, 14h47
  4. Problème Sous Access Gestion Stock
    Par aounnate dans le forum Access
    Réponses: 9
    Dernier message: 11/10/2006, 14h30
  5. Gestion Stock
    Par fb40 dans le forum Access
    Réponses: 4
    Dernier message: 11/03/2006, 23h42

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