Boucle avec VB

NagNag -  
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Avec VB6 comment je peux résoudre le problème suivant : trois listes A,B et C la liste A comprend des réels de 1 à 10 (incrémentation) et la liste B comrend les réels suivants (2,3,6,9) , comment renvoyer les éléments dans la liste C les éléments manuquants c-a-d (1,4,5,7,8 et 10) Merci
A voir également:

71 réponses

nagnag
 
J'utilise I=R pour ne pas avoir un comptage toujours à partir de 1.
R = est le premier enregistrement, et S le dernier enregistrement.
Mon travail sur requête SQL paramétré chaque année et les classes correspondantes, donc si je prends :

Qr= "SELECT N° FROM Etudiants WHERE classe = ?Parametre? AND Annee = ?Parametre?"
Supposons que j'ai (n) classes EG1,EG2,.....EGn et j'ai (n) années scolaires AS1,AS2.....ASn
les numeros d'inscriptions de EG1 de 1 à 100 et EG2 de 101 à 199 .... et ainsi de suite nécéssairement, il faut utiliser I=R pour que la boucle débute à partir du premier enregistrement et pas de 1, si on a EG1 la boucle va compter à partir de 1 et si on a EG2 la boucle va compter à partir de 101 ...... mais la boucle précédente (c-a-d que je te donnes aujourd'hui) présente une erreur de comptage et pas d'exécution, il n'y a pas de 1 ou 101 ou 201... c-a-d la boucle débute son comptage qu'après le premier enregistrement, et par conséquent il ne retourne pas ce dernier, t'a une idée concernant ce cas, merci de me répondre, j'espère que ta compris l'idée générale de travail.
0
nagnag
 
Je peux utiliser ça alors :

While Not Qr.EOF
If i <> Qr.Fields(0) Then
lstaud.AddItem i
Qr.MovePrevious
End If
Qr.MoveNext
i = i + 1
Wend
NB: concernant MovePrevious pour que i suit immédiatement les enregistrements, sinon il va ajouter les enregistrements existants dés la première différence entre i et le champ correspondant, car pour le reste toujours i ne suit pas les Enrg, NON ?
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
bonne question ??? le tout est de savoir si le champs de table est trié dans l'ordre croissant ???
0
nagnag
 
POLUX31, pardon j'ai pas compris
0

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

Posez votre question
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
dsl, j'avais ton post précédent ...
0
nagnag
 
Voilà comment passe :

Soit n: le numéro d'enreg

i=202 n=202 (puisque i=R) => rien ne se passe
i=203 n=203 = > rien ne se passe
i=204 n= 205, 204 est inexistant =>(ajouter 204 à la liste) ==>MovePrevious la boucle revient à 205 (le numero d'enregistrement donc 205 = 205 => rien ne se passe, sinon, il va aller à l'Enreg suivant 206 différent de 205 il va l'ajouter à la liste des chiffres manquants pourtant le 206 est existant.

Mais mon problème est que la boucle ne lit pas 201 qui est manuquant, j'espère que tu ma compris.
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
J'ai compris le blème ...

Je vais créer le conteste sur une base et je tiens au courant ...
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
voilà ce que j'ai trouvé comme soluce ... c'est pas top mais ça fonctionne

i = Qr.Fields(0)

If i > 1 And i < 100 Then i = 1
If i > 101 And i < 200 Then i = 101
If i > 201 And i < 300 Then i = 201
etc ...

While Not rst.EOF

If i <> Qr.Fields(0) Then
lstaud.AddItem i
Qr.MovePrevious
End If
Qr.MoveNext
i = i + 1
Wend
0
nagnag
 
POLUX31,
J'essaye autrement et je reviens
0
nagnag
 
POLUX31,
J'essaye autrement et je reviens car si on a 1000000 d'enregistrements comment on va tester ça ?
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
dans ce cas il faut faire une fonction qui te retourne i selon le cas de figure ...

Je viens de la faire et ça marche ...

;o)
0
nagnag
 
POLUX31, voilà je trouve ce qui suit :
Dim x
Private Function Trouver(i as integer,x as integer) as integer
If i > x And i < x + 99 Then i = x
End Function

je sais pas ?, normalement ça marche, quel ton avis ?
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Quelle est la valuer de X ?
Je ne comprends pas ....
0
nagnag
 
variable à partir de 1, qu'on l'ajoute au cours de l'exécution
0
nagnag
 
t'a d'autres solutions POLUX31 ?
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
pourquoi passer deux paramètres ? et j'aimerai voir à quel moment tu appelles ta fonction ... ?
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Ah oui, j'oubliai le principal ... ta fonction ne retourne rien ... ;o)
0
nagnag
 
car x c'est variable qu'on peut le connaître qu'au cours de l'exect x=1 ou 101 ou 201 ......, non ?
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
oui ok, mais i alors ???
0
nagnag
 
comment faire ? alors POLUX tu peut m'aider stp
0