SSRSレポートには、Excel VBAでテストデータを実行すると完全にうまく動作するカスタムコードがありますが、エラー
テキストボックス「textbox72」の値式は、エラーを含む:オブジェクト参照がオブジェクト
レポートは、単純なテーブルレポートであるのインスタンスに設定されていません。カスタムコードは、監査レポートの「前」と「後」の文字列を比較し、追加または削除された詳細を返信する必要があります。文字列はchar(10)で区切られています。文字列行は追加または削除のみ可能です。文字列の行自体は変更されません。 Null文字列はありません。私は正常にExcel VBAでこれをテストしたので、コードはおそらく大丈夫だと思います。何か案は?SSRS VBAコードオブジェクト参照がオブジェクトのインスタンスに設定されていない
textbox72のコード呼び出しが
=iif(len(Fields!AOS.Value) > 0 and len(Fields!AfterAOS.Value) > 0,code.go_compare(ReportItems),"")
あるレポートのコードがある:(エクセルVBA試験から)
Function go_compare(Items as ReportItems) as string
Dim j As Integer
Dim x As Integer
Dim Diff(50) As String
Dim DiffInd As Integer
Dim Intmatch As Integer
Dim StrDiff as string
Dim Arr() As String
Dim Arr1() As String
Dim StrVal As String
Dim StrFinal As String
Dim y As Integer
Dim Str1 as string
Dim Str2 as string
Str1 = items("AOS_1").value
Str2 = items("AfterAOS").value
StrFinal = ""
StrDiff = ""
For y = 0 To 1
Erase Diff
If y = 1 Then
StrVal = "Removed"
Arr = Split(Str1, Chr(10))
Arr1 = Split(Str2, Chr(10))
Else
StrVal = "Added"
Arr = Split(Str2, Chr(10))
Arr1 = Split(Str1, Chr(10))
End If
For j = 0 To UBound(Arr)
Intmatch = 0
For x = 0 To UBound(Arr1)
If Trim(Arr(j)) = Trim(Arr1(x)) Then
Intmatch = 1
End If
Next x
If Intmatch = 0 Then
Diff(DiffInd) = Trim(Arr(j))
DiffInd = DiffInd + 1
End If
Next j
StrDiff = StrDiff & StrVal & " Values" + vbCrLf
For j = 0 To UBound(Diff)
If Diff(j) = "" Then Exit For
StrDiff = StrDiff + Diff(j) + vbCrLf
Next j
If Len(StrDiff) > 16 Then
StrFinal = StrFinal + StrDiff
End If
StrDiff = ""
Next y
Return StrFinal
End Function
サンプルデータ
Dim StrStr1 As String
Dim StrStr2 As String
StrStr1 = "xxxx" & Chr(10)
StrStr1 = StrStr1 & "yyyy" & Chr(10)
StrStr1 = StrStr1 & "zzzz" & Chr(10)
StrStr1 = StrStr1 & "aaaa" & Chr(10)
StrStr1 = StrStr1 & "bbbb" & Chr(10)
StrStr1 = StrStr1 & "cccc" & Chr(10)
StrStr1 = StrStr1 & "dddd" & Chr(10)
StrStr2 = "xxxx" & Chr(10)
StrStr2 = StrStr2 & "yyyy" & Chr(10)
StrStr2 = StrStr2 & "zzzz" & Chr(10)
StrStr2 = StrStr2 & "aaaa" & Chr(10)
StrStr2 = StrStr2 & "bbbb" & Chr(10)
StrStr2 = StrStr2 & "dddd" & Chr(10)
StrStr2 = StrStr2 & "eeee" & Chr(10)
期待される結果
Removed Values
cccc
Added Values
eeee
私はわからないんだけど、私はReportItems'はあなたが '関数go_compare(ReportItemsなどの項目)' –
おかげ@PaulOgilvieに使うタイプの名前である 'ことcode.go_compare(ReportItems)' 'に気づきます。私は、レポートアイテムコレクション全体ではなく個別にフィールドを送信するが、同じエラーが発生するような場所で、これを試してみました。 '= code.go_compare(Fields!AOS.Value、Fields!AfterAOS.Value)'(これを反映するようにコードを変更する) – MiguelH