2010-02-02 3 views
0

En utilisant Sax ActiveX Scripting (histoire longue), j'ai 3 instructions if imbriquées qui réutilisent la même variable de retour. Script ressemble à peu près comme:VBScript: Erreur 10023 dans: Array index hors de portée (problème lors de la réutilisation d'une variable de tableau)

Dim rtnArray As Variant 
If variable1 <> "" Then 
    ' Perform SQL query against DB2 database 
    rtnArray = DB2SQLSearch(Query) 
    If UBound(rtnArray) = 0 Then 
     ' ditto 
     rtnArray = DB2SQLSearch(Query2) 
     MsgBox "Gets this far" 
     If UBound(rtnArray) = 0 Then ' Error! 
      ' Never make it here 

Ce qui est étrange est que cette même structure de code fonctionne dans un script que j'ai écrit la semaine dernière; J'ai simplement changé quelques requêtes et le nom de la fonction (find> replace).

Après la 2ème requête, j'ai essayé MsgBox CStr(rtnArray(0)(0)) mais il donne Error 10025 in : Array has a different number of indexes.

codes d'erreur correspondent au manuel suivant:
http://www.ftgsoftware.com/manuals/basic32.pdf

+0

Merci, Helen – hewhocutsdown

Répondre

0

Compris.

Dans ce cas particulier, l'utilisateur que je me connectais avait une autorisation pour la première table, mais pas la seconde. Cela n'a pas jeté une erreur, mais il y a un message que je peux vérifier pour voir s'il y a eu un succès ou non, donc je peux le chercher et lancer ma propre erreur, au lieu de renvoyer un tableau nul. (Ce n'est pas un Null bon, franchement, je ne suis toujours pas 100% sûr de ce qu'il est, en dehors d'un Variant Mais il ne vous aime pas UBound()

+2

FYI: En VBScript normal, UBound échoue sur les tableaux vides déclarés comme 'Dim arr()' (voir http://en.wiki.mcneel.com/default.aspx/McNeel/RsEmptyArray). – Helen

+0

J'ai déclaré le mien en tant que variante, voir le code ci-dessus Article intéressant, je vais devoir jouer avec et voir à quel point cela est vrai pour Sax. – hewhocutsdown

0

Vous pouvez stocker dans une autre variable, ou ReDim la rtnArray variable pour avoir la bonne taille. Pour Redim, vous devez connaître la taille.

+0

Malheureusement, il est pour les résultats de la requête;.! I Je ne sais pas quelle sera la taille, donc je ne sais pas si ReDim fonctionnera Au cours du débogage, j'ai essayé de créer une deuxième variable tableau juste pour cette requête interne, mais j'ai les mêmes erreurs – hewhocutsdown

Questions connexes