Пожалуйста, помогите мне сделать это Access 2007 дружественным - PullRequest
2 голосов
/ 14 января 2012

Я попросил друга помочь мне с проблемой, с которой я столкнулся в моей базе данных Access, поскольку я не программировал годами, и вот что он ответил:

Позвольте мне привести примерпросто чтобы убедиться, что я смотрю на это право.Вы начинаете с записи с идентификатором 1. Это обновляется, и система генерирует новую запись с идентификатором 2 и переносит старый идентификатор 1 в поле RenewalOf и т. Д. Для будущих обновлений.Если это правильно, и на каждую запись разрешается ссылаться только один раз (поэтому в поле RenewalOf всегда будет только одна запись с идентификатором 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 обновления, то есть тот, который будет помещен в исходную запись.Дайте мне знать, если это работает или у вас есть какие-либо проблемы с этим.

Можете ли вы помочь мне заставить его первый фрагмент кода работать в Access 2007?

1 Ответ

1 голос
/ 14 января 2012

Вам может потребоваться немного изменить порядок обновления для Access:

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

Некоторые другие ответы SO, показывающие этот тип синтаксиса:
Оператор обновления SQL в MS Access
Как создать коррелированный подзапрос обновления в MS-Access?

...