LIKE et access

LIKE et access - SQL/NoSQL - Programmation

Marsh Posté le 06-05-2005 à 10:47:22    

Bonjour !!  :hello:  
 
Je ne m'explique pas une fantaisie que me fait Access.
Je génère une requête, à travers VBA certes, mais une requête SQL quand même. Elle a cette tête :
 
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 ?
 
En attendant je potasse le problème, merci pour votre aide  :jap:


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

Marsh Posté le 06-05-2005 à 10:47:22   

Reply

Marsh Posté le 06-05-2005 à 10:55:56    

2 choses :
- le wildcard à utiliser en ADO n'est pas "*" mais "%" pour remplacer n'importe quel caractère,
- tape plutot le code suivant :

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


Message édité par Harkonnen le 06-05-2005 à 10:56:10

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-05-2005 à 11:00:17    

Ben sous Access j'ai bien l'impression que le wildcard est "*" (erreur sinon)
Autrement définir la requête dans une chaine à part ne change rien  :/


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

Marsh Posté le 06-05-2005 à 11:07:12    

Peut-être vous donner le code entier aidera à la résolution de mon problème :
 

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.     ctl.SetFocus
  7.     Exit Sub
  8. End If
  9.    
  10. tablo = rst.GetRows(nb_enreg)
  11. 'affectation du tableau à la liste
  12. ctlListeEtudiants.RowSourceType = "Value List"
  13. For i = 0 To (nb_enreg - 1)
  14.     ctlListeEtudiants.AddItem (tablo(0, i) & " " & tablo(1, i))
  15. Next i


 
Mais là je ne suis plus dans la bonne catégorie... Désolée  :)


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

Marsh Posté le 06-05-2005 à 12:33:24    

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


Message édité par Mariooo le 06-05-2005 à 12:33:37

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

Marsh Posté le 06-05-2005 à 12:49:58    

Mariooo a écrit :

Peut-être vous donner le code entier aidera à la résolution de mon problème :


t'as oublié le MoveLast après le RecordCount
 
edit: [:benou_grilled]


Message édité par Harkonnen le 06-05-2005 à 12:50:15

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-05-2005 à 14:33:15    

;)
 
Merci ça m'aurait donné un bon coup de pouce :p


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

Sujets relatifs:

Leave a Replay

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