1

这可能是一个基本问题,但我不知道如何在谷歌中用词。

基本上,我有一个 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
4

3 回答 3

1

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

于 2012-02-06T14:35:07.513 回答
1

您可以在应用程序中格式化数字:

Dim roomID As String = ds.Tables("sqlSpecRoomRequest").Rows(i).Item(1)
PeriodRoomID.Name = "R02" & roomID.PadLeft(3, "0"c)
于 2012-02-06T14:44:02.483 回答
0

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

参考整体评论显示的内容:动态填充前导零并按名称引用您的表格,以通过 if 子句决定您的房间 ID 是否以 R01 或 R02 开头。

于 2012-02-06T08:24:09.380 回答