Есть форма с подчиненной формой.
Каким образом скопировать текущую запись в новую изменив при этом некоторые поля на новые. Например, копируем заказ: клиент и товар копируются, номер заказа - максимальный +1, дата - текущая.
Спасибо.
Лучший вариант, это присвоить значения по умолчанию после редактирования записи формы. В этом случае, при создании новой записи будут уже введены старые значения.
Private Sub Form_AfterUpdate() Me.поле1.DefaultValue = Me.поле1 ' Целое число Me.поле2.DefaultValue = "'" & Me.поле2 & "'" ' Текст Me.поле3.DefaultValue = "#" & Format(Me.поле3, "dd\/mm\/yyyy") & "#" ' Дата End Sub
Иначе нужен запрос на добавление. Применяется с помощью команды
DoCmd.RunSQL "Insert ..."
Номер заказа тоже определяется примерно таким же образом, через dmax
Private Sub Form_Current() If Me.NewRecord Then Me.Номер.DefaultValue = 1 + Nz(DMax("Номер", "Заказы"), 0) End If End Sub
Все замечательно работает, но в подчиненной форме копирует только первую строку (она у меня в табличной форме, извините, забыл сказать).
Как быть?
Курсор надо установить на нужную запись. Например, так: DoCmd.GoToRecord , , acGoTo, 5. Если нужно скопировать несколько записей, то надо открывать recordset формы.