none
MoveNext ne marche pas sur VBA access - Microsoft 365 RRS feed

  • Question

  • Je voudrais faire une boucle sur tous les enregistrements (du 1er au dernier) capturés pas une requette.
    Dans ma requette j’utilise les 4 tables liées suivantes issues de 4 bases de données:
    1. Cheques_Imprimes
    2. Client
    3. Agence
    4. Banque
    Mon problème est qu’à l’exécusion de .MoveNext je reste sur le même enregistrement.

    CODE COMPLET :

    Public Sub ImpressionCommandeCheque(ByVal BarreNonBarre As Integer, ByVal ChequeChequierOuCmde As Integer, ByVal LaPLanche As Integer, LeCodeBanque As String, ByVal LeCodeCmde As String, ByVal lsREfChequeChequier As String)
    Dim dbs As dao.Database
    Dim rsChequierCmde As dao.Recordset
    Dim lsSQL As String
    Dim lsFilter As String
    
    On Error GoTo GestError
    
    Set dbs = CurrentDb
    
    ''*********************************************************************************************************
    '' Criteres de sélection des enrégistrements de la COMMANDE à imprimer
    ''*********************************************************************************************************
     lsSQL = "SELECT Cheques_Imprimes.Type_Chequier, Cheques_Imprimes.BonLivraison, Cheques_Imprimes.Feuillet, Cheques_Imprimes.Ligne, Cheques_Imprimes.RIB_Complet, Client.Nom_Client, Client.Adresse, Cheques_Imprimes.Numero_Cheque, Cheques_Imprimes.ChequeOUlettre, Cheques_Imprimes.LigneCMC7, Cheques_Imprimes.Code_Banque, Agence.Code_Agence, Client.Numero_Cpte, Client.CleRIB, Agence.Nom_Agence, Agence.Adresse AS Adresse_Agence " _
                        & "FROM Banque INNER JOIN (Agence INNER JOIN (Client INNER JOIN Cheques_Imprimes ON Client.RIB_Complet = Cheques_Imprimes.RIB_Complet) ON Agence.Code_Agence = Client.Code_Agence) ON (Client.Code_Banque = Banque.Code_Banque) AND (Banque.Code_Banque = Cheques_Imprimes.Code_Banque) AND (Banque.Code_Banque = Agence.Code_Banque) " _
                       & "WHERE (Cheques_Imprimes.[ChequeOUlettre] ='1') And (Cheques_Imprimes.[Nr_Commande]='" + LeCodeCmde + "')AND(Cheques_Imprimes.[Code_Banque] ='" + LeCodeBanque + "')And (Client.[RIB_Complet] = Cheques_Imprimes.[RIB_Complet])" _
                       & "ORDER BY Cheques_Imprimes.Ligne, Cheques_Imprimes.Feuillet, Cheques_Imprimes.Numero_Cheque, Cheques_Imprimes.RIB_Complet ASC ;"
    
    Set rsChequierCmde = dbs.OpenRecordset(lsSQL)
    rsChequierCmde.MoveFirst
    
    
    With rsChequierCmde
      Do Until .EOF
      
          lsFilter = .Fields("Nom_Client") ' "[Cheques_Imprimes.Ligne]=" & rsChequierCmde.Fields("Ligne")
          MsgBox lsFilter
         .MoveNext  
     Loop
    
    End With
    
    Set dbs = Nothing 'FERMETURE DE LA BASE  DE SONNEES
    Exit Sub
    
    GestError:
      MsgBox Err.Number & " : " & Err.Description
      Resume Next
    
    End Sub

    mercredi 14 avril 2021 08:28

Toutes les réponses

  • Bonjour,

    Est-ce que le code MsgBox lsFilter s'exécute? Est-il affiché un MessageBox? 
    Еn ce qui concerne les MessageBoxes dans la boucle, il vaudrait mieux de prendre une variable de type String, y concaténer (ajouter) ce que vous voulez montrer, et  après la boucle Do Until ... Loop d'afficher cela dans un MessageBox.



    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 14 avril 2021 16:21
    Modérateur