Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2011, 20h58   #1
Membre à l'essai
 
Inscription : octobre 2008
Messages : 64
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 64
Points : 22
Points : 22
Par défaut Bouton d'action pour trouve un enregistrement et ensuite incrmenter champs

Bonjour à tous,

Je ne connais pas ou presque pas Access, et je crois que je m'attaques à un projet qui dépasse mon peu de connaissance. En gros, je veux créer un formulaire pour pouvoir augmenter ou soustraire du matériel d'un inventaire.

Le hic, c'est qu'on utilise un scanneur a code barre. Alors, je dois, une fois après avoir scanner le code bar, être capable de trouver l'enregistrement correspondant dans ma table, et aller incrémenter le champs Total.

Je n'ai qu'une seule table, qui est mon inventaire. La valeur du code bar est identique a mon champs de clef primaire. Donc, si je scanne le code bar avec la valeur 2, j'essaies de pouvoir, en créant un bouton, aller chercher mon enregistrement 2, et ensuite incrémenter de +1 ou -1 le champs Total.

Est-ce que quelqu'un a une piste de solution pour m'aider, car la je cherche et je suis dans le néant.

Merci à tous!
asvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 08h27   #2
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 225
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 225
Points : 9 928
Points : 9 928
Envoyer un message via Skype™ à Domi2
Bonjour,

D'abord, créer le formulaire avec comme Source ta table ou mieux, une requête basée sur ta table ainsi que les champs que tu dois voir affichés.

Ensuite, tu rajoutes une zone de texte indépendante (propriété Source contrôle vide) qu'on nomme par exemple txtCode et un bouton cmdRercherche.

Sur l'événement sur Clic de ce dernier :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Private Sub cmdRecherche_Click()
 
    If Not IsNull(Me.txtCode.Value) Then
 
        'Recherche et affichage de l'enregistrement correspondant au code
        With Me.RecordsetClone
 
            .FindFirst "Le NomDuChampDeTonIdDansTaTable=" & Me.txtCode.Value
 
            'Pas d'ID correspondant au code, possible d'afficher un message par exemple
            If .NoMatch = False Then Me.Bookmark = .Bookmark
 
        End With
 
    Else
 
        MsgBox "Pas de code saisi"
 
    End If
 
End Sub
Evidemment, dans cette même procédure, il est possible d'ajouter à la suite l'ouverture d'un petit formulaire pour modifier ton stock.

Après, il faudrait voir ton scanner. Il est possible que tu puisses déclencher un événement après la lecture du code et ainsi te passer même du bouton.

Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 15h49   #3
Membre à l'essai
 
Inscription : octobre 2008
Messages : 64
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 64
Points : 22
Points : 22
Bonjour Domi2,

Merci pour la réponse, sa m'a beaucoup aidé. J'essaie d'incrémenter mon champs maintenant, voici comme je procède:

Code :
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 Commande2_Click()
 
If Not IsNull(Me.Texte0.Value) Then
 
        'Recherche et affichage de l'enregistrement correspondant au code
        With Me.RecordsetClone
 
            .FindFirst "[Product Number]=" & Me.Texte0.Value
 
            'Pas d'ID correspondant au code, possible d'afficher un message par exemple
            If .NoMatch = False Then Me.Bookmark = .Bookmark:
            If .NoMatch = False Then [inventaire] = [inventaire] + 1
 
            If .NoMatch = True Then MsgBox "allo bozo"
 
        End With
 
    Else
 
        MsgBox "Vous devez saisir un code barre"
 
    End If
 
  Me.Requery
 
End Sub
J'ai quelques petits problèmes avec ce que j'ai fait. Tout fonctionne bien. Si l'entrée est invalide, j'ai un message d'erreur. Si j'ai rien d'inscrit, j'ai un message d'erreur. Si l'entrée est valide, elle s'affiche et s'incrémente de +1 (le champ inventaire s'incrémente dans ma table).

Sa fonctionne très bien, mais j'ai 1-2 problèmes. Premièrement dans mon code, pour donner plusieurs actions à accomplir après un if.then je dois réécrire la condition. Alors niveau syntaxe, j'ai besoin de quelques petits trucs! :p

Deuxièmement, Si tout fonctionne bien, lorsque j'incrémente un enregistrement quelques fois c'est ok, mais si je veux changer d'enregistrement, elle ne s'affiche pas dans mon formulaire. Par contre, elle s'incrémente quand même.

Ex: Je cherche l'enregistrement du produit avec le code bar 1. l'info de l'enregistrement apparait dans mon formulaire et sa s'incrémente. Super aucun problème. Je fais une incrémentation de 5 sur cette enregistrement et ensuite je scan un autre code barre, le 3. Le seul hic, c'est que l'enregistrement qui est affiché est toujours celle du 1, mais l'incrémentation fonctionne bel et bien sur le champs inventaire de l'enregistrement 3.

Peut-être peux-tu m'aider encore un peu. J'apprends peu à peu, mais un petit coup de main sa l'aide toujours! :p

Merci et bonne journée.
asvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 16h13   #4
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 225
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 225
Points : 9 928
Points : 9 928
Envoyer un message via Skype™ à Domi2
Bonjour,

Quelques pistes, à essayer par toi-même et également chercher des compléments d'infos dans l'aide ou sur le forum.

Pour tester plusieurs conditions, utilise l'instruction Select Case.

Tu peux également avoir besoin de forcer l'enregistrement courant dans la table (cela devrait t'éviter ce problème d'affichage des données/incrémentation). C'est possible en utilisant la méthode Refresh par exemple, qui équivaut à cliquer sur Actualiser, ou également en utilisant la commande intégrée de menu : DoCmd.RunCommand acCmdSaveRecord.

Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 21h32   #5
Membre à l'essai
 
Inscription : octobre 2008
Messages : 64
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 64
Points : 22
Points : 22
Super merci pour le refresh, c'est ce qui me manquait.

Sa semble bien fonctionner pour le reste!

Merci et bonne journée.
asvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h09.


 
 
 
 
Partenaires

Hébergement Web