请帮助我使这个Access 2007友好

时间:2012-01-13 21:52:06

标签: sql ms-access join ms-access-2007 sql-update

我问过一个朋友,因为我多年没有编程,所以我在访问数据库中遇到了一个问题,这是他回复的内容:

  

让我举一个例子,以确保我正在看这个   对。你从ID为1的记录开始。这会得到更新,而且   系统生成ID为2的新记录,并带来旧ID   在RenewalOf字段中为1,以此类推,以便将来续订。如果说   是正确的,每个记录只允许引用一次(所以   RenewalOf中只有一条ID为1的记录   字段),然后以下应该工作:

这段代码不起作用:

UPDATE
tblSold
SET
RenewedToID = RenewalRecord.SoldID
FROM
tblSold
INNER JOIN tblSold RenewalRecord ON
tblSold.SoldID = RenewalRecord.RenewalOf
  

不确定SQL查询中允许哪些内容,但这是基本的   应该没事。您还可以添加一些标准以仅更新   RenewedToID字段为空的记录,或仅记录一个记录的记录   如果您在添加新记录后正在处理此问题。您可以   通过运行以下命令检查以确保它能够正常工作:

但是这样做了:

SELECT
tblSold.SoldID
,RenewalRecord.SoldID
FROM
tblSold
INNER JOIN tblSold RenewalRecord ON
tblSold.SoldID = RenewalRecord.RenewalOf
  

这将列出原始ID以及续订ID,即一个   这将被放入原始记录中。让我知道这是否有效或   如果你有任何问题。

你能帮助我在Access 2007中制作他的第一个代码片段吗?

1 个答案:

答案 0 :(得分:1)

您可能需要稍微重新安排Access的更新:

UPDATE
tblSold
INNER JOIN tblSold RenewalRecord ON
tblSold.SoldID = RenewalRecord.RenewalOf
SET
tblSold.RenewedToID = RenewalRecord.SoldID

其他一些SO答案显示了这种语法:
SQL Update Statement in MS Access
How to create a correlated update subquery in MS-Access?