Persistence d'objets créés dans une fonction

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 26 sept. 2005 à 09:34
PCPT Messages postés 13272 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 Membre Dernière intervention 23 décembre 2008 24
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 Membre Dernière intervention 23 décembre 2008 24
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 3
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 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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
Rejoignez-nous