1

我们目前正在使用 Access 2003。我有一个车辆维护日志,其中有一个用于车辆编号的文本字段。该字段必须是文本,因为当车辆退役时,它会在其中包含一个 R。他们希望该字段是一个带有前导零的四位数字。因此,车辆 22 将显示在表格中并报告为 0022,退役时将显示为 R0022。我试图将字段的格式更改为“0000”和“0000”#,但它们都不会显示前导零。

4

1 回答 1

2

您真的希望您的用户手动编辑该字段吗?
我不喜欢这样的解决方案,因为它很容易出错(除非您检查很多东西以确保没有人输入无效数据)并且对您的用户来说感觉不雅。

我只需将以下内容保存在表中:

  • 数字字段中的车辆编号 ( 22, not 0022)
  • 一个布尔字段,指示车辆是否已退役

这对您的用户来说更容易使用:

  • 他们可以直接输入新的车辆编号,而无需考虑前导零
  • 要让车辆退役,他们只需要设置一个复选框,而不是在车辆编号前面加上正确的字母

另外,现在显示所需的数字R0022只需显示/格式化表格中的数据:

Public Function GetDisplayNo(VehicleNo As Integer, IsRetired As Boolean) As String

    GetDisplayNo = IIf(IsRetired, "R", "") & Right("0000" & VehicleNo, 4)

End Function

你可以像这样使用这个函数:

GetDisplayNo(22, True)返回R0022

GetDisplayNo(22, False)返回0022

而如果需要以报表或者连续的形式展示车号列表,可以直接在底层查询中使用这个函数:

SELECT 
    Vehicles.VehicleNo, 
    Vehicles.IsRetired,
    GetDisplayNo([VehicleNo],[IsRetired]) AS DisplayNumber
FROM Vehicles;
于 2013-06-28T15:18:01.127 回答