切断记录前面的0

时间:2012-02-06 06:11:32

标签: .net database vb.net ms-access autonumber

这可能是一个基本问题,但我不知道如何在Google中说出来。

基本上,我有一个Access数据库,其主键使用这种格式(“02”000)构建。

当我尝试粘贴数字时,它会忽略“02”并直接转到000。

例如,这是代码;

PeriodRoomID.Name = ("R" & ds.Tables("sqlSpecRoomRequest").Rows(i).Item(1))

PeriodRoomID.Name应该是R02001。 什么是PeriodRoomID.Name,就像R1一样。

忽略“02”并忽略0。这在数学上是有道理的,但它不是我想要的。我需要一种方法来获得确切的输出,而不是一些简化的版本。

查询;

SELECT SpecialSoftware.SpecSoftID, SpecialSoftware.RoomID, SpecialSoftwareNames.Description, Rooms.Capacity
FROM SpecialSoftware, SpecialSoftwareNames, Rooms

3 个答案:

答案 0 :(得分:1)

我建议你有一个自动编号字段,格式设置为" 02" 000。所有格式都以该格式向Access用户显示数据。该字段不包含02001,它包含1.如果您希望重新创建格式,则必须在应用程序中执行此操作。将自动编号更新为 n 将在ADO和ODBC中显示为 n ,但在Access中的各个位置显示为0200n - 格式甚至与Access中的查询无关。我不相信表格中的格式是个好主意。

答案 1 :(得分:1)

您只需格式化应用内的数字:

Dim roomID As String = ds.Tables("sqlSpecRoomRequest").Rows(i).Item(1)
PeriodRoomID.Name = "R02" & roomID.PadLeft(3, "0"c)

答案 2 :(得分:0)

您只能访问“02”吗?您编写的查询忽略了“02”,因此看起来您需要对此信息进行单一查询 我不是vb或访问的专家,但看起来你可以使用一个快速的解决方案:你写道,你的密钥的形式为“02”000。我会自己取出每个数字,检查数字位数,将其转换为字符串并填充所有缺少的前导零,因为您知道最大位数。

参考整体评论显示: 如果您的房间ID以R01或R02开头,则动态填充前导零并按名称引用您的表格,以if-clause决定。