У меня есть база данных Access с 5 таблицами:
Report_Start содержит PK для [Report_ID]
CommSummary содержит FK для [Report_ID]
MRPCSummary содержит FK для [Report_ID]
SQESummary содержит FK для [Report_ID]
MEPSummary содержит FK для [Report_ID]
Report_ID связывает таблицы 2-4 с таблицей 1.
Пользователь вводит новую информацию отчета в форму пользователя (Дата отчета, Продавец, покупатель, планировщик и т. Д.), Которая хранится в таблице Report_Start. В разное время разные пользователи используют разные формы для заполнения таблиц 2-4, и все данные связаны с помощью [Report_ID], который представляет собой дату отчета и имя поставщика, объединенные вместе.
Я добавил кнопку в форму запуска, которая должна позволить пользователю дублировать существующие данные из всех 5 таблиц и назначить новый Report_ID и новую Report_Date. Это необходимо, потому что у пользователей есть только одно или два поля для обновления каждый раз, когда мы сообщаем о статусе поставщика. Они хотят скопировать старую запись в новую, а затем сделать одно или два обновления. (У меня уже есть формы и код, который позволяет обновлять существующие записи из каждой таблицы.)
Новый Report_ID и Report_Date будут сгенерированы пользователем, выбирающим из диалогового окна:
a) Существующая дата отчета (Me.Cbo_OldDate)
b) Поставщик (Me.Cbo_Vendor)
в) Новая дата отчета (Me.Txt_NewDate)
После нескольких дней исследований я нашел оператор SQL, который был близок к тому, чего я хотел достичь, но я получаю синтаксические ошибки. И я только пытаюсь выполнить дублирование в таблице № 1 выше, чтобы проверить мой код перед атакой на реляционные таблицы 2-5.
Пока мой код:
Форма запуска (пользователь нажимает кнопку COPY RECORD):
Private Sub Cmd_Copy_Click()
DoCmd.OpenForm "New_Data", acNormal, , , , acDialog
End Sub
Форма New_Data, где пользователь выбирает существующую информацию отчета и новую дату отчета:
Private Sub Cmd_OK_Click()
Dim OldID As String
Dim NewID As String
Dim NewDate As Date
Dim strSQL As String
OldID = Me.Cbo_OldDate & Me.Cbo_Vendor
NewID = Me.Txt_NewDate & Me.Cbo_Vendor
NewDate = Me.Txt_NewDate
Me.Txt_Old_ID = OldID
Me.Txt_New_ID = NewID
strSQL = "SELECT r.Report_ID, r.Report_Date, r.Vendor, r.Buyer, r.MRPC, r.SQE, r.MEP WHERE (((r.Report_ID) = ('" & OldID & "') INTO Report_Start as r WHERE (((r.Report_ID) = '" & NewID & "' and ((r.Report_Date) = (#" & NewDate & "#)));"
CurrentDb.Execute strSQL, dbFailOnError
End Sub
Я получаю ошибку:
Если кто-то может помочь мне определить, где находится ошибка, а затем дать мне несколько советов о том, как продублировать информацию в реляционных таблицах и назначить новый FK, равный новому PK, я был бы очень признателен! Я не хочу, чтобы каждый пользователь открывал свою индивидуальную форму, чтобы дублировать только свои данные.
Наконец, из-за взаимосвязей между таблицами, я хочу, чтобы одна кнопка дублировала все, а затем каждый пользователь мог просматривать свою информацию по дате и предоставлять свои обновления.