【问题标题】:FormatException was unhandled vb.netFormatException 未处理 vb.net
【发布时间】:2012-11-24 01:45:42
【问题描述】:

这可能是一个很长的问题,但请耐心等待。

我在Form1 上有一个Datagridview1,列有BranchCode("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,然后将所有Quantity与相同的FormCode and BranchCode相加,然后将其添加到DGV2

例如:DGV1 结果

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

然后将其添加到 DGV2 后,这将是结果

DGV 2 结果

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

对不起,对于长篇文章,我已经尝试做一些事情,但他们并没有消除错误。

【问题讨论】:

  • 我建议您将代码拆箱一点,不仅会更快,而且更容易跟踪错误。 - 出现函数的签名是什么?你能发布它的代码吗?
  • Alex,我想我知道它是什么,打我:chat.stackoverflow.com/rooms/20673/alex22
  • @AbdiasSoftware 很抱歉回复晚了,出现是一本字典。

标签: .net vb.net winforms exception datagridview


【解决方案1】:

将您的错误行更改为:

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

你需要添加到数量属性,所以你需要获取它的当前值。

【讨论】:

  • 另一个问题,为了避免人为错误,我的数据库中有一个SeriesFrom 和一个Series To 列... 2 个表有它们... 我如何检查我的那两个表如果我输入一个数字,看看数据库中是否已经存在?我有一些代码,我只是不知道如何应用逻辑。我选择了像这样"SELECT incomingdeliveries.SeriesFrom, incomingdeliveries.SeriesTo, outgoingdeliveries.SeriesFrom, outgoingdeliveries.SeriesTo FROM incomingdeliveries, outgoingdeliveries WHERE incomingdeliveries.FormCode = @iCode AND outgoingdeliveries.FormCode = @iCode " 所需的列
  • 我还有一个 if else 循环来查看我输入的数字是否已经等于或介于这两个数字之间......我只是不知道用什么来比较值......我确实明白了逻辑,但使用的语法有问题。我会在聊天中发布。如果你有时间,请检查:)
  • @AlexLuthor 我猜你会想从这些列中获取不同的值,将它们存储在某个地方,并使用集合来编写一些代码,这些代码将根据它是否存在而采取不同的行动在集合中。把它贴在某个地方(在一个问题中有效),这样我有几分钟的时间就可以检查出来。
  • 如果我需要做的只是比较数字,这真的很简单,但我还必须检查这些数字......
  • 或者你认为我可以这样做吗 SET @value = txtFrom.text; @value2 = txtTo.text SELECT Table1.SeriesFrom, Table1.SeriesTo, Table2.SeriesFrom, Table2.SeriesTo FROM table1, Table2 WHERE Table1.Seriesfrom > @value AND @value <= Table1.Seriesto AND Table1.Seriesfrom > @value2 AND @value2 <= Table1.Seriesto AND Table2.Seriesfrom > @value AND @value <= Table2.Seriesto AND Table2.Seriesfrom > @value2 AND @value2 <= Table2.Seriesto
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 2013-08-10
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多