我们目前正在使用 Access 2003。我有一个车辆维护日志,其中有一个用于车辆编号的文本字段。该字段必须是文本,因为当车辆退役时,它会在其中包含一个 R。他们希望该字段是一个带有前导零的四位数字。因此,车辆 22 将显示在表格中并报告为 0022,退役时将显示为 R0022。我试图将字段的格式更改为“0000”和“0000”#,但它们都不会显示前导零。
问问题
1274 次
1 回答
2
您真的希望您的用户手动编辑该字段吗?
我不喜欢这样的解决方案,因为它很容易出错(除非您检查很多东西以确保没有人输入无效数据)并且对您的用户来说感觉不雅。
我只需将以下内容保存在表中:
- 数字字段中的车辆编号 (
22
, not0022
) - 一个布尔字段,指示车辆是否已退役
这对您的用户来说更容易使用:
- 他们可以直接输入新的车辆编号,而无需考虑前导零
- 要让车辆退役,他们只需要设置一个复选框,而不是在车辆编号前面加上正确的字母
另外,现在显示所需的数字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 回答