pas de resultat de requete

pas de resultat de requete - VB/VBA/VBS - Programmation

Marsh Posté le 02-06-2004 à 15:43:48    

je voudrais savoir comment fait ton pour voir si une requete ne contient pas de resultat. je voudrais tester ce resultat et ainsi en fonction de cela afficher ou non un rapport.
 
 

Code :
  1. Set rp = Application.Reports(etat)
  2.             rp.RecordSource = requete
  3. If rp."je ne sais pas quoi mettre ici" <> "" Then '<----probleme
  4.                                                   pour tester ici!!! 
  5.                 Application.DoCmd.OpenReport etat, acViewPreview
  6.             Else
  7.                 Reports(etat).Visible = False
  8.                 MsgBox "il n'y a pas de rapport correspondant a votre requete !"
  9.             End If

Reply

Marsh Posté le 02-06-2004 à 15:43:48   

Reply

Marsh Posté le 02-06-2004 à 16:22:36    

Tu fais rp.recordcount : cette propriété (recordcount) compte le nombre d'enregistrement auxquels tu as eu accès avec ton curseur.
Si ta requête ne renvoie pas de résultat alors rp.recordcount=0 sinon il est au moins égal à 1.

Reply

Marsh Posté le 02-06-2004 à 16:42:42    

ca ne marche pas il me met erreur defini par l'application ou par l'objet. Je ne pense pas que ca marche car rp est un rapport. ???

Reply

Marsh Posté le 02-06-2004 à 17:01:11    

He bien dans ce cas, définis un recordset et analyse ta requête avant de l'assigner à ton état:
 
set rs= ??? . CreateQueryDef("", requete).OpenRecordset
 
if rs.recordcount=0 then
   msgbox ....
else
   rp.RecordSource = requete  
   Application.DoCmd.OpenReport etat, acViewPreview  
end if


Message édité par cakeman le 02-06-2004 à 17:01:27
Reply

Marsh Posté le 02-06-2004 à 17:06:57    

il faut faire le recordcount sur la requête source du rapport.
If CurrentDb.OpenRecordset("NomTable" ).RecordCount > 0 Then

Reply

Marsh Posté le 10-06-2004 à 09:51:50    

Bonjour,
 
J'ai le même type de problème que ma_mat. J'ai essayé ce que vous proposez (avec le recordCount), mais je n'y arrive pas.
J'ai écrit le code suivant:  

Code :
  1. for year=2004 to 2005
  2.    rst.Open "SELECT nb_jours WHERE year = " & year, cnx
  3.    if rst.recordcount = 0 then
  4.       msgbox("pas de résultat" )
  5.    else
  6.       msgbox("res : " & rst("nb_jours" ) )
  7.    end if
  8. next year


...sachant que pour 2005 il n'y a pas d'enregistrement
Le 1er msgbox ne s'affiche pourtant pas, et j'ai une "erreur 1004: BOF ou EOF est égal à true ou l'enregistrement actuel a été supprimé..." pour le rst("nb_jours" )
 
 :??:  
 
Merci pour votre aide  :hello:


Message édité par Myway le 10-06-2004 à 09:53:54
Reply

Marsh Posté le 10-06-2004 à 10:00:35    

Le recordset est vide. BOF est égal à EOF. Il faut tester:
If Not rs.EOF And Not rs.BOF Then
  Je fais ce que j'ai à faire
Else
  Je sors
End If

Reply

Marsh Posté le 10-06-2004 à 10:01:56    

Il semblerait en fait que le rst.RecordCount renvoit -1 quand il n'y a pas de résultat. en tout cas, chez moi, avec

Code :
  1. if rst.RecordCount <=0 then msgbox("pas de res" )


ça marche  :)

Reply

Marsh Posté le 10-06-2004 à 10:02:41    

JihemAir a écrit :

Le recordset est vide. BOF est égal à EOF. Il faut tester:
If Not rs.EOF And Not rs.BOF Then
  Je fais ce que j'ai à faire
Else
  Je sors
End If


Je retiens cette autre solution, merci  :jap:  
 
 :hello:

Reply

Sujets relatifs:

Leave a Replay

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