while循环中的Inc值

时间:2013-12-28 12:52:57

标签: vb.net visual-studio-2010 visual-studio

我正在尝试从列表视图中获取值,并将结果添加1以包含在访问数据库中。问题是,如果我添加一个如此+1的inc语句,它会不断更改它以使用CDbl,这会给我不正确的结果。例如,在加1之前,在加1后给出'011697',它给出'11697'。为什么它降低了领先零。该字段是一个文本字段,所以我很困惑为什么它改为CDbl。有人可以帮忙解决这个问题。感谢

    Dim id As String

    While dr.Read()

          id = dr.Item(0).ToString
          id = CStr(CDbl(id) + 1)

    End While 

2 个答案:

答案 0 :(得分:2)

将数字转换为整数,添加增量值,然后重新格式化为包含所需前导零的6个数字的字符串

Dim id As String
While dr.Read()
      id = dr.Item(0).ToString
      id = string.Format("{0:D6}", (Convert.ToInt32(id) + 1))
End While 

转换为数字会强制解除前导零,因为它在数字中没有意义,使用composite formatting恢复具有所需字符数的字符串并用零填充缺少的字符

顺便说一句,如果可能的话,尝试删除像CDbl和CStr这样的功能。它们只是为了简化旧VB6应用程序的转换。 NET中有许多替代方案,除非是非常特殊的情况,否则这些替代方案优于这些VB6兼容性功能。

答案 1 :(得分:1)

如果你想保持零,请使用此代码:

Dim id As String

While dr.Read()

      id = dr.Item(0).ToString
      id = CStr(CDbl(id) + 1)
      id = id.PadLeft(6, "0")
End While