Persistence d'objets créés dans une fonction

econs
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
- 26 sept. 2005 à 09:34
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
- 26 sept. 2005 à 11:40
J'ai créé une fonction qui me renvoie un recordset (Type ADODB.Recordset).

D'habitude, quand je manipule des objets de ce type, je les crée (New)
et quand j'ai fini, je les supprime proprement ( Set ... = Nothing )



Ici, comme ma fonction crée et renvoie un recordset, je ne peux pas le
supprimer à l'intérieur de la fonction (sinon, je ne renvoie plus
rien). Ma question est donc : Que devient l'instance rReturn créée
temporairement dans ma fonction quand j'ai fini d'appeler cette
fonction ? Si j'appelle cette fonction 3 millions de fois, puis-je
planter ?





Public Function getRecordsetFromTable(sTableName As String, sKeyValue As String) As Recordset

Dim rReturn As Recordset



Set rReturn = New ADODB.Recordset

Set rReturn = CONNECTION.Execute("SELECT * FROM " & sTableName & " WHERE 1;")



rReturn.MoveFirst

[... bla bla ...]





getRecordsetFromTable = rReturn

End Function





J'ai une solution de secours, mais je pose quand même cette question qui me taraude l'esprit...




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.

5 réponses

econs
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
23
26 sept. 2005 à 09:38
Dans ma précipitation, j'ai oublié de dire bonjour, et c'est pas bien.

Alors BONJOUR !!

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_Stephane33
Messages postés
630
Date d'inscription
samedi 15 février 2003
Statut
Modérateur
Dernière intervention
9 octobre 2011
1
26 sept. 2005 à 10:16
si ton recordset est public, tu peux à la limite le charger et le décharger de manière externalisé.


Juste faites-le
0
econs
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
23
26 sept. 2005 à 11:04
Mais je compte bien faire quelque chose comme çà. Ce n'est pas çà mon problème.

Je voudrais savoir, dans le cas cité ci-dessus, ce qu'il advient de mon instance de rReturn.


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
aieeeuuuuu
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
26 sept. 2005 à 11:14
salut,

Je ne vois absolument pas ce qui t'empeche de faire ton
set rReturn = nothing

en fin de fonction, après la ligne :
getRecordsetFromTable = rReturn

cela n'affectera pas le contenu de getRecordsetFromTable et tout devrait fonctionner normalement.
0

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

Posez votre question
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
26 sept. 2005 à 11:40
salut,
ta fonction renvoie un résultat. çà s'arrête là. je vois pas le problème.
par contre, ton SET, là oui, c'est pas top

le mieux serait de le déclarer (simple private ... New) dans la classe, et de le détruire au Terminate.
les autres demandes faites vont réutiliser ce même Set (pas New)

oui?
PCPT
0