Avoir un numéro de série
omen123123
Messages postés
59
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
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
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 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, peux-tu partager le texte de la requête en format SQL? -
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. -
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 -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
rebonsoir be
j'ai une erreur au niveau de la ligne 12
If Nz(oRst!REF_TIERS, "") <> stRuptClient Then
-
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
-
-
-
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


