Вставка нескольких записей с несколькими таблицами, имеющими один и тот же идентификатор, в таблицу с помощью DAO in access
(1) у меня есть 4 таблицы (A-Sched,B-Trans,(C-ItemRecep и D-ItemPharm)) с одной таблицей поиска под названием D-TransDetail. Ниже приведена диаграмма отношений и набор записей DAO для хранения записей.
[Изображение 1][^]
Эта модель работает идеально, когда это только " ItemRecep "(таблица C), но подформы не сообщали правильно о родительской форме в тот момент, когда я ввожу новую"ItemPharm" (таблица D).
Я ожидал, что форма отобразит новую подформу transaction Itempharm. (с идентификатором diff, т. е. 4), содержащим его собственные подпункты с промежуточным итогом цены. И общая сумма из приведенного выше рисунка складывается из 2 подытогов.
P. S-пожалуйста, дайте мне знать, если мое объяснение не будет понято, я готов предоставить более подробную информацию
Что я уже пробовал:
[Изображение 1][^]
[Изображение 2][^]
[Изображение 3][^]
Public Sub RecpSchedule1() 'Consultation ONLY Dim db As DAO.Database Dim rs As DAO.Recordset, rt As DAO.Recordset, rd As DAO.Recordset, ri As DAO.Recordset Dim lngTransId As Long Dim lngItemRecepId As Long Set db = CurrentDb Set rs = db.OpenRecordset("Sched") Set rt = db.OpenRecordset("Trans") Set ri = db.OpenRecordset("ItemRecep") Set rd = db.OpenRecordset("TransDetail") lngItemRecepId = Nz(DMax("ID", "ItemRecep"), 0) + 1 'Next ItemRecep ID lngTransId = Nz(DMax("ID", "Trans"), 0) + 1 'Next Trans ID With rs .AddNew !SDate = Me.txtSchedDate !PatientName = Me.cmbPatientName !RegNo = Me.txtRegNo !DateOfBirth = Me.txtAge !Gender = Me.txtGender !PatientClass = Me.PatientClass !RecepSchedule = True .Update End With With rt .AddNew !ID = lngTransId !SchedRegNo = Me.txtRegNo ![Total_RecepFee] = Me.txtConsFee + ![Total_RecepFee] .Update End With With ri .AddNew !ID = lngItemRecepId !ItemName = "ConsFee" !Price = Me.txtConsFee.Value !Dept = "Reception" .Update End With With rd .AddNew !TransID = lngTransId !TransID = DMax("ID", "Trans") !ItemRecepID = DMax("ID", "ItemRecep") .Update End With rs.Close rt.Close ri.Close rd.Close Set rs = Nothing Set rt = Nothing Set rd = Nothing Set ri = Nothing Set db = Nothing End Sub Public Sub RecpSchedule2() Dim db As DAO.Database Dim rs As DAO.Recordset, rt As DAO.Recordset, rd As DAO.Recordset, ri As DAO.Recordset Dim lngTransId As Long Dim lngItemRecepId As Long Set db = CurrentDb Set rt = db.OpenRecordset("Trans") Set ri = db.OpenRecordset("ItemRecep") Set rd = db.OpenRecordset("TransDetail") lngItemRecepId = Nz(DMax("ID", "ItemRecep"), 0) + 1 'Next ItemRecep ID lngTransId = Nz(DMax("ID", "Trans"), 0) + 1 'Next Trans ID With ri .AddNew !ID = lngItemRecepId !ItemName = "IOPFee" !Price = Me.txtIOPFee.Value !Dept = "Reception" .Update End With With rd .AddNew !TransID = lngTransId !TransID = DMax("ID", "Trans") !ItemRecepID = DMax("ID", "ItemRecep") .Update End With rt.Close ri.Close rd.Close Set rt = Nothing Set rd = Nothing Set ri = Nothing Set db = Nothing End Sub
(2) я создал 2 запроса ("TransQry" и "SubTransQry") из приведенных выше таблиц.
(3)Наконец, я создал родительскую форму (frmAccount), содержащую дочернее "преобразование", которое также является родителем собственного дочернего "Субтрансформа".