LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Отмена со...
 Тема: Отмена сохранения записи
 
 15.06.2007 21:09:45
All
4316 сообщения
1-ый


Тема: Отмена сохранения записи
Как в форме предусмотреть сохранение данных записи только по нажатию определенной (созданной кнопки)? Т.е. отменить действие Shift+F2. Только не отлавливанием нажатия клавиш. Если отмена события сохранения всей записи? Заранее спасибо.


P.S. События в формах
Автор: Сергей от 0:00:00 Источник ...
 15.06.2007 21:09:45
All
4316 сообщения
1-ый


RE: Отмена сохранения записи
Разобрался сам. Вопрос был бестолковый. Сначала надо книжки читать...


P.S. События в формах
Автор: Сергей от 0:00:00 Источник ...
 15.06.2007 21:09:45
All
4316 сообщения
1-ый


RE: Отмена сохранения записи
Вопрос несколько раз повторялся, добавим информацию для других. Флаг Me.Dirty имеет значение true, если запись редактировалась. Для отмены используют события формы, например, до обновления, где флаг отмены делают истинным (Cancel=True)


P.S. События в формах
Автор: Admin от 0:00:00 Источник ...
 15.06.2007 21:09:45
All
4316 сообщения
1-ый


RE: Отмена сохранения записи
Более конкретный вопрос (не нашел в книжках ответа):
Вопрос: -> организавать в Access интерфейс формы на подобие документа 1С, чтобы можно было сохранять либо не сохранять все записи.
Описание условий: -> имеется форма,состоящая из 2-х: 1 шапка (основная форма), 2 табличная часть (подчиненная форма). Связь между основной и подчиненной формой установлена вручную (без использования LinkMasterFields). Источниками записей для обеих форм служат инструкции SQL.
Проблема (чего хочу сделать): -> (1) Хочется, чтобы при открытии формы блокировался доступ только к отобранным записям (а не целиком ко всей таблице -> т.к. в стандартных свойствах формы только либо редактируемая запись, либо все записи таблицы/таблиц исходников) как для формы шапки, так и для формы табличной части. (2) Хочется, чтобы была возможность отмены всех внесенных в форму изменений (табличной части, то бишь подчиненнной формы). Подскажите как это можно реализовать (очень нужно!!!).
Что думаю сам: -> В таблице из которой беруться данные для основной формы (шапки) завести два поля (Имя), (Компьютер). И перед открытием формы проверять isnull значений полей (Имя), (Компьютер) в полученном наборе записей. Если они не пусты говорить пользователю, что текущая запись редактируется тем-то товарищем, на том-то компе, ежели пусто, то в эти поля писать текущего пользователя и его комп -> таким образом блокируетсся доступ к основной форме и естественно нет возможности добраться к записям подчиненной формы (естественно без прямого доступа к таблицам).
Для отмены всех действий в подчиненной форме применять транзакции - ГДЕ О ТРАНЗАКЦИЯХ МОЖНО ПОЧИТАТЬ? (не нашел книжку Access разработка баз данных для корпоративных приложений - тираж сошел еще как 2 года назад - что весьма грусно).
ВООБЩЕМ ПОМОГИТЕ РЕАЛИЗОВАТЬ ПРОСТУЮ ВЕЩЬ ИСПОЛЬЗОВАТЬ ИНТЕРФЕЙС ДОКУМЕНТА. ОЧЕНЬ БУДУ ПРИЗНАТЕЛЕН ЗА ВЫЛОЖЕННЫЙ ПРИМЕР (ОСОБЕННО С ОПИСАНИЕМ РАБОТЫ ТРАНЗАКЦИЙ). Заранее спасибо!


P.S. События в формах
Автор: Сергей от 0:00:00 Источник ...
 15.06.2007 21:09:45
All
4316 сообщения
1-ый


RE: Отмена сохранения записи
Главная и подчиненная форма не должны быть связаными (без использования LinkMasterFields) это 1-е обязательное условие. Подчиненная форма заполняется на основании запроса. Запрос должен быть сохранен. В слолбце запроса в котором указывается значение главной формы указать [Forms]![Имя формы]![Имя столбца] - 2-е условие. Обязательно создать новое рабочее пространство WKS - 3-е условие.
В умных книжках советуют так.

Public WKS as DAO.WorkSpace
Public TNS as Boolean

Private Sub Data ()
Dim DB as DAO.DataBase
Dim QDF as DAO.QuueryDef
Dim PRM as DAO.Parametr

If TNS Then
WKS.RollBack
end if

WKS.BiganTrans

Set WKS=CreateWorkSpace(CurrentDB.Name)
Set DB=WKS.OpenDataBase("Admin")
Set QDF=DB.OpenQueryDef("ИмяЗапроса")

For Each PRM In QDF.Parametrs
PRM.Value=PRM.Name
Next

Set RS=QDF.OpenRecordset
Set ПодчиненнаяФорма.RecordSet=RS

End Sub

Процедуру Data() необходимо расположить в процедуре обработки события формы Current

Sub Frm_Current()
Data()
End sub

Можна добавить кнопку в форму или обрабатывать события для сохранения изменений в форме.
Кнопка:
Sub btnSave_Click()
Din Answver as Integer

Answer=MsgBox("Сохранить",vbOkCancel)
If Answer=vbOk Then
WKS.ComitTrans
else
WKS.RollBack
end if
End sub
Это относительно подчиненной формы.
С главной сложнее. Проблема в том, что при перемещении фокуса с главной в подчиненную форму Access сохраняет данные. Поэтому при открытии формы занчения главной формы нужно где-то хранить. Я же помучился и решил проблему следующим образом. Добавил в форму кнопку "Отмена изменений". Кнопка становится активной в 2-х случаях - пользователь внес изменения в главную форму, пользователь редактирует подчиненную форму. (Например. Пользователь закончил вносить изменения в главную форму и переместился в подчиненную (кнопка неактивна), я предпологаю что все верно и данные в главной форме нужно сохранить. Т.к. данных в главной форме не так и много то это не смертельно)

В написанном идея правильная, за ошибки не ругайте т.к. пишу в состоянии отличном от рабочего.


P.S. События в формах
Автор: Luckiy от 0:00:00 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Отмена со...
ПоискПоиск  Список форумовСписок форумов  
right