我正在尝试从列表视图中获取值,并将结果添加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
答案 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