Здравствуйте. в БД на аксесс есть таблица "Отчеты" сполями: НомерОтчета - счетчик, ключевое, Сотрудник - целое число, Дата - Дата, краткий формат; ЧасовВОтчете - одинарное с плавающей точкой. У отчета есть подчиненные записи - трудозатраты, которые записываются в таблице Трудозатрата с полями: код - ключевое, счетчик;Назначение - целое число;ВремяНаДокумент - одинарное; Дата - дата, краткий формат. Таблицы
ЕжедОтчет и
ЕжТрудозатрата не связаны между собой, но подчиненная форма связана с главной: Основноеполе -НомерОтчета(свойства подчиненной формы, Подчиненные поля: отчет - поле в подчиненной форме). Сделал форму для записи отчета в таблицы, но необходимо предусмотреть, чтоб пользователь мог закрыть форму заполнения отчета без сохранения записей. Я это действие пытался реализовать нажатием на кнопку формы:
On Error GoTo ErrHandle
If MsgBox("Вы хотите выйти без сохранения отчета?", vbYesNo) = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunSQL ("Delete * From Ежедотчет Where НомерОтчета=" & Me.НомерОтчета)
DoCmd.SetWarnings True
With Me.ЕжТрудозатратаОтчета.Form.RecordsetClone
.MoveFirst
Do Until .EOF
If Not IsNull(![Назначение]) Then
.Delete
End If
.MoveNext
Loop
End With
ErrHandle: DoCmd.Close acForm, "EzhetOtchet"
End If
т.е. нужно, чтобы при выходе без сохранения ни отчет, ни его подчиненные записи не сохранялись. А происходит следующее: отчет сохраняется - добавляется запись в таблицу
ЕжедОтчет все равно. Получается, что команда
DoCmd.RunSQL ("Delete * From Ежедотчет Where НомерОтчета=" & Me.НомерОтчета)
не срабатывает?
пробовал проверять с конкретным номером:
DoCmd.RunSQL ("Delete * From Ежедотчет Where НомерОтчета=7845"
.Так не работает тоже.В отладчике проверял строку
DoCmd.RunSQL ("Delete * From Ежедотчет Where НомерОтчета=" & Me.НомерОтчета)
-
НомерОтчета присваивается, например Номеротчета=7850...
http://www.sql.ru/forum/1091006/formirovanie-zapisi-v-forme-i-vyhod-iz-formy-bez-sohraneniya-v-tablice-bd