Ms access MS访问表:Zip_CD字段中的非前导零正确

Ms access MS访问表:Zip_CD字段中的非前导零正确,ms-access,vba,Ms Access,Vba,我在长时间休假后回到了Access,遇到了一些困难。我有一个包含邮政编码字段的表。所提供的一些邮政编码为5位(52186),一些邮政编码为10位类型,带有尾随的邻里编码(77005-1568)。但是,前导零尚未保留,我需要重新插入它们。例如,(04074)出现在(4070)。然而,9位邮政编码包含了前导零。我需要一种将前导零添加到5位邮政编码的方法。我不能使用像转换为数字然后格式化为“00000”这样的技巧,因为这会对9位数的拉链造成严重破坏。另外,由于我已经离开Access很长时间了,我不确定

我在长时间休假后回到了Access,遇到了一些困难。我有一个包含邮政编码字段的表。所提供的一些邮政编码为5位(52186),一些邮政编码为10位类型,带有尾随的邻里编码(77005-1568)。但是,前导零尚未保留,我需要重新插入它们。例如,(04074)出现在(4070)。然而,9位邮政编码包含了前导零。我需要一种将前导零添加到5位邮政编码的方法。我不能使用像转换为数字然后格式化为“00000”这样的技巧,因为这会对9位数的拉链造成严重破坏。另外,由于我已经离开Access很长时间了,我不确定我是否应该使用函数、查询、某种类型的VBA记录集或其他什么来执行此操作。我想不起最好的方法了。如有任何建议,将不胜感激。谢谢大家!


-Charlie

您可以使用以下表达式:

TrueZip = IIf(IsNumeric([Zip]), Format([Zip], "00000"), Right("00" & [Zip], 10))
在查询中,(在GUI中)应该是:

作为SQL,它将如下所示:

Select 
    *,
    IIf(IsNumeric([Zip]),Format([Zip],"00000"),Right("00" & [Zip],10)) As TrueZip
From
    YourTable

更新表集[zip]=right(“00000'&[zip],5)其中int([zip])我想您需要Val([zip])而不是int([zip])这是在查询中还是在公式中?我在查询中尝试过,但无法使其工作,但我对access非常生疏请参见扩展答案。
Select 
    *,
    IIf(IsNumeric([Zip]),Format([Zip],"00000"),Right("00" & [Zip],10)) As TrueZip
From
    YourTable