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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment afficher le resultat d'un recordSet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment afficher le resultat d'un recordSet

n°1984018
vbaddict
Posté le 14-04-2010 à 17:28:01  profilanswer
 

Bonjour je doit faire un petit programme en vba en utlisant des tables de ma base de donnée Access. Je voudrait savoir comment afficher le resultat d'un RecordSet mais il y a un erreur qui me dit Aucun enregistrement en cour !!!
 
voila mon code:
 
 
Dim base As DAO.Database
Dim espèce As String
Dim resultat As DAO.Recordset
Dim res As String
Set base = CurrentDb()
Set resultat = base.OpenRecordset("SELECT [tab especes complète].[nomVernaculaire] FROM [tab especes complète] WHERE ((([tab especes complète].code)=espèce));" )
 
resultat.MoveFirst
While Not resultat.EOF
With resultat
res = !nomVernaculaire
MsgBox res
End With
resultat.MoveNext
 
Wend
 
resultat.Close

mood
Publicité
Posté le 14-04-2010 à 17:28:01  profilanswer
 

n°1984148
Arcbitre
J'aime ben ça moi, c'est bon!
Posté le 15-04-2010 à 09:07:52  profilanswer
 


 :non:  
 
Il faut passer par une requete. (et proscrire les noms de variables accentués!!!)
 
 

Code :
  1. Sub test()
  2. Dim objReq As QueryDef
  3. Dim objRs As Recordset
  4.     ' On envoie la requete temporaire
  5.     Set objReq = CurrentDb.CreateQueryDef("", "SELECT [tab especes complète].[nomVernaculaire] FROM [tab especes complète] WHERE ((([tab especes complète].code)=espèce));" )
  6.    
  7.     ' Le résultat est affecté au recordset
  8.     Set objRs = objReq.OpenRecordset
  9.    
  10.     ' On parcourt le recordset
  11.     Do While Not objRs.EOF
  12.         ' .....
  13.         objRs.MoveNext
  14.     Loop
  15. End Sub

n°1984163
olivthill
Posté le 15-04-2010 à 09:44:13  profilanswer
 

Théoriquement, la solution initiale devrait marcher aussi bien que la seconde solution.
 
Je crois que le problème, dans les deux solutions vient de l'absence des guillemets obligatoires autour du mot "espèce". Je devine qu'ils n'ont pas été mis, car sinon VBA considèrerait que la chaine de la requête se termine avec le premier guillemet devant "espèce". Mais on contourne facilement ce problème, en utilisant des apostrophes, car c'est une syntaxe qui est acceptée quand on écrit une requête dans du VBA. Cela donnerait donc :

Set resultat = base.OpenRecordset("SELECT [tab especes complète].[nomVernaculaire] FROM [tab especes complète] WHERE ((([tab especes complète].code)='espèce'));" )  

ou

Set objReq = CurrentDb.CreateQueryDef("", "SELECT [tab especes complète].[nomVernaculaire] FROM [tab especes complète] WHERE ((([tab especes complète].code)='espèce'));" )

N.B. Il faut aussi éviter le plus possible d'utiliser des lettres accentuées et des espaces pour les noms des champs et des variables, mais la table semble déjà créée, donc c'est un peu tard maintenant.


Message édité par olivthill le 15-04-2010 à 09:44:50
n°1984167
vbaddict
Posté le 15-04-2010 à 09:49:42  profilanswer
 

pour les espaces et les accents je ne prefere pas les modifié
et sinon j'ai corriger mon code mais le probleme est que l'enregistrement n'est pas reconnu
 
 

Code :
  1. Set resultat = base.OpenRecordset("SELECT [nomVernaculaire] FROM [tab especes complète]  WHERE code ='& chr(34) & espece & chr(34)';" )
  2.            
  3.   With resultat
  4.         If .RecordCount > 0 Then
  5.             .MoveFirst
  6.             While Not .EOF
  7.                 'res = !nomVernaculaire  pas sûr que autorisé
  8.                 res = .Fields("nomVernaculaire" )  ' est plus standard
  9.                 MsgBox res
  10.                 .MoveNext
  11.             Wend
  12.         Else
  13.             MsgBox "Pas d'enregistrement trouvé"
  14.         End If
  15.     End With

n°1984172
olivthill
Posté le 15-04-2010 à 10:02:49  profilanswer
 

Citation :

WHERE code ='& chr(34) & espece & chr(34)';" )

Oh là. maintenant, il y a trop de choses. Je suis désolé, mais ca ne va pas du tout. Il faut utiliser ma syntaxe.

n°1984216
vbaddict
Posté le 15-04-2010 à 11:06:06  profilanswer
 

j'ai trouvé la solution la voici :  
 
"SELECT [tab especes complète].[nomVernaculaire] FROM [tab especes complète] WHERE [tab especes complète].code='" & espece & "';"
 
merci a touses pour votre aide


Message édité par vbaddict le 15-04-2010 à 11:06:35
n°1984667
PigeonV
Posté le 16-04-2010 à 10:11:01  profilanswer
 

Fais gaffe à l'injection SQL :

Option Explicit
 
Public Function Pure(S As String) As String
 Pure = Replace(S,"'","''" )
End Function
 
'[...]
"SELECT [tab especes complète].[nomVernaculaire] FROM [tab especes complète] WHERE [tab especes complète].code='" & Pure(espece) & "';"


---------------
VB.NET is good ... VB6 is better !
n°2202628
droupa
Posté le 11-09-2013 à 17:05:09  profilanswer
 

PigeonV a écrit :

Fais gaffe à l'injection SQL :

Option Explicit
 
Public Function Pure(S As String) As String
 Pure = Replace(S,"'","''" )
End Function
 
'[...]
"SELECT [tab especes complète].[nomVernaculaire] FROM [tab especes complète] WHERE [tab especes complète].code='" & Pure(espece) & "';"



 
Merci beaucoup, votre code m'a permis de regler ce problème avec la fonction pure (pour un champ texte).
par contre je n'arrive pas à tester pour un champ date ?
auriez vous cela en magasin ;-)
Voici ce que j'ai adapté selon votre code:
qry = "SELECT [tableSalle].[HEURE] FROM [tableSalle] WHERE [tableSalle].UF='" & Pure(sallecherche) & "' and [tableSalle].DATE=" & datecherche & ";"
 
sans le critère date, cela marche très bien, mais l'ajout de l'item datecherche (dim as date) ne me rends rien dans la recherche (çà ne plante pas, mais ne trouve aucun enregistrement !)
merci si vous êtes encore là...

n°2202630
droupa
Posté le 11-09-2013 à 18:14:13  profilanswer
 

Bonjour,
??? je ne vois pas ma réponse/demande sur l'item ?
à moins que je n'ai pas su où le mettre pour apparaitre dans ce topic...
je cherche...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment afficher le resultat d'un recordSet

 

Sujets relatifs
Executer fonction oracle et récupérer résultat depuis perl (DBI)[Proc Stock] comment récupérer le résultat d'une requête ?
code java pour afficher un frame en click sur le menu en netbeansRemplir un tableau associatif vide au départ (et puis l'afficher)
code java pour afficher un frame en click sur le menu netbeansphp/mysql résultat requête dans une seule variable
afficher/masquer divComment afficher une chaine avec une taille de police plus grande
Afficher le nom du fichier ouvert dans une macro sous Excel[RESOLU]Afficher le plus grand ID de plusieurs sous_id
Plus de sujets relatifs à : Comment afficher le resultat d'un recordSet


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