2013-06-18 34 views
0

我寫了一個函數,返回通過SSRS輸入的8個數值的最小值。返回從視覺基礎中的空值數組中的最低數字

問題是並不總是8個值,並且當我沒有收到SSRS中的錯誤時。我認爲這是因爲我正在給函數空值

我從來沒有使用VB,有沒有人可以告訴我一個工作?

使用的代碼如下 事先在此輸入代碼

Function minimumReading(reading0 as String 
         ,reading1 as String 
         ,reading2 as String 
         ... 7 as String) 

Dim  a(7) as String 
     a(0) = reading0 
     a(1) = reading1 
     ... 
     a(7) = reading7 
Dim max as string 
    Dim min as string 

max = a(3) 
min = a(3) 

Dim i as integer 

for i = Lbound(a) to Ubound(a) 
    if a(i) < min Then min = a(i) 
next i 

minimumReading = min 

End Function` 

感謝

+0

你能解釋一下數值是如何「通過SRSS輸入的」 - 它們是否由參數提供?如果是,查詢填充的參數,用戶輸入的列表等等? – Nathan

+0

它們是通過我正在構建的報告的其中一個單元格中的自定義代碼提供的。 = Code.minimumReading(Fields!reading.Value,Fields!reading2.Value ..) – Node17

回答

2

你需要通過8個值作爲單獨的參數?這將是更好的形式(也更容易保持長期運行)來創建發現的最小的數組(可能已存在)

如果你必須有它,你已經設置的方式,您可以使用此

功能
Dim a() As String 
ReDim a(0 To 0) 
Dim i As Long 
If reading0 <> vbNullString Then 
    a(UBound(a)) = reading0 
End If 
If reading1 <> vbNullString Then 
    ReDim Preserve a(LBound(a) To (UBound(a) + 1)) 
    a(UBound(a)) = reading1 
End If 
If reading2 <> vbNullString Then 
    ReDim Preserve a(LBound(a) To (UBound(a) + 1)) 
    a(UBound(a)) = reading2 
End If 
... 

我的建議再次是重構你的代碼。