2

これは長い質問かもしれませんが、少しご容赦ください。

私は列に取り組んでいDatagridview1ますForm1BranchCode("cells(2) ,FormCode("cells(3)")), Quantity("cells(5)")

これがどのように見えるかを言いましょう

DGV1

 BranchCode | FormCode | Quantity
     001         Frm1       10
     002         Frm2      -10
     001         Frm1       20

DGV2 で、同じブランチ コードとフォーム コードを持つデータがあるとします。

DGV2

BranchCode | FormCode | Quantity
    001        Frm1        50
    002        Frm2        50

以下のコードはループし、すべてを DGV1合計してから追加しますQuantityFormCode and BranchCodeDGV2

例: DGV1 の結果

BranchCode | FormCode | Quantity
    001        Frm1        30
    002        Frm2       -10

次に、DGV2に追加した後、これが結果になります

DGV2の結果

BranchCode | FormCode | Quantity
    001        Frm1        80
    002        Frm2        40

コード

For Each xRows In MDIAdjustment.oTransferRows.Where(Function(x) x.Cells("GVPosted").Value.ToString() = "No")

      If (occurences.ContainsKey(xRows.Cells(3).Value.ToString())) Then

          occurences(xRows.Cells(3).Value.ToString()).Quantity = Double.Parse(occurences(xRows.Cells(3).Value.ToString()).ToString()) + Double.Parse(xRows.Cells(5).Value.ToString())

               Else

                    occurences.Add(xRows.Cells(3).Value.ToString(), New CustomValues2 With {.Code = xRows.Cells(3).Value.ToString(), .Branch = xRows.Cells(2).Value.ToString(), .Description = xRows.Cells(4).Value.ToString(), .Quantity = Double.Parse(xRows.Cells(5).Value.ToString()) })  

               End If

     Next

の宣言occurences dictionary

Dim occurences As New Dictionary(Of String, CustomValues2)

Class CustomValues2 

Public Property Code() As String 
Public Property Branch() As String 
Public Property Description() As String 
Public Property Quantity() As Double 

End Class

問題は、正の整数のみを使用して計算する場合は問題ありませんが、負の数を追加し始めると、この行でエラーが発生することです

 occurences(xRows.Cells(3).Value.ToString()).Quantity = Double.Parse(occurences(xRows.Cells(3).Value.ToString()).ToString()) + Double.Parse(xRows.Cells(5).Value.ToString())

言ってFormatException was Unhandled" Input string was not in a correct format

長い投稿で申し訳ありませんが、私はやろうとしましたが、エラーを削除しません。

4

1 に答える 1

2

エラー行を次のように変更します。

occurences(xRows.Cells(3).Value.ToString()).Quantity = occurences(xRows.Cells(3).Value.ToString()).Quantity + Double.Parse(xRows.Cells(5).Value.ToString())

数量プロパティに追加する必要があるため、現在の値を取得する必要があります。

于 2012-12-06T05:23:34.057 に答える