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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Tester si un recordset est vide [RESOLU, merci]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tester si un recordset est vide [RESOLU, merci]

n°413463
superchino​is
Posté le 02-06-2003 à 19:34:15  profilanswer
 

Salut
 
Voilà, j'exécute la requête suivante:
 
Set rstnofact = DataEnvironment.connectionBD_resto.Execute("SELECT max(numéro) FROM factures" )
 
Ma table "Factures" étant volontairement vide, rsnofact ne devrait pas contenir d'enregistrements.
 
Ainsi, on devrait avoir logiquement:
rsnofact.BOF = true and rsnofact.EOF = true
 
Mais ça n'est pas le cas et j'ai absolument besoin de tester si rstnofact contient des enregistrements ou pas.
 
Qqun saurait-il m'aider?


Message édité par superchinois le 03-06-2003 à 15:42:51
mood
Publicité
Posté le 02-06-2003 à 19:34:15  profilanswer
 

n°413475
MagicBuzz
Posté le 02-06-2003 à 19:48:08  profilanswer
 

ne fait jamais de select dans un execute, d'un driver ABDOB à l'autre tu auras un résultat valide ou non, puisque c'est une procédure et non une fonction.
 

dim cnx as ADODB.connection
dim rs as ADODB.RecordSet
 
set cnx = new ADODB.Connection
cnx.Open "chaîne de connection"
 
set rs = new ADODB.RecordSet
set rs.ActiveConnection = cnx
rs.Open sql


 
là ça fonctionnera correctement.

n°413477
MagicBuzz
Posté le 02-06-2003 à 19:48:52  profilanswer
 

Et réserve le "cnx.Execute sql" pour les insert, update et delete.

n°413490
minours666
Posté le 02-06-2003 à 20:01:44  profilanswer
 

le pb doit etre autre part car eof et bof marche tj, sinon tu peux utiliser rs.recordcount


---------------
...
n°413509
MagicBuzz
Posté le 02-06-2003 à 20:18:27  profilanswer
 

minours666 a écrit :

le pb doit etre autre part car eof et bof marche tj, sinon tu peux utiliser rs.recordcount


JAMAIS !
 
SQL Server + jointure plus une fonction de regroupement, et le recordcount = -1 systématiquement.
 
Drivers ODBC d'Oracle, recordcount = -1 systématiquemet.
 
Cette propriété est à banir, tout comme le movelast et le moveprevious, ou le move
 
Les seuls moves acceptés sont le movenext et le movefirst.
Pour le reste, d'une version du drivers à l'autre, tu risques d'avoir des résultat incohérents ou carrément des plantages.


Message édité par MagicBuzz le 02-06-2003 à 20:21:56
n°413583
superchino​is
Posté le 02-06-2003 à 21:17:01  profilanswer
 

J'ai pas encore tenté la soluce de Magicbuzz, mais je confirme que le recordcount ne fonctionne pas...
D'ailleurs ca porte très mal son nom et j'en comprends pas l'utilisation...

n°413590
MagicBuzz
Posté le 02-06-2003 à 21:19:29  profilanswer
 

superchinois a écrit :

J'ai pas encore tenté la soluce de Magicbuzz, mais je confirme que le recordcount ne fonctionne pas...
D'ailleurs ca porte très mal son nom et j'en comprends pas l'utilisation...


c'est censé retourner le nombre de lignes retournées par la requête. Mais ça marche quand ça veut, c'est à dire rarement.
 
Tu n'auras un fonctionnement à peut près stabe qu'avec les drivers OLE DB, et MS JET je crois, et encore, c'est soumis à conditions.

n°413593
MagicBuzz
Posté le 02-06-2003 à 21:20:09  profilanswer
 

et au fait, n'ouvre pa le recordset en dynamique, sinon il va inserrer une ligne contenant que des "null" dedans, qui te permet d'inserrer une ligne dans la table.

n°413627
drasche
Posté le 02-06-2003 à 21:46:26  profilanswer
 

MagicBuzz a écrit :

ne fait jamais de select dans un execute, d'un driver ABDOB à l'autre tu auras un résultat valide ou non, puisque c'est une procédure et non une fonction.


ah?  pourtant VB est formel: Execute est une fonction renvoyant un recordset [:meganne]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°413640
drasche
Posté le 02-06-2003 à 21:52:15  profilanswer
 

le recordcount est valide en fonction du type de curseur que tu utilises pour ouvrir ton recordset.  Avec le type forwardonly, c'est certain, il n'est pas utilisable.
 
Par contre avec ce type, tu sais tout de suite si ton recordset est vide car il se positionne automatiquement sur le premier enregistrement: tu testes EOF.  S'il est a True, ton recordset est vide.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 02-06-2003 à 21:52:15  profilanswer
 

n°413719
MagicBuzz
Posté le 02-06-2003 à 23:22:37  profilanswer
 

drasche a écrit :


ah?  pourtant VB est formel: Execute est une fonction renvoyant un recordset [:meganne]


c'est une surcharge de la procédure.
 
si tu passes une requête qui retourne un résultat à un "execute", ça fait implicitement un open.
 
seulement, d'une version des drivers à l'autre (d'un sgbd à l'autre surtout) ça marche pas toujours comme escompté. il est donc fortement recommandé d'utiliser le .open du recorsdet qui est à ça.

n°413837
drasche
Posté le 03-06-2003 à 07:22:03  profilanswer
 

ouais j'aurais dû préciser que je suis pour le Open aussi, naturellement :jap:  
il offre plus de possibilités quand aux types de curseurs et de locks.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)

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

  Tester si un recordset est vide [RESOLU, merci]

 

Sujets relatifs
XSLT : tester l'existence d'une balise et sa valeur en même temps?[ok]Commande avec 2 parametres : ERREUR ----------- RESOLU
MySQL -> SQL ... petite question... [résolu][TURBO PASCAL] Comment imprimer un dessin ? [Résolu]
[PHP] Exécuter des commandes en tant que root [Résolu][postgresql] [resolu] Probleme de language SQL
Pause en Java [ Résolu]Modifier l'imprimante par défaut ! : RESOLU: voila le code !
[RESOLU] kestion a la kon : recherche de String ds un FILEComment faire une fortune sur un site ? | résolu (code complet)
Plus de sujets relatifs à : Tester si un recordset est vide [RESOLU, merci]


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