Recordset vide test infructueux par IsEmpty / IsNull

CrossHair Messages postés 9 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 13 octobre 2009 - 13 avril 2005 à 12:13
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 16 avril 2005 à 16:05
Salut Ô Gens !

J'ai un soucis pour tester un recordset vide. Je créée le recordset par une requête SQL. Parfois aucune donnée ne correspond à cette requête... mon recordset est donc vide ! Sinon cela me renvoi un seul enregistrement (Sumof#) Pas de soucis. Pour que mon code soit net, je dois vérifier si mon recordset est vide. Dans ce cas je donne une valeur Ø au champ du formulaire de destination, sinon la valeur de l'enregistrement.
Le test :
MyCheck = IsEmpty(rst.SumOf#)If MyCheck True then Formulaire.Champ 0 Else rst.SumOf#

C'est là que le bas blesse... il me retourne toujours False ! Y compris par IsNull.

Vos solutions sont ... bienvenueS.

En attendant je biaise en comptant le nombre d'enregistrement du recordset :
MyCheck = rst.RecordCountIf MyCheck 0 then Formulaire.Champ 0 Else rst.SumOf#

CrossHair (CS addicted - Je veux dire CS pas CS, même si CS un peu. Celui qui pige se sentira conserné )

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 avril 2005 à 17:36
Bizarre ta syntaxe rst.SumOf#
Bref, teste rst.RecordCount qui te renverra le nombre de réponses dans ton RecordSet, je ne vois pas où est le problème ...
Sinon, pour tester si un des champs n'est pas vide, suffit de faire :
If Not IsNull(rst!monChamp) Then maVar = rst!monChamp ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
14 avril 2005 à 00:26
Idem que jack
MyCheck (rst.RecordCount 0)

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
CrossHair Messages postés 9 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 13 octobre 2009
14 avril 2005 à 09:16
rst.recordCount... je disais juste que faute de mieux, j'avais trouvé çà... mais que çà ne me plaisait qu'à moitié. Mais si çà vous semble propre... c'est top moumoute !


Merci pour ta (vos) réponse(s). J'ai appliqué "if not" ( et "if" seul); çà roule !


En prime j'ai pigé ! Dsl pour la syntaxe... çà sera mieux la prochaine !


CrossHair


Dans le genre j'ai aussi :


"L'expérience est un bien qui s'achète cher et se revend très mal." Partagez la vôtre, c'est ce que vous avez de mieux à en faire.
0
CrossHair Messages postés 9 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 13 octobre 2009
14 avril 2005 à 10:50
Oups ! Pas tout à fait mais EUREKA j'ai trouvé !

Il semble que IsNull (ou IsEmpty) ne test qu'un champ de l'enregistrement. Mon problème est que ma requête peut ne me retourner aucun enregistrement. C'est donc tous le RecordSet qui peut être vide. Je dois donc pourvoir tester quelque chose comme :
if IsEmpty (rst) then......
Et pas :
if IsEmpty (rst.champ) then....

La solution qui me semble la plus propre est un test sur BOF et EOF :
If ( rst.EOF true And rst.BOF true ) then 'valeurRecordSetVide' Else rst.champ

Ok ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 avril 2005 à 16:05
Même si ta requète ne renvoie aucune données (ligne), la structure du RecordSet existe : il y a une colonne par champ demandé dans le Select.
Ces champs peuvent être lu de 2 façons :
rst.Fields(NoDuChamp).Value
rst!NomDuChamp
ou rst![NomDuChamp] si le nom du champ comporte des espaces ou caractères spéciaux

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
Rejoignez-nous