0

Sax ActiveX スクリプティング (長い話) を使用すると、同じ return 変数を再利用する 3 つの入れ子になった if ステートメントがあります。スクリプトはおおよそ次のようになります。

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

奇妙なことに、これと同じコード構造が、私が先週書いたスクリプトで機能していることです。いくつかのクエリと関数の名前を変更しただけです (検索 > 置換)。

2番目のクエリの後、試してみましたMsgBox CStr(rtnArray(0)(0))が、結果が得られますError 10025 in : Array has a different number of indexes.

エラーコードは次のマニュアルに対応しています:
http://www.ftgsoftware.com/manuals/basic32.pdf

4

2 に答える 2

0

別の変数に格納するかReDim、rtnArray 変数に格納して適切なサイズにすることができます。Redimするには、サイズを知る必要があります。

于 2010-02-02T03:25:51.187 に答える
0

理解した。

この特定のケースでは、私が接続していたユーザーは最初のテーブルへの権限を持っていましたが、2 番目のテーブルへの権限はありませんでした。

これはエラーをスローしませんでしたが、成功したかどうかを確認できるメッセージがあるので、null 配列を返す代わりに、それを探して独自のエラーをスローできます。(それは適切なNullではありません。率直に言って、 を除いて、それが何であるかはまだ100%わかりVariantません。しかし、それは確かに好きではありませんUBound()

于 2010-02-02T18:20:31.680 に答える