gpt4 book ai didi

ms-access - 如何在 Access DB 中重命名主键值

转载 作者:行者123 更新时间:2023-12-04 05:57:03 27 4
gpt4 key购买 nike

我有一个 MS Access DB,在父表和 82 个其他表上有一个主键。
新数据将带有主键的新名称

Before      New
RS182 X182RS
RS188 X188RS
RD301 X301RD

有没有办法在数据库中的所有表上批量重命名主键值,因为我想将所有以前的历史数据关联到新的名称值。

最佳答案

根据该示例,新旧主键值之间似乎存在一致的模式。

? "X" & Right("RS182", 3) & Left("RS182", 2)
X182RS

如果是这样,则使用一系列 UPDATE 语句将旧值替换为新值。但首先要备份数据库以妥善保管。

例如,如果 YourTable 的主键字段名为 ID:
UPDATE YourTable
Set ID = "X" & Right(ID, 3) & Left(ID, 2);

如果 YourTable 包含在任何定义的关系中,您首先需要删除这些关系(或至少取消选中它们的“强制参照完整性”选项),然后在更新主键值后恢复这些关系。

此外,从 ID 中删除主键属性应该允许更新更快地完成。之后重新分配主键。

由于您有 82 个表需要此转换,因此您可以创建一个 VBA 过程来执行此操作。
Public Sub ConvertPKeyValues(ByVal pTable As String, _
ByVal pField As String)
Dim db As DAO.Database
Dim strSql As String
strSql = "UPDATE [" & pTable & "]" & vbCrLf & _
"Set [" & pField & "] = 'X' & " & _
"Right([" & pField & "], 3) & " & _
"Left([" & pField & "], 2);"
Set db = CurrentDb
db.Execute strSql, dbFailOnError
Set db = Nothing
End Sub

使用每个表名和该表中相关字段的名称调用该过程。您还应该为 dbFailOnError 暴露的任何问题添加一个错误处理程序。

关于ms-access - 如何在 Access DB 中重命名主键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9397620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com