cs_SharQ
Messages postés5Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention 4 mai 2007
-
2 mai 2007 à 17:24
cs_SharQ
Messages postés5Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention 4 mai 2007
-
3 mai 2007 à 10:49
Bonjour,
je cherche une solution pour supprimer le dernier caractère entré à l'aide d'un lecteur de code barre dans un une zone de texte.
Ceci est pour un logiciel de gestion de parc créé sous access 2000 en VBA. La valeur entré dans la zone de texte est utilisé pour rechercher dans la base l'élément correspondant.
Private Sub NoCuincyCherche_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then ' On a appuyé sur 'Entrée'
' Enregistre les modifications
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
' Ouvre la fiche
If Not IsNull(NoCuincyCherche) Then
TrouveNoCuincy NoCuincyCherche
End If
End If
End Sub
En tapant le numéro à 4 chiffres, tout fonctionne. J'ai édité des code barre de façon a avoir le numéro correspondant à l'élément. Mais pour que le code a barre soit correct, il lui faut en fin de chaine une clé de controle. Le problème est qu'à la lecture du code barre, la clé de contrôle apparait dans la zone de texte et par conséquent, le logiciel ne trouve pas l'enregistrement.
Comment puis-je ignorer le dernier chiffre de cette chaine?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 mai 2007 à 17:49
En l'intéressant, par exemple à la fonction Len et à la fonction Left (les 2 dans ton aide en ligne avec exemple).
Left te permet d'avoir un nombre de caractères en partant de la gauce et Len te permet d'extraire la longueur d'une chaîne en caractères.
Le tout est d'une simplicité plutôt enfantine...
cs_SharQ
Messages postés5Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention 4 mai 2007 3 mai 2007 à 10:49
Merci Casy mais mon problème était de ne pas prendre en compte le dernier chiffre du code à barre. Ce n'est pas une rustine dans le code car je lui demande simplement d'ignorer le dernier caractère. Le reste du code est inchangé. Et je ne peux pas changer la dénomination des enregistrements car ils correspondent à un style homogène dans toutes les usines de mon groupe.
Merci à vous deux de m'avoir aidé et orienté.
Voici le code final qui regle mon problème
Private Sub NoCuincyCodeBarre_KeyDown(KeyCode As Integer, Shift As Integer)
' On a appuyé sur 'Entrée'
If KeyCode = 13 Then
' Enregistre les modifications
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
' Ignore le dernier caractère (clé de contrôle du code barre EAN)
Dim AnyString
AnyString = NoCuincyCodeBarre
NoCuincyCodeBarre = Left(AnyString, 11)
' lance le processus de recherche de l'enregistrement en fonction du numéro entré
If Not IsNull(NoCuincyCodeBarre) Then
TrouveNoCuincy NoCuincyCodeBarre
End If
End If
End Sub
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 2 mai 2007 à 17:59
La subtilité aurait été de choisir un format de code barre n'incluant pas de clé de controle, ou sinon d'inclure la clé dans le numéro saisie dans la base.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_SharQ
Messages postés5Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention 4 mai 2007 3 mai 2007 à 09:34
Merci JMF, je vais essayer cette idée de ce pas. Je tiens informé de la résolution.
Et oui Casy, je m'en suis rendu compte trop tard et j'aimerais éviter de repasser sur la moitiè de mon inventaire (environ 175 élements) en rééditant mes codes barres. Même si c'est, je pense, la solution la plus "propre".
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 3 mai 2007 à 09:46
Il te reste peut-etre la possibilité de modifier la base. Il vaut peut-etre mieux modifier 350 enregsitrements que rééditer 175 étiquettes
ou mettre une rustine dans le code.
Si en plus tu peux connaitre la methode de calcul de la clé, tu peut te faire un petit bout de code qui va mettre à jour la base en caculant la clé de chaque référence.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #