Dim db As DAO.Database
Dim qdf1 As DAO.QueryDef
Dim rst As DAO.Recordset
Dim strSQL1 As String
Dim strSQL2 As String
Dim lngStudentFeeInvoiceID As Long
' Define parameters for the query
Dim invoiceDate As Date
Dim InvoiceDueDate As Date
Dim SessionYearID As Long
Dim numRecords1 As Long
' Set up database object
20 Set db = CurrentDb()
' Get the ID of the last inserted record in the first destination table
30 lngID = db.OpenRecordset("SELECT @@Identity")(0)
'always insert first day of month
40 InvoiceDueDate = DateSerial(Year([Forms]![StudentFeeBatchF]![txtInvoiceDueDate]), Month([Forms]![StudentFeeBatchF]![txtInvoiceDueDate]), 1)
' Set invoice date and session year ID
50 invoiceDate = [Forms]![StudentFeeBatchF]![txtInvoiceDate]
60 SessionYearID = [Forms]![StudentFeeBatchF]![SessionYearID]
' Define SQL for the first query
70 strSQL1 = "PARAMETERS [Forms]![StudentFeeBatchF]![txtInvoiceDate] DateTime, [Forms]![StudentFeeBatchF]![txtInvoiceDueDate] DateTime, [Forms]![StudentFeeBatchF]![SessionYearID] Long;" & _
"INSERT INTO StudentFeeInvoiceJT (StudentID, StudentClassID, InvoiceDate, InvoiceDueDate)" & _
"SELECT StudentClassJT.StudentID, StudentClassJT.StudentClassID, [Forms]![StudentFeeBatchF]![txtInvoiceDate], [Forms]![StudentFeeBatchF]![txtInvoiceDueDate]" & _
"FROM (((SessionYearT INNER JOIN SessionYearTypeJT ON SessionYearT.SessionYearID = SessionYearTypeJT.SessionYearID) " & _
"INNER JOIN (StudentT INNER JOIN (SessionGradeJT INNER JOIN (StudentClassJT INNER JOIN StudentFeesettingwithDiscount ON StudentClassJT.StudentClassID = StudentFeesettingwithDiscount.StudentClassID) ON SessionGradeJT.SessionGradeID = StudentClassJT.SessionGradeID) ON StudentT.StudentID = StudentClassJT.StudentID) " & _
"ON SessionYearTypeJT.SessionYearTypeID = SessionGradeJT.SessionYearTypeID) " & _
"LEFT JOIN (SELECT * FROM StudentFeeInvoiceJT WHERE Format(InvoiceDueDate,'yyyy-mm') = Format([Forms]![StudentFeeBatchF]![txtInvoiceDueDate],'yyyy-mm')) AS StudentFeeInvoiceFiltered ON (StudentClassJT.StudentClassID = StudentFeeInvoiceFiltered.StudentClassID) AND (StudentClassJT.StudentID = StudentFeeInvoiceFiltered.StudentID)) " & _
"WHERE (((SessionYearT.SessionYearID)= [Forms]![StudentFeeBatchF]![SessionYearID]) AND ((SessionYearTypeJT.Status)=1) AND ((StudentFeesettingwithDiscount.FrequencyID)=1 OR (StudentFeesettingwithDiscount.FrequencyID)=3) AND ((StudentT.Status)=1) AND ((StudentFeeInvoiceFiltered.StudentID) Is Null) AND ((StudentFeeInvoiceFiltered.StudentClassID) Is Null));"
' Create and execute the first query
80 Set qdf1 = db.CreateQueryDef("", strSQL1)
90 qdf1.Parameters("[Forms]![StudentFeeBatchF]![txtInvoiceDueDate]") = InvoiceDueDate
100 qdf1.Parameters("[Forms]![StudentFeeBatchF]![txtInvoiceDate]") = invoiceDate
110 qdf1.Parameters("[Forms]![StudentFeeBatchF]![SessionYearID]") = SessionYearID
120 qdf1.Execute dbFailOnError
130 numRecords1 = qdf1.RecordsAffected
' Check if any records were inserted into StudentFeeInvoiceJT table
140 If numRecords1 = 0 Then
150 MsgBox "No records inserted into StudentFeeInvoiceJT table"
160 Else
' Show number of records inserted and success message
170 MsgBox numRecords1 & " records inserted into StudentFeeInvoiceJT table."
180 MsgBox "First query executed successfully."
190 End If
this is my code which inserts into studentFeeInvoiceJT