MS Access忽略主键验证中的尾随空格

时间:2018-02-04 14:55:58

标签: ms-access primary-key space trim

我有一个带有TEXT主键的Access表。如果我使用INSERT语句添加主键值为

的行

'PART'

然后尝试INSERT主键为

的另一行

'PART '

(注意尾随空格)然后我得到

  

Microsoft Access ...由于密钥违规而未向表中添加1条记录

如果字段上没有主键,则一切正常,第二行确实添加了字段值中的尾随空格。但是,如果在字段上设置了主键,则会导致密钥冲突错误。

如何避免此问题?

2 个答案:

答案 0 :(得分:1)

时髦的行为。在将数据输入文本框或数据表字段时,Access会删除尾随空格是正常的。但'PART''PART '无法在主键列中共存是很奇怪的。

@Gord Thompson:您可以先插入' PART',它可以正常工作并保存尾随空格。但是你不能插入' PART'。

如果这是您的数据中唯一出现的空格,您可以用Chr(160)替换空格,它也看起来像一个空格,并且不会违反PK。

CurrentDb.Execute "INSERT INTO tblTextPK (TextPK) VALUES('part')", dbFailOnError
CurrentDb.Execute "INSERT INTO tblTextPK (TextPK) VALUES('part" & Chr(160) & "')", dbFailOnError

Table with 2xpart

在导入代码中,您将使用Replace([Fieldname], " ", Chr(160))

(请注意,要键入Chr(160),请使用Alt + 255)

答案 1 :(得分:0)

您可以添加其他字段DatebaseID,并在导入期间使用A,B,C等填充此字段。 然后创建此字段的复合主键和您当前的ID。

这也可以让你摆脱尾随空间,这通常是个坏主意。