Я пытаюсь создать или сохранить запись, и если связанная запись существует во вторичной таблице, она только сохраняет / обновляет запись в форме. Операторы INSERT работают просто отлично, но я сосу на ссылки на формы / подчиненные формы и чувствую, что это как-то связано с ними.
Private Sub cmdSave_Click()
On Error GoTo cmdSave_Click_Err
DoCmd.RunCommand acCmdSaveRecord
If DCount("*", "[tblRegSR]", "[WorkOrderID] = " & [Forms]![frmWelcome]![sfrmWorkOrders].Form![txtID]) > 0 Then
DoCmd.GoToRecord , "", acNewRec
Me.lstWorkOrders.Requery
Me.lstWorkOrders.Value = ""
Me.txtComments.Value = ""
MsgBox "Save Completed"
Else
DoCmd.SetWarnings True
DoCmd.OpenQuery "qryInsertSR"
RunSQL "INSERT INTO tblFirstSR (ServiceRecordID) SELECT Max(ID) FROM tblRegSR"
RunSQL "INSERT INTO tblSecondSR (ServiceRecordID) SELECT Max(ID) FROM tblRegSR"
RunSQL "INSERT INTO tblInflatorSR (ServiceRecordID) SELECT Max(ID) FROM tblRegSR"
RunSQL "INSERT INTO tblHPSPGSR (ServiceRecordID) SELECT Max(ID) FROM tblRegSR"
RunSQL "INSERT INTO tblOctoSR (ServiceRecordID) SELECT Max(ID) FROM tblRegSR"
RunSQL "INSERT INTO tblComputerSR (ServiceRecordID) SELECT Max(ID) FROM tblRegSR"
DoCmd.GoToRecord , "", acNewRec
Me.lstWorkOrders.Requery
Me.lstWorkOrders.Value = ""
Me.txtComments.Value = ""
MsgBox "Sub Tables Injected"
End If
cmdSave_Click_Exit:
Exit Sub
cmdSave_Click_Err:
MsgBox Error$
Resume cmdSave_Click_Exit
End Sub
Я ожидаю, что процесс проверит, существует ли запись в tblRegSR
, имеющая отношение к tblWorkOrders
, и запись соответствует соответствующему связанному полю ([WorkOrderID]
в tblRegSR
соответствует [ID]
в tblWorkOrders
). Если соответствующая запись не существует в tblRegSR
, создайте ее вместе с дочерними таблицами (tblFirstSR
и т. Д.).
Кроме того, он просто не обновляет / не сохраняет исходную запись в DoCmd.RunCommand acCmdSaveRecord
Так что я не совсем уверен, где это вызывает проблемы. Это не ВСТАВКА в tblWorkOrders
или tblRegSR
, но это ВСТАВКА во все другие таблицы. Я уверен, что как только я уясню две другие INSERT, выражение IF
будет работать нормально ... Я надеюсь ...
РЕДАКТИРОВАТЬ НИЖЕ:
Вот пара скриншотов типов данных:
Тип данных tblWorkOrders
tblRegSR Тип данных
Тип данных дочерней таблицы
Изображение моей таблицы Отношения
Что касается счетчика, я предполагаю, что он работает, потому что он всегда завершает оператор ELSE
, где он INSERT
строк в дочерних таблицах (tblFirstSR
и т. Д.). Однако он НЕ ВСТАВЛЯЕТСЯ в tblRegSR
и не сохраняет запись в форме (которая находится в tblWorkOrders
). Надеюсь, это ответит на ваши вопросы @Nathan_Sav - спасибо!
РЕДАКТИРОВАТЬ ВТОРОЕ:
Вот изображение нарушения правила валидации:
Нарушение правил валидации
ИЗМЕНИТЬ ТРИ:
Я решил просто поделиться всей базой данных. Вот ссылка. База данных заказов на работу
РЕДАКТИРОВАТЬ ЧЕТЫРЕ (10 января 19):
Вот новый код, который я использую вместе с кодом, который я использую в своем запросе на добавление qryInsertSR
В qryInsertSR
это SQL, который я использую:
INSERT INTO tblRegSR (WorkOrderID, CustomerID)
VALUES (Forms![frmWelcome]![sfrmWorkOrders].Form![txtID],
Forms![frmWelcome]![sfrmWorkOrders].Form![Customer])
Кроме того, я обновил фрагмент кода выше, чтобы отразить любые сделанные мной изменения.
ПРАВИТЬ ПЯТЬ (11 января 19):
Вот изображение моего браузера объектов, показывающее все в базе данных. Включая sfrmWorkOrders.
ЗДЕСЬ