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   -
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

  1. 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?
    0
  2. omen123123 Messages postés 59 Statut Membre 2
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  3. omen123123 Messages postés 59 Statut Membre 2
     
    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
  4. 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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. omen123123 Messages postés 59 Statut Membre 2
     
    rebonsoir be

    j'ai une erreur au niveau de la ligne 12

    If Nz(oRst!REF_TIERS, "") <> stRuptClient Then
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  7. omen123123 Messages postés 59 Statut Membre 2
     
    rebonjour be

    ci après une capture d’écran de la requête, je te remercie d avance :-)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      quelle ligne pour cette erreur?
      0
    2. omen123123 Messages postés 59 Statut Membre 2
       
      voila une capture d ecran et merci bcp

      0
  8. omen123123 Messages postés 59 Statut Membre 2
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je ne comprends pas "si le champ REF_AUTO_GLOBAL n'est pas en double". peux-tu expliquer?
      0
    2. omen123123 Messages postés 59 Statut Membre 2
       
      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
    3. omen123123 Messages postés 59 Statut Membre 2
       
      Dans la capture d'ecran voila ce que le resultat doit etre:

      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      cela change pas mal par rapport à ta demande initiale...
      0