Как удалить запись и назначить существующую запись на ее место - PullRequest
1 голос
/ 07 сентября 2010

Мне интересно, может ли кто-нибудь помочь мне здесь.

Возможно ли при удалении записи назначить все экземпляры удаленной записи новой записи?

Например:

Для каждого проекта в базе данных планирования времени я могу назначить работника руководителем группы для каждого проекта.Если для руководителя группы была дублирующаяся запись, мне нужно было бы удалить один из экземпляров этих данных.Если вы это сделаете, то у вас останутся пустые значения для записей, назначенных этому «руководителю группы».Это было бы проблемой.

Я ценю, что вы захотите пресечь это, так сказать, в зародыше, и не допустить дублирования записей.Однако, если вам нужно удалить запись, можно ли назначить отдельную запись вместо нее?

Надеюсь, что это имеет смысл, если бы вы могли мне помочь, это было бы очень признательно.

Приветствия

Ноэль

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Каскадное обновление возможно, но, вероятно, излишне для чего-то, что произойдет только изредка и не должно происходить вообще.Я предлагаю вам выполнить запрос на обновление соответствующих записей перед удалением руководителя группы:

Update Projects Set TeamLeaderID=123 
Where TeamLeaderID=456
0 голосов
/ 07 сентября 2010

Да, это возможно.Необходимо знать, где находится ссылка на вашего работника , найти все такие местоположения и заменить ссылку новой ссылкой на другого работника.После удаления всех ссылок на старый работник можно удалить работника.

Option Compare Database

Private Sub test()
Dim db As Database
Dim rs As Recordset
Dim sql As String


Set db = CurrentDb
sql = "select worker_id from worker_ref_table"
Set rs = db.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges)

While Not rs.EOF
    rs.Edit
    rs!worker_id = "new value"
    rs.Update
    rs.MoveNext
Wend

rs.Close

sql = "select worker_id from worker_table"
Set rs = db.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges)

While Not rs.EOF
    rs.delete
Wend

rs.Close

End Sub

См. Также Программирование базы данных VB для получения дополнительной информации о подключении и работе.в базе данных.Обратите внимание, что VB и VBA не совпадают.Вы должны иметь возможность использовать приведенный выше код в Access VBA для выполнения этой задачи.

...