Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Проверка сделанных изменений  [new]
KV
Member

Откуда:
Сообщений: 319
При закрытии формы у меня выскакивает MsgBox с предложением сохранить изменеия. А если я не делал изменений, то не хочу вызывать MsgBox, а сразу закрыть форму. Как прорверить были ли внесены изменения?
21 янв 04, 11:51    [500491]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
Ander Borisov
Member

Откуда: Москва
Сообщений: 83
Введи переменую, которую меняй при внесении изменений ... А если не было изменений - она останется неизменной.
Ну и проверь ее при закрытии формы.
21 янв 04, 11:56    [500505]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
me.dirty
21 янв 04, 12:08    [500539]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
KV
Member

Откуда:
Сообщений: 319
2Владимир Саныч
спасибо помогло.
Еще один вопрос: как закрыть фрму без сохранения изменений?
21 янв 04, 12:19    [500573]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
AlexJuice
Member

Откуда: Не от мира сего
Сообщений: 1413
Docmd.Close acForm, Me.Name, acSaveNo
21 янв 04, 12:32    [500602]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
AlexJuice
Member

Откуда: Не от мира сего
Сообщений: 1413
Тьфу ты, это не оттуда.
Надо сделать Me.Undo
21 янв 04, 12:34    [500610]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
KV
Member

Откуда:
Сообщений: 319
У меня такая конструкция все же сохраняет изменения:

Private Sub cmdCloseComp_Click()
If Me.Dirty Then
If MsgBox("Сохранить изменения?", vbYesNo, "Промышленный вестник") = vbYes Then
DoCmd.Close acForm, Me.Name, acSaveYes
Else
DoCmd.Close acForm, Me.Name, acSaveNo
End If
Else
DoCmd.Close acForm, Me.Name, acSaveNo
End If
End Sub
21 янв 04, 12:49    [500645]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
См. сообщение AlexJuice от 12:34.
21 янв 04, 12:51    [500649]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
KV
Member

Откуда:
Сообщений: 319
А можно упростить эту конструкцию?

Private Sub cmdCloseComp_Click()
If Me.Dirty Then
If MsgBox("Сохранить изменения?", vbYesNo, "Промышленный вестник") = vbYes Then
DoCmd.Save acForm, Me.Name
DoCmd.Close acForm, Me.Name
Else
Me.Undo
DoCmd.Close acForm, Me.Name
End If
Else
Me.Undo
DoCmd.Close acForm, Me.Name
End If
End Sub
21 янв 04, 13:04    [500695]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
DoCmd.Save acForm, Me.Name - это не то! Это сохранение не данных, а дизайна формы.
21 янв 04, 13:06    [500698]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Private Sub cmdCloseComp_Click()
If Me.Dirty Then If MsgBox("Сохранить изменения?", vbYesNo, "Промышленный вестник") <> vbYes Then Me.Undo
DoCmd.Close acForm, Me.Name
End Sub
21 янв 04, 13:07    [500700]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
KV
Member

Откуда:
Сообщений: 319
2Владимир Саныч
А уменя сохраняло данные DoCmd.Save acForm
21 янв 04, 13:20    [500737]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Данные в Аксессе сами сохраняются, когда юзер покидает запись. Можно принудительно сделать Save Record программно. Но при обычном закрытии формы это не нужно.
21 янв 04, 13:23    [500744]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
KV
Member

Откуда:
Сообщений: 319
2Владимир Саныч
Спасибо я уже понял
21 янв 04, 13:35    [500768]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
KV
Member

Откуда:
Сообщений: 319
Создал с помощью матера:

Private Sub cmdSaveComp_Click()
On Error GoTo Err_cmdSaveComp_Click


DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Exit_cmdSaveComp_Click:
Exit Sub

Err_cmdSaveComp_Click:
MsgBox Err.Description
Resume Exit_cmdSaveComp_Click

End Sub

Все ли параметры нужны?
21 янв 04, 13:37    [500772]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Параметры нужны все, но я считаю, что всё сохранится и так.
21 янв 04, 13:53    [500808]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сделанных изменений  [new]
AlexJuice
Member

Откуда: Не от мира сего
Сообщений: 1413
ИМХО лучше так:
DoCmd.RunCommand acCmdSaveRecord

The RunCommand method replaces the DoMenuItem method of the DoCmd object.
(c) Help
21 янв 04, 14:25    [500904]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить