1

通貨ごとに2つのデータセットから値を読み取る必要があるレポートがあります。

Dataset1: Production Total
Dataset2: Net Total

私は使用しようとしました:

Lookup(Fields!Currency_Type.Value, 
       Fields!Currency_Type1.Value,
       Fields!Gross_Premium_Amount.Value, 
       "DataSet2")

これにより、データセット2から最初の金額のみが返されます。

Lookupset関数も試しましたが、取得した値を合計しませんでした。

どんな助けでもいただければ幸いです。

4

2 に答える 2

2

返信してくれたジェイミーに感謝します。これは私が行ったことであり、完璧に機能しました。[レポートのプロパティ]-> [コード]から、次の関数を記述します。

Function SumLookup(ByVal items As Object()) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim suma As Decimal = New Decimal()
Dim ct as Integer = New Integer()
suma = 0
ct = 0
For Each item As Object In items
suma += Convert.ToDecimal(item)
Next
If (ct = 0) Then return 0 else return suma 
End Function

次に、関数を呼び出すことができます。

code.SumLookup(LookupSet(Fields!Currency_Type.Value, Fields!Currency_Type1.Value,Fields!Gross_Premium_Amount.Value, "DataSet2"))
于 2012-11-02T07:09:46.443 に答える
1

はい、ルックアップは最初に一致する値のみを返します。3つのオプションが思い浮かびます。

  1. クエリを変更して、1つの値のみを取得する必要があるようにします。GROUP BYとを使用SUM(...)して、クエリ内の2つの行を結合します。このクエリを他の場所で使用している場合は、コピーを作成して変更してください。
  2. 行に違いはありますか?去年のものと今年のものなど?その場合は、人工的なルックアップキーを作成し、2つの値を別々にルックアップします。

    =Lookup(Fields!Currency_Type.Value & ","
        & YEAR(DATEADD(DateInterval.Year,-1,today())), 
       Fields!Currency_Type1.Value & ","
        & Fields!Year.Value,
       Fields!Gross_Premium_Amount.Value, 
       "DataSet2")
    +
    Lookup(Fields!Currency_Type.Value & ","
       & YEAR(today()), 
      Fields!Currency_Type1.Value & ","
       & Fields!Year.Value,
      Fields!Gross_Premium_Amount.Value, 
      "DataSet2")
    
  3. LookupSet上記の機能を使用してください。これにより、値のコレクションが返され、それらを一緒に追加する必要があります。これを行う最も簡単な方法は、レポートに埋め込まれたコードを使用することです。この関数をレポートのコードに追加します。

    Function AddList(ByVal items As Object()) As Double
       If items Is Nothing Then
         Return 0
       End If
       Dim Total as Double
       Total = 0
       For Each item As Object In items
          Total = Total + CDbl(item)
       Next
    
       Return Total
    End Function
    

    今それを次のように呼びます:

    =Code.AddList(LookupSet(Fields!Currency_Type.Value, 
       Fields!Currency_Type1.Value,
       Fields!Gross_Premium_Amount.Value, 
       "DataSet2"))
    

(注:このコードはテストされていません。StackOverflow編集ウィンドウで作成しただけで、VBのファンではありません。しかし、何をすべきかについての良いアイデアが得られるはずです。)

于 2012-11-01T14:38:54.830 に答える