我有一个带有TEXT主键的Access表。如果我使用INSERT语句添加主键值为
的行 'PART'
然后尝试INSERT主键为
的另一行 'PART '
(注意尾随空格)然后我得到
Microsoft Access ...由于密钥违规而未向表中添加1条记录
如果字段上没有主键,则一切正常,第二行确实添加了字段值中的尾随空格。但是,如果在字段上设置了主键,则会导致密钥冲突错误。
如何避免此问题?
答案 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
在导入代码中,您将使用Replace([Fieldname], " ", Chr(160))
。
(请注意,要键入Chr(160)
,请使用Alt + 255)
答案 1 :(得分:0)
您可以添加其他字段DatebaseID,并在导入期间使用A,B,C等填充此字段。 然后创建此字段的复合主键和您当前的ID。
这也可以让你摆脱尾随空间,这通常是个坏主意。