Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1176 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  LIKE et access

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

LIKE et access

n°1073632
Mariooo
Posté le 06-05-2005 à 10:47:22  profilanswer
 

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.
mood
Publicité
Posté le 06-05-2005 à 10:47:22  profilanswer
 

n°1073642
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-05-2005 à 10:55:56  profilanswer
 

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)
n°1073649
Mariooo
Posté le 06-05-2005 à 11:00:17  profilanswer
 

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.
n°1073661
Mariooo
Posté le 06-05-2005 à 11:07:12  profilanswer
 

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.
n°1073783
Mariooo
Posté le 06-05-2005 à 12:33:24  profilanswer
 

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.
n°1073817
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-05-2005 à 12:49:58  profilanswer
 

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)
n°1073914
Mariooo
Posté le 06-05-2005 à 14:33:15  profilanswer
 

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


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  LIKE et access

 

Sujets relatifs
Requete SLQ/php avec LIKEAccess - VBA - Propriétés d'un MSGraph.Chart.8
requete access vers mysqlProbleme Access à MySQL
Access: Comment éliminer des doublons ?Ouvrir un fichier Excel via Access
ACCESS: Requete suppression HELP!Problème de connexion Access
instruction like en SQL avec Accessprbleme avec un like en SQL sous Access
Plus de sujets relatifs à : LIKE et access


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR