Dim ou Set, lequel choisir? [Résolu]

Signaler
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
Bonjour tout le monde,

Si j'ai bien compris :

dim rs As New ADODB.Recordset


est une classe.

Set rs = New ADODB.Recordset


est une instance de la classe ci-dessus.

Est-ce que cela est bien plus "léger" et rapide de procéder comme ci-dessus plutôt que de faire comme ceci :

dim rs As New ADODB.Recordset


Merci d'avance.

Cordialement.

12 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
salut,

une classe est un objet
un objet n'est pas forcément une classe

de ce point, certains objets ne sont pas instanciable par NEW, c'est pourquoi les 2 syntaxes co-existent

dans ton cas tu peux directement faire :
dim rs As New ADODB.Recordset

qui est le raccourci des 2 lignes (dim + set)

[hr]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
"partagé" je veux dire un RS déclaré en public dans un module par exemple

non pas de fermeture commune :
1 -> tu fermes un objet de REQUÊTE, aucune interaction sur la DB
2 -> application EN réseau veut dire que ton exe est sur un disque partagé n'est-ce pas (pas que tu as fait une appli client-serveur).
il y a donc autant d'instances de ton EXE que d'utilisateurs, chacun ferme alors SES objets (par ton code)

c'est le principe même de "une instance"

si tu lances 2 calculatrices, le résultat d'une opération ne va pas sur les 2 instances mais bien uniquement sur celle que tu utilises

c'est pareil
++
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
Juste pour préciser qu'il s'agit d'un cas d'une application en réseau. Merci d'avance.

Cordialement.
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
Bonjour et Merci PCPT pour ton aide. J'aimerai juste savoir si tu sais pourquoi utiliser :

If cn.State <> adStateClosed Then cn.Close
If rst.State <> adStateClosed Then rst.Close


avant d'ouvrir une connexion ou un recordset tout en sachant justement que la connexion ou le recordset seront ouvert tout juste après?

Merci d'avance.

Cordialement.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
pour ne fermer l'objet que s'il ne l'est pas déjà

on fait çà avant de détruire (plus propre), et uniquement sur un RecordSet partagé

c'est à dire que si tu fais 2 requêtes à la suite sur le même RecorSet effectivement il ne faut pas fermer CN entre les deux, juste sur RST
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
nb : et dans ce cas (entre les 2 requêtes) çà sera juste RST.CLOSE, pas besoin de tester, on sait qu'il est ouvert
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
Lorsque tu parles de recordset partagé, je suppose que tu veux également parler du cas d'une application en réseau. Mais en utilisant le .State comme ci-dessus, ça ne risque pas de fermer ce même recordset utilisé par un autre utilisateur sur une autre machine?

Merci d'avance.

Cordialement.
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
donc un simple rst.close ne suffit pas pour fermer le recordset?
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
En fait ce que je fais je compile mon application VB que j'installe sur chaque PC client puis je crée un dossier partagé sur le serveur et j'y mets la BD avec comme autorisation de lecture/écriture pour tout le monde. ça peut marcher aussi comme ça?

Merci d'avance.

Cordialement.
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
je veux parler de ces histoires d'instances dans mon cas.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
... j'ai déjà répondu
samedi 3 octobre 2009 à 04:22:24
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
OK, Merci PCPT. Je ne sais pas si tu as compris ma dernière question, en fait c'était juste pour savoir si ma manière d'installer mon application en réseau était bien et ne causerai pas de problème particulier (je n'ai jamais fait une application multi-utilisateur, je suis sur mon premier qui est toujours en phase de concerption). Merci d'avance et excellente soirée.

Cordialement.