IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Deux boucles while


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 113
    Par défaut Deux boucles while
    Bonjour à tous
    je suis entrain de récupérer des enregistrement d'un recordset et comparer chaque enregistrement avec l'enregistrement suivant j'ai fait pour cela deux boucles while voilà une partie du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    TxtSQLGlobal = "select * " & _
    "from  soldeTest where (DateFacture between '" & Date1 & "' and  '" & Date2 & "') and (CodeArticle between  '" & Article1 & "'and '" & Article2 & "')order by NDossier,DateFacture"
       TxtSQLGlobal2 = "select * " & _
    "from  soldeTest where (DateFacture between '" & Date1 & "' and  '" & Date2 & "') and (CodeArticle between  '" & Article1 & "'and '" & Article2 & "')order by NDossier,DateFacture"
     
       Set li = New ADODB.Recordset
       Set li2 = New ADODB.Recordset
       li.Open TxtSQLGlobal, ConnectionGlobal, adOpenStatic, adLockOptimistic
     
       li2.Open TxtSQLGlobal2, ConnectionGlobal, adOpenStatic, adLockOptimistic 
    li.MoveFirst
    'li2.MoveFirst
    While li.EOF = False
    li2.MoveFirst
    While li2.EOF = False
    li2.MoveNext
    'Array1 = li2.GetRows(j + 1)
    'typ = Array1(19, j + 1)
    'MsgBox (typ)
     
    If li.Fields("DateFacture") = li2.Fields("DateFacture") And li.Fields("NDossier") = li2.Fields("NDossier") And li.Fields("TypeFacture") = "Livraison Client" And li2.Fields("TypeFacture") = "Livraison Client" Then
    MsgBox ("oui")
    If (li.Fields("total02") <> 0) Then
     
    li.Fields("total03") = li.Fields("total03") - li.Fields("total02")
    End If
    End If
    Wend
      li.MoveNext
     
    Wend
    mais il m'affiche une erreur

    BOf ou EOF est égal à true ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel

    merciii pour vos aides

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TxtSQLGlobal = "select * " & _
    "from  soldeTest where (DateFacture between '" & Date1 & "' and  '" & Date2 & "') and (CodeArticle between  '" & Article1 & "'and '" & Article2 & "')order by NDossier,DateFacture"
    TxtSQLGlobal2 = "select * " & _
    "from  soldeTest where (DateFacture between '" & Date1 & "' and  '" & Date2 & "') and (CodeArticle between  '" & Article1 & "'and '" & Article2 & "')order by NDossier,DateFacture"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TxtSQLGlobal = "select * " & _
    "from  soldeTest where (DateFacture between #" & Date1 & "# and #" & Date2 & "#) and (CodeArticle between '" & Article1 & "'and '" & Article2 & "')order by NDossier,DateFacture"
    TxtSQLGlobal2 = "select * " & _
    "from  soldeTest where (DateFacture between #" & Date1 & "# and #" & Date2 & "#) and (CodeArticle between  '" & Article1 & "'and '" & Article2 & "')order by NDossier,DateFacture"
    De plus, il n'est pas vraiment utile d'avoir 2 variables requêtes puisque quelles sont identiques.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       li.Open TxtSQLGlobal, ConnectionGlobal, adOpenStatic, adLockOptimistic
     
       li2.Open TxtSQLGlobal, ConnectionGlobal, adOpenStatic, adLockOptimistic
    Que contient Article1 et Article2, car l'utilisation de between est délicat sur les types littéraux.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 113
    Par défaut
    il m'affiche une erreur syntaxe incorrecte vers #

    je pense pas qu’il y a un problème dans la requete par ce que j'ai fait un test sur le nombre d'enregistrement et il retourne 23 enregistrements

  4. #4
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 113
    Par défaut
    J'ai réglé le problème, merci à tous, voilà une partie du code pour ceux qui ont le même problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    If (li.RecordCount > 0) Then
     
        For i = 0 To li.RecordCount - 2
            D1 = li.Fields("DateFacture")
     
            If Not IsNull(li.Fields("NDossier")) Then
                typ = li.Fields("NDossier")
            End If
            li2.MoveFirst
     
            For j = 1 To li2.RecordCount - 1
                D2 = li2.Fields("DateFacture")
                li2.MoveNext
                If (li.Fields("TypeFacture") = "Livraison Client" And li2.Fields("TypeFacture") = "Livraison Client") Then
                    If Not IsNull(li2.Fields("NDossier")) Then
                        Typ2 = li2.Fields("NDossier")
                    End If
                    If typ = Typ2 Then
                        If D1 = D2 Then
                            li.Fields("total03") = li.Fields("total03") - li.Fields("total02")
                            MsgBox (li.Fields("total03") + 1)
                        End If
                    End If
                End If
            Next
     
            li.MoveNext
        Next
    End If
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. deux Boucles while
    Par zaynabing dans le forum C
    Réponses: 7
    Dernier message: 24/06/2014, 14h09
  2. [PHP 5.3] Parcourir deux array à la manière de deux boucle while
    Par jflorence dans le forum Langage
    Réponses: 8
    Dernier message: 23/03/2010, 18h35
  3. Arrêter deux boucles while
    Par ABN84 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 30/04/2009, 11h51
  4. optimisation d'une requête+deux curseurs+deux boucles while
    Par jawadi95 dans le forum Développement
    Réponses: 1
    Dernier message: 10/07/2008, 11h59
  5. [MySQL] gestion d'affichage entre deux boucle while mysql_fetch_array()
    Par tkwleboss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/11/2007, 22h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo