Indice en dehors de la plage que je ne comprends pas!!!

Signaler
-
 hjijo -
HELLo,

Voilà du VBScript, que je n'arrive décidément pas à faire tourner
Problème indice en dehors de la plage...indiqué par <-!!!!
Je m'y prends certainement mal avec les tableaux dynamiques.
J'ai essayer avec un objet "dictionary" mais rien à y faire,
la c'est la (les) fonction(s) qui n'accepte plus.
Je planche sur le problème depuis deux jours (et suis débutant)
donc une aide (avec explication à l'appuie serait magnifique!!

De plus, si tu connaîs un bon lien pour que je puisse étudier
l'objet "dictionary": terrible!

Merci beaucoup
Bon week-end

hjijo


Function chercherInfo
' *** Fonction qui fixe la valeur des balises du formulaire en fonction des infos enregistrées
' dans la base de données
' Prends en paramètre le nom du champ --------------> cf nom des balises = nom ds la base

Dim SQLString, rsInfo
Dim reqOK ' *** Si la requête est exécutée
reqOK=false

' *** Recuperation de la variable de recherche dans le formulaire
codeCli=Request.Form("txtNumCli")
passCli=Request.Form("txtPassWord")
If valideSubmit(codeCli, passCli) Then
Set rsInfo = Server.CreateObject("ADODB.Recordset")
' *** Lancement de la recherche dans le fichier Client
'SQLString="SELECT * FROM client WHERE Code_client='"& codeCli &"' AND Mot_de_passe='" & passCli & "'"
rsInfo.Open SQLString, conn, adOpenForwardOnly, adLockReadOnly
reqOK=true
End If

If reqOK Then
Dim tb()
Dim i
const champ=0
const valeur=1

For i=0 To rsInfo.Fields.Count-1
ReDim Preserve tb(i, champ) <-!!!!
tb(i, champ)=rsInfo.Fields(i).Name
ReDim Preserve tb(i,valeur)
tb(i,valeur)=rsInfo.Fields(i).Value
Next
chercherInfo = tb

' *** Fermeture et libération recordset
rsInfo.Close
Set rsInfo = Nothing
Else
chercherInfo=""
End If
End Function
' *********************************************************
Function fixerValeur(nom)

Dim tb()
const champ=0
const valeur=1

fixerValeur=""
' *** Cherche à fixer une valeur sur Click du btn OK
If Request("ok2")="ok" then
' *** ok on récupère le tableau pour fixer la nouvelle valeur à la balise
tb() = chercherInfo

If UBound(tb)> 0 Then
For i=0 To UBound(tb)
If tb( i,champ)=nom Then
fixerValeur=tb(i,valeur)
Exit Function
Else
msg = "erreur boZZo!"
End If
Next
Else
response.write "PROBLEME BOZZO!!!!!"
End If
End If
End Function

Ca doit être bourré de faute mais je comprends trop pas l'erreur sur les indices..
%-6

2 réponses

salut
tu ne peux faire un redim preserve et modifier que la dernière dimension...
essaye ca:

const champ=0
const valeur=1
For i=0 To rsInfo.Fields.Count-1
ReDim Preserve tb(valeur,i)
tb(champ,i)=rsInfo.Fields(i).Name
'ReDim Preserve tb(i,valeur)>>> inutile
tb(valeur,i)=rsInfo.Fields(i).Value
Next

If you use the Preserve keyword, you can resize only the last array dimension, and you can't change the number of dimensions at all. For example, if your array has only one dimension, you can resize that dimension because it is the last and only dimension. However, if your array has two or more dimensions, you can change the size of only the last dimension and still preserve the contents of the array.
En fait avec un Ubound ça avit l'air de marcher...
Mais j'ai dû abandonner pour des questionde déalis principalement (car j'n'arrivais pas à récupérer ce fameux(?) tableau dans mon autre fonction, fin Bref merci quand même...

Si tu connaîs un bon lien qui parle des tableaux (princ. tab dyn à au moins deux dimensions) ce serait sympa.

Hjijo