Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Закрыть форму и спросить юзера об изменениях. если они были
 
 автор: Аленка   (15.10.2008 в 14:59)   личное сообщение
 
 

Как при закрытии формы в случае, если записях были изменения, спросить юзера о необходимости сохранения изменений? А если записи изменены не были, то сразу закрыть форму.

  Ответить  
 
 автор: Lukas   (15.10.2008 в 15:09)   личное сообщение
 
 

Dirty Property
See AlsoApplies ToExampleSpecificsYou can use the Dirty property to determine whether the current record has been modified since it was last saved. For example, you may want to ask the user whether changes to a record were intended and, if not, allow the user to move to the next record without saving the changes. Read/write Boolean.

expression.Dirty
expression Required. An expression that returns one of the objects in the Applies To list.

Remarks
The Dirty property uses the following settings.

Setting Visual Basic Description
True True The current record has been changed.
False False The current record has not been changed.

This property is available in Form view and Datasheet view.

This property set or read using a macro or Visual Basic.

When a record is saved, Microsoft Access sets the Dirty property to False. When a user makes changes to a record, the property is set to True.

Example
The following example enables the btnUndo button when data is changed. The UndoEdits( ) subroutine is called from the AfterUpdate event of text box controls. Clicking the enabled btnUndo button restores the original value of the control by using the OldValue property.

Sub UndoEdits()
If Me.Dirty Then
Me!btnUndo.Enabled = True ' Enable button.
Else
Me!btnUndo.Enabled = False ' Disable button.
End If
End Sub

Sub btnUndo_Click()
Dim ctlC As Control
' For each control.
For Each ctlC in Me.Controls
If ctlC.ControlType = acTextBox Then
' Restore Old Value.
ctlC.Value = ctlC.OldValue
End If
Next ctlC
End Sub

  Ответить  
 
 автор: Аленка   (15.10.2008 в 15:20)   личное сообщение
 
 

Lukas, это уже умничание. Я сюда никогда не обращаюсь, не посмотрев в справку, не поискав на форуме похожие темы и если у меня все получается. Не обижайся, но я эту справку читала. И не только эту. Все, что касается Dirty, я прочитала. Только вот не работает код.

Private Sub Form_Unload(Cancel As Integer)
If Me.Dirty Then
DoCmd.Close acForm, Me.Name, acSavePrompt
Else
DoCmd.Close acForm, Me.Name, acSaveNo
End If
End Sub

  Ответить  
 
 автор: V.Kim   (15.10.2008 в 15:36)   личное сообщение
 
 

Форма какая?
с источником строк или без?
простая или ленточная(табличная)?


Кстати при переходе от записи к записи независимо от типа формы (если она имеет источник) запись сохраняется авто(если не было нарушения условий на значения и тп)....

Посему если Вы сделали такой переход то Me.Dirty уже ложь и проверка бесполезна
Тогда её надо делать на событии Me_befourUpdate()


private sub Me_befourUpdate()
if msgbox("Save",vbYesNo)=vbyes then
' сохраняем
else
'не сохраняем
end if
end sub

  Ответить  
 
 автор: Lukas   (15.10.2008 в 16:10)   личное сообщение
 
 

Добавлю:
1. Если происходит событие Form_Unload(Cancel As Integer),
значит команда закрыть форму уже поступила, и DoCmd.Close acForm, Me.Name лишнее.
2. Аргумент "сохранение" метода Close (константы acSaveYes, acSavePrompt и acSaveNo ) имеет отношение к сохранению макета объекта, а не к данным.

  Ответить  
 
 автор: FORMAT   (15.10.2008 в 17:11)   личное сообщение
 
 

Правильнее будет сохранять изменения при нажатии на кнопку сохранить. При принудительном закрытии - внесенные изменения не сохраняются. Для избежания принудительного закрытия можно заблокировать кнопку [ х ] вверху.

  Ответить  
 
 автор: Аленка   (16.10.2008 в 08:51)   личное сообщение
 
 

Все ребят, разобралась.
Я говорю, как напишу на хайпрог, сразу лучше голова работает. Спасибо за советы. Они мне помогли.

  Ответить  
 
 автор: Гамлет   (16.10.2008 в 19:51)   личное сообщение
 
 

Может покажешь, что получилось. Врпрос любпытный

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList