Avoir un numéro de série

Fermé
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 - 22 févr. 2019 à 23:12
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 3 mars 2019 à 21:04
Bonjour les amis

je vous trouve aujourd’hui hui avec un grand souci ,je vous explique :

j'ai une requête nommé requete99 ,le résultat de cette requête m affiche 7 champs dont un nommé REF_AUTO_GLOBAL

je voudrai que si le resultat de ce champ est :

- vide il renvoie la valeur vide
- si le résultat est vide les nombres identiques renvoie la valeur 1 et les autres 2 .....

dans le cas ci dessous le resultat doit etre comme cella

- les 4 premiers champ seront vides
-les champs 5 et 6 la valeurs 1
- les champs de 7 a 10 la valeurs 2
- les autres la valeur 3

MERCIIIIIIIII


Configuration: Windows / Chrome 72.0.3626.119

7 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
23 févr. 2019 à 10:56
bonjour, peux-tu partager le texte de la requête en format SQL?
0
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 2
23 févr. 2019 à 11:34
j'ai mieux je partage la base si vous le permettez (par mail) ou bien je copie le code vba fourni par un ami :


Function fNumeroterSerie()
Dim odb As Database
Dim oRst As Recordset
Dim stRupture As String
Dim lgCompteur As Long

Set odb = CurrentDb
Set oRst = odb.OpenRecordset("RQ_MAJ_REF_AUTO", dbOpenDynaset)

Do Until oRst.EOF
' Rupture sur le code si nul ou même série
If Nz(oRst.Fields("REF_AUTO_GLOBAL"), "") <> stRupture Or IsNull(oRst.Fields("REF_AUTO_GLOBAL")) Then
stRupture = Nz(oRst.Fields("REF_AUTO_GLOBAL"), "")
lgCompteur = lgCompteur + 1
End If

oRst.Edit
oRst.Fields("REF_AUTO_GLOBAL") = lgCompteur
oRst.Update
oRst.MoveNext
Loop

oRst.Close
Set odb = Nothing

End Function




le seul souci avec ce code c est qui ne permet pas le retour a zero des que je passe a un autre client.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
23 févr. 2019 à 11:47
tu changes donc totalement de sujet.
si tu veux aller dans cette nouvelle direction:
- partage le code SQL de la requête RQ_MAJ_REF_AUTO
- explique quel est le nom du champ que tu appelles "client"
merci, quand tu partages du code VBA, de choisir "basic" comme type de code.
0
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 2
23 févr. 2019 à 12:01
rebonjour

1- ci apres le code de la requete :

SELECT IDCE.REF_AUTO_GLOBAL
FROM IDCE
WHERE (((IDCE.CODE_ETAT)="2" Or (IDCE.CODE_ETAT)="4" Or (IDCE.CODE_ETAT)="6") AND ((IDCE.CODE_PRODUIT)<>"W 1003 M"))
ORDER BY IDCE.REF_TIERS, IDCE.REF_AUTO_GLOBAL;

2- le champ client est le champ REF_TIERS

3 ci apres le code en vba basic


Function fNumeroterSerie()
Dim odb As Database
Dim oRst As Recordset
Dim stRupture As String
Dim lgCompteur As Long
 
Set odb = CurrentDb
Set oRst = odb.OpenRecordset("RQ_MAJ_REF_AUTO", dbOpenDynaset)
 
    Do Until oRst.EOF
        ' Rupture sur le code si nul ou même série
        If Nz(oRst.Fields("REF_AUTO_GLOBAL"), "") <> stRupture Or IsNull(oRst.Fields("REF_AUTO_GLOBAL")) Then
            stRupture = Nz(oRst.Fields("REF_AUTO_GLOBAL"), "")
            lgCompteur = lgCompteur + 1
        End If
 
        oRst.Edit
        oRst.Fields("REF_AUTO_GLOBAL") = lgCompteur
        oRst.Update
        oRst.MoveNext
    Loop
 
oRst.Close
Set odb = Nothing
 
End Function
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
23 févr. 2019 à 12:17
suggestion:
Function fNumeroterSerie()
Dim odb As Database
Dim oRst As Recordset
Dim stRupture As String, stRuptClient As String
Dim lgCompteur As Long
 
Set odb = CurrentDb
Set oRst = odb.OpenRecordset("RQ_MAJ_REF_AUTO", dbOpenDynaset)
stRuptClient = ""
lgCompteur = 0
Do Until oRst.EOF
    If Nz(oRst!REF_TIERS, "") <> stRuptClient Then
            ' rupture sur le client
            lgCompteur = 0
            stRuptClient = Nz(oRst!REF_TIERS, "")
            stRupture = Nz(oRst.Fields("REF_AUTO_GLOBAL"), "")
        Else
            ' Rupture sur le code si nul ou même série
            If Nz(oRst.Fields("REF_AUTO_GLOBAL"), "") <> stRupture Or IsNull(oRst.Fields("REF_AUTO_GLOBAL")) Then
                stRupture = Nz(oRst.Fields("REF_AUTO_GLOBAL"), "")
                lgCompteur = lgCompteur + 1
            End If
        End If
    oRst.Edit
    oRst.Fields("REF_AUTO_GLOBAL") = lgCompteur
    oRst.Update
    oRst.MoveNext
Loop
oRst.Close
Set odb = Nothing
End Function
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 2
23 févr. 2019 à 23:35
rebonsoir be

j'ai une erreur au niveau de la ligne 12

If Nz(oRst!REF_TIERS, "") <> stRuptClient Then
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
24 févr. 2019 à 12:35
le texte du message d'erreur peut souvent à déterminer comment éviter l'erreur.
suggestion:
Function fNumeroterSerie()
Dim odb As Database
Dim oRst As Recordset
Dim stRupture As String, stRuptClient As String, reqsql As String
Dim lgCompteur As Long
 
Set odb = CurrentDb
reqsql = "SELECT IDCE.REF_TIERS, IDCE.REF_AUTO_GLOBAL " _
    + " FROM IDCE " _
    + " WHERE (((IDCE.CODE_ETAT) = '2' Or (IDCE.CODE_ETAT) = '4' Or (IDCE.CODE_ETAT) = '6') And ((IDCE.CODE_PRODUIT) <> 'W 1003 M')) " _
    + " ORDER BY IDCE.REF_TIERS, IDCE.REF_AUTO_GLOBAL "
Set oRst = odb.OpenRecordset(reqsql, dbOpenDynaset)
stRuptClient = ""
lgCompteur = 0
Do Until oRst.EOF
    If Nz(oRst!REF_TIERS, "") <> stRuptClient Then
            ' rupture sur le client
            lgCompteur = 0
            stRuptClient = Nz(oRst!REF_TIERS, "")
            stRupture = Nz(oRst.Fields("REF_AUTO_GLOBAL"), "")
        Else
            ' Rupture sur le code si nul ou même série
            If Nz(oRst.Fields("REF_AUTO_GLOBAL"), "") <> stRupture Or IsNull(oRst.Fields("REF_AUTO_GLOBAL")) Then
                stRupture = Nz(oRst.Fields("REF_AUTO_GLOBAL"), "")
                lgCompteur = lgCompteur + 1
            End If
        End If
    oRst.Edit
    oRst.Fields("REF_AUTO_GLOBAL") = lgCompteur
    oRst.Update
    oRst.MoveNext
Loop
oRst.Close
Set odb = Nothing
End Function
0
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 2
25 févr. 2019 à 19:00
rebonjour be

ci après une capture d’écran de la requête, je te remercie d avance :-)
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
27 févr. 2019 à 20:50
quelle ligne pour cette erreur?
0
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 2
27 févr. 2019 à 21:10
voila une capture d ecran et merci bcp

0
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 2
28 févr. 2019 à 22:39
rebonsoir be

le code s est débloquer le seul souci qui reste est que j'aimerai si possible que si le champ : REF_AUTO_GLOBAL n'est pas en double je voudrai qu il n'affiche aucun numéro de serie.

je te remercie d avance
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
1 mars 2019 à 22:19
je ne comprends pas "si le champ REF_AUTO_GLOBAL n'est pas en double". peux-tu expliquer?
0
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 2
1 mars 2019 à 22:39
je veux dire que si la reference n'est pas reppété , le champ REF_AUTO_GLOBAL doit etre vide

et si le champ la reference est vide ,le champ REF_AUTO_GLOBAL doit etre vide

je te remercie d'avance pour t avoir occupé de mon probleme ca va vraiment me sauver le boulot
0
omen123123 Messages postés 51 Date d'inscription lundi 7 septembre 2015 Statut Membre Dernière intervention 1 mars 2019 2
1 mars 2019 à 22:47
Dans la capture d'ecran voila ce que le resultat doit etre:

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
3 mars 2019 à 21:04
cela change pas mal par rapport à ta demande initiale...
0