Не создавайте новый запрос для каждой итерации цикла.Просто используйте один запрос и используйте параметры для вставки разных данных.
Реальная проблема, как указал Витя, в том, что вы закрываете dbs
на первой итерации.Я это тоже исправил.Но я просто не мог не оптимизировать этот код ...
Dim sql, sql2 As String
Dim x, daty As Integer
Dim dbs As DAO.Database
Set dbs = CurrentDb
Dim qdf As DAO.QueryDef
Dim rs As DAO.Recordset
sql = "INSERT INTO tDzialaniaRejestracja (IdSzkolenia, TerminRozpoczecia) VALUES (@Param1, @Param2)"
Set qdf = dbs.CreateQueryDef("", sql)
For x = 0 To 3
qdf.Parameters("@Param1") = Me.IdSzkolenia
qdf.Parameters("@Param2") = Format((Me.DataRozpoczecia + x), "dd.mm.yyyy")
With dbs
qdf.Execute dbFailOnError
sql2 = "SELECT @@IDENTITY"
Set rs = .OpenRecordset(sql2, dbOpenDynaset)
lastID = rs.Fields(0)
rs.Close
End With
Me.IdDzialania = lastID
Me.ProwadzacyFirmaZewn.Value = 23
Set rs = Nothing
Next x
'Not necessary, no benefit whatsoever in the following code, but it goes here if you want it
dbs.Close
Set dbs = Nothing
Set qdf = Nothing
У этого есть много дополнительных преимуществ, таких как разрешение Access скомпилировать запрос только один раз, упрощение кода, избежание возможного внедрения SQL и т. Д.