[VBScript] Fonction qui retourne un tableau à 2 dimensions

Ant8386 Messages postés 36 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 16 mai 2006 - 13 mars 2006 à 16:47
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 13 mars 2006 à 19:45
Bonjour,

J'ai une petite fonction qui essaie de récupérer dans une BD la valeur de deux champs pour un enregistrement passé dans la clause WHERE.
Si cet enregistrement existe, la fonction me retourne un tableau à deux dimensions contenant le résultat de l'exécution de la requête.
Voici cette fonction :

-----------------------------------------------------------------------------------
Function GetInfo(param1,param2)

Dim str_sql, rst_info
Dim info()
Redim info(0,1)

Set rst_info = Server.CreateObject("ADODB.Recordset")
str_sql = "SELECT champ1, champ2 FROM ... WHERE ..."

rst_info.Open str_sql, conn, 3, 1

if (rst_info.RecordCount = 1) then

info(0,0) = rst_info("champ1")
info(0,1) = rst_info("champ2")

else

info(0,0) = null
info(0,1) = null

end if


rst_info.Close()
Set rst_info = nothing


GetInfo = info


end Function
-----------------------------------------------------------------------------------

A priori jusque là ça marche bien. Mais c'est dans mon prog principal que je n'arrive pas à récupérer les informations retournées par la fonction.
Je voudrai un tableau qui reçoive l'exécution de la fonction pour que je puisse le parcourir ensuite et ça je n'y arrive pas ! J'ai soit une erreur du type "Subscript out of range" soit qqchose du style "type_mismatch".

A titre indicatif, je voudrai un truc dans ce style dans le main :
Dim tab_infos
Redim tab_infos(0,1)
tab_infos = GetInfo(param1,param2)

Merci d'avance pour votre aide !

1 réponse

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
13 mars 2006 à 19:45
Salut,
Il me semble avoir répondu à une question similaire il n'y a pas longtemps. Mais comme ça ne concernait pas le VBS, je la reposte avec tes noms de variables :

'La fonction :
Function GetInfo(ByVal param1, ByVal param2, ByRef info())

Dim str_sql, rst_info
ReDim info(0, 1)

Set rst_info = Server.CreateObject("ADODB.Recordset")
str_sql = "SELECT champ1, champ2 FROM ... WHERE ..."

rst_info.Open str_sql, conn, 3, 1

If (rst_info.RecordCount = 1) Then

info(0, 0) = rst_info("champ1")
info(0, 1) = rst_info("champ2")

Else

info(0, 0) = Null
info(0, 1) = Null

End If

rst_info.Close
Set rst_info = Nothing

End Function

'L'appel de la fonction :
Dim tab_infos()

Call GetInfo(param1, param2, tab_infos)

Après, tu lis ton tableau tab_infos comme tu veux.

Comme je ne suis pas un spé du vbs, je ne sais pas trop si les instructions Byval, Byref et call sont comprises par ce langage. Je te laisse traduire.
0
Rejoignez-nous