Requete en LIKE sous VBA

Requete en LIKE sous VBA - VB/VBA/VBS - Programmation

Marsh Posté le 06-05-2005 à 11:34:18    

Bonjour !!  :hello:  
 
Je ne m'explique pas une fantaisie que me fait Access.
Je génère une requête SQL, à travers VBA. Elle a cette tête :
 

Code :
  1. Set rst = CurrentDb.OpenRecordset("SELECT CodeEtudiant, Nom FROM TableEtudiants WHERE CodeEtudiant LIKE '" & code_etudiant & "*'" )


 
Je but de la manoeuvre étant de récupérer tous les étudiants dont le code commence par la chaine de caractères code_etudiant (en général deux ou trois caractères)
Mon problème : la requete ne semble renvoyer toujours qu'un seul élément, puisque un RecordCount me renvoit toujours 1 !
 
Le problème vient-il de la syntaxe de la requête ?
 
Mon code entier :
 

Code :
  1. Set rst = CurrentDb.OpenRecordset("SELECT CodeEtudiant, Nom FROM TableEtudiants WHERE CodeEtudiant LIKE '" & code_etudiant & "*'" )
  2. nb_enreg = rst.RecordCount
  3.    
  4. If nb_enreg = 0 Then
  5.     MsgBox "Pas d'étudiant ayant ce code"
  6.     DoCmd.Close acForm, "FormulaireEtudiantRechIntuitive"
  7.     ctl.SetFocus
  8.     Exit Sub
  9. End If
  10.    
  11. tablo = rst.GetRows(nb_enreg)
  12. 'affectation du tableau à la liste
  13. ctlListeEtudiants.RowSourceType = "Value List"
  14. For i = 0 To (nb_enreg - 1)
  15.     ctlListeEtudiants.AddItem (tablo(0, i) & " " & tablo(1, i))
  16. Next i


 
 
En attendant je potasse le problème, merci pour votre aide  :jap:


Message édité par Mariooo le 06-05-2005 à 11:37:28

---------------
Dyslexics have more fnu.
Reply

Marsh Posté le 06-05-2005 à 11:34:18   

Reply

Marsh Posté le 06-05-2005 à 11:52:27    

Mets ta string de requête dans une variable "string".
 
Ca te permettra de voir son contenu avant de l'appliquer.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 06-05-2005 à 12:35:25    

Merci Alaintech mais... problème résolu !!!
 
Cela n'avait rien à voir avec la requête, c'était mon RecordCount qui clochait.
Pour qu'un RecordCount renvoit autre chose que 1, il faut lui avoir fait parcourir d'abord tous les enregistrements du recordset...
Donc hop, un petit MoveLast et le tour est joué !
 
Code final-qui-marche pour ceux que ça intéresse
 

Code :
  1. 'Compte le nombre de résultats en vu de l'affectation au tableau
  2.     Set rst = CurrentDb.OpenRecordset("SELECT CodeEtudiant, Nom FROM TableEtudiants WHERE CodeEtudiant LIKE '" & code_etudiant & "*'" )
  3.     rst.MoveLast
  4.     nb_enreg = rst.RecordCount
  5.    
  6.     If nb_enreg = 0 Then
  7.         MsgBox "Pas d'étudiant ayant ce code"
  8.         ctl.SetFocus
  9.         Exit Sub
  10.     End If
  11. 'réouverture obligatoire du recordset (en tout cas ya que ça qui marche :p)
  12.     Set rst = CurrentDb.OpenRecordset("SELECT CodeEtudiant, Nom FROM TableEtudiants WHERE CodeEtudiant LIKE '" & code_etudiant & "*'" )
  13.     tablo = rst.GetRows(nb_enreg)
  14. 'affectation du tableau à la liste
  15.     ctlListeEtudiants.RowSourceType = "Value List"
  16.     For i = 0 To (nb_enreg - 1)
  17.         ctlListeEtudiants.AddItem (tablo(0, i) & " " & tablo(1, i))
  18.     Next i


---------------
Dyslexics have more fnu.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed