2016-04-28 303 views
1

我需要一個非常煩人的問題的幫助,我從今早8開始一直在努力..我不是專業的,當涉及到調試經典的asp錯誤。然而,我知道足夠的知道發生了什麼,但不完全確定如何處理/根除這個問題:類型不匹配錯誤:'UBound'

問題:sql查詢可能會返回任何將導致我的數組爲空,這是給我標題中指定的錯誤。

代碼:

233 while not rs.eof 
    234 varCampArray = split(trim(rs("Notes")) & "", ";") 
    235  If ubound(varCampArray) > 0 Then 
    236   varCampArray2 = split(varCampArray(0) & "", "=") 
    237  End If 
    238  if ubound(varCampArray2) > 0 then 
    254  wend 

線239-253是無關的(只是基於關閉陣列和另一個查詢計算),只是想那麼沒有人認爲其不正確編碼添加「蜿蜒」的語句。

附加信息: 這是我們自定義的vb應用程序,對於這個特定的asp文件,用戶轉到Report> Daily> Summary,然後從那裏用戶選擇某一天來獲得當天的財務摘要。如果我今天運行這個報告,它會運行,並且我得到數字,如果我在本月26日運行它,它會運行並且沒有錯誤地執行。如果我運行它昨天(2016年4月27日),我在我們的VB應用程序獲取此在的ReportViewer: (Microsoft VBScript運行時錯誤 '800a000d')

類型不匹配:UBOUND'

/應用/Program14/reports/trans_summary.asp,第238行

我還沒有試圖解決這個問題,因爲我不確定如何處理這個問題。我甚至查看了iis日誌文件,它的錯誤是500 0 0 130.然後配置IE以正確顯示運行時錯誤的詳細信息。這就是它吐出來的東西,而且我現在被卡住了。任何幫助將不勝感激。我搜索了無數其他文章,但我仍然對這個問題感到迷茫,而且微軟和外國技術支持一樣有幫助。

回答

3

ubound(varCampArray)不是>0varCampArray2會有什麼?它可能不是一個數組。這就是爲什麼UBound方法在varCampArray2上拋出錯誤!

只是在使用UBound之前檢查它是否是數組。

while not rs.eof 
    varCampArray = split(trim(rs("Notes")) & "", ";") 
    If ubound(varCampArray) > 0 Then 
      varCampArray2 = split(varCampArray(0) & "", "=") 
    End If 
    If isArray(varCampArray2) Then 
     if ubound(varCampArray2) > 0 then 
       'do something here 
      end If 
     Else 
      Msgbox "all these time i thought it was an array!!!" 
     End If 
wend 

或者簡單地說,如果在第一個if區塊內,您可以移動第二個。

while not rs.eof 
    varCampArray = split(trim(rs("Notes")) & "", ";") 
    If ubound(varCampArray) > 0 Then 
      varCampArray2 = split(varCampArray(0) & "", "=") 
      if ubound(varCampArray2) > 0 then 
       'do something here 
      end If 
    End If 
wend 
+0

感謝VINS,處理這個問題最多的一天,只是不得不從我的機器走開,只是重新啓動我的腦海裏,然後回來看你的答案後,我終於發現了問題。問題在於數據被忽略(爲了使查詢/報告成功,數組數據是必需的)。你的回答引導我解決了我的問題,我非常感謝。我將你的建議添加到報告代碼中(如果嵌套在另一個嵌套中,然後從那裏嵌套)。 – user2001006