powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сохранение текущей записи на ленточной форме
26 сообщений из 26, показаны все 2 страниц
Сохранение текущей записи на ленточной форме
    #39931418
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется ленточная форма frm1,не подчиненная,ее рекордсоурс -запрос SELECT.
На этой frm1 в области примечания расположена кнопка ДОБАВИТЬ (butAdd) и кнопка СОХРАНИТЬ (butSave).
На ней же расположено поле combo1,combo2,combo3...
У поля como1 источник записей запрос SELECT,у como2 и como3, списки значений.
Для того,чтобы сохранить текущую запись я использую глобальную переменную GLOBVAR.
До нажатия кнопки butSave переменная GLOBVAR=0, после нажатии кнопки butSave переменная GLOBVAR=1,это для того,чтобы потом
выполнить код:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If (GLOBVAR = 0) Then
Me.Undo
End If
End Sub
Таким образом,при переходе на другую запись формы frm1 у меня сбрасываются несохраненные изменения старой записи.
Блин,но есть одно НО(в 2-х вариантах)....
1) Когда я добавляю новую запись кнопкой butAdd,а потом выбираю значение combo1 и перехожу на поле combo2 (НАХОДЯСЬ НА ЭТОЙ ЖЕ ЗАПИСИ!),
у меня сбрасывается выбранное ранее значение combo1,т.е. срабатывает событие Form_BeforeUpdate.
2) Когда я добавляю новую запись кнопкой butAdd,а потом выбираю значение combo2 и перехожу на поле combo1 (НАХОДЯСЬ НА ЭТОЙ ЖЕ ЗАПИСИ!),
у меня НЕ сбрасывается выбранное ранее значение combo2,т.е. событие Form_BeforeUpdate не срабатывает.
Хотелось бы,чтобы в первом варианте обнуление combo1 не происходило.
Т.е. чтобы Me.Undo срабатывало только если (не нажата кнопка butSave AND в случае перехода НА НОВУЮ ЗАПИСЬ).
Или есть способ проще?
Что-то подсказывает мне,что должно быть какое-то более простое "библиотечное" решение...
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932176
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня объявлен бойкот? Я плохо себя вел???
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932233
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
Меня объявлен бойкот? Я плохо себя вел???
А в чем вопрос-то?
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932242
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП,
22087877
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932244
drafty, пока вы перемещаетесь по полям одной записи, событие Form_BeforeUpdate не должно происходить, если только на других событиях вы не инициировали сохранение (например Refresh или Me.Dirty = false). Что у вас на combo1_AfterUpdate?
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932252
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
drafty, пока вы перемещаетесь по полям одной записи, событие Form_BeforeUpdate не должно происходить, если только на других событиях вы не инициировали сохранение (например Refresh или Me.Dirty = false). Что у вас на combo1_AfterUpdate?


Код: vbnet
1.
2.
3.
Private Sub comb1_AfterUpdate()
    Me.butSave.Enabled=False
End Sub


А на combo2 и combo3 изменение:
Код: vbnet
1.
2.
3.
Private Sub comb2_Change()
    Me.butSave.Enabled=True
End Sub
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932277
drafty

1) Когда я добавляю новую запись кнопкой butAdd,а потом выбираю значение combo1 и перехожу на поле combo2 (НАХОДЯСЬ НА ЭТОЙ ЖЕ ЗАПИСИ!),
у меня сбрасывается выбранное ранее значение combo1,т.е. срабатывает событие Form_BeforeUpdate.
Вы уверены, что это событие происходит?
Мне не нравится ваша затея с кнопкой "СОХРАНИТЬ". Может проще на событии Form_BeforeUpdate запросить подтверждение и при отказе Cancel = True ?
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932383
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А базу выложить?
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932853
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss
А базу выложить?

Давно бы выложил,да там данные не для всеобщего обозрения...
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932855
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
drafty

1) Когда я добавляю новую запись кнопкой butAdd,а потом выбираю значение combo1 и перехожу на поле combo2 (НАХОДЯСЬ НА ЭТОЙ ЖЕ ЗАПИСИ!),
у меня сбрасывается выбранное ранее значение combo1,т.е. срабатывает событие Form_BeforeUpdate.
Вы уверены, что это событие происходит?
Мне не нравится ваша затея с кнопкой "СОХРАНИТЬ". Может проще на событии Form_BeforeUpdate запросить подтверждение и при отказе Cancel = True ?

Да уверен(выяснил в режиме пошаговой трассировки через дебагер),поэтому и подчеркнул нюанс,что у поля como1 источник записей запрос SELECT,у como2 и como3, списки значений(думал может в этом что-то кроется)...
Что касается того,что на событии Form_BeforeUpdate запросить подтверждение - разницы нет,т.к. необходимо сначала выяснить из-за чего после перехода в другое поле с поля combo1 (в пределах той же записи) происходит срабатывание события Form_BeforeUpdate
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932866
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
Давно бы выложил,да там данные не для всеобщего обозрения...
А копию только проблемного куска БД с данными "от фонаря" религия не позволяет сделать? Или лень?
За то время, что висит тема, можно целиком БД написать...
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932873
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
drafty
Давно бы выложил,да там данные не для всеобщего обозрения...
А копию только проблемного куска БД с данными "от фонаря" религия не позволяет сделать? Или лень?
За то время, что висит тема, можно целиком БД написать...

Дело в том,что форма с вкладками,их много,причем на одной вкладке редактируется один набор таблиц в другой-другой.Но например при создании контролов мне необходимо обращаться к тем таблицам,которые были скорректированы на другой вкладке.Все взаимосвязано таким образом,что не все так просто- если выслать только ту часть где кусок этоко кода - могут выскакивать ошибки.
Поэтому и спрашиваю,может есть какой другой способ сохранения записи (или ее отмены)
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932882
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
Дело в том,что форма с вкладками,их много,причем на одной вкладке редактируется один набор таблиц в другой-другой.Но например при создании контролов мне необходимо обращаться к тем таблицам,которые были скорректированы на другой вкладке.Все взаимосвязано
тогда нет
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39932988
draftyИмеется ленточная форма frm1,не подчиненная .
...
Дело в том,что форма с вкладками ,их много,причем на одной вкладке редактируется один набор таблиц в другой-другой.Но например при создании контролов мне необходимо обращаться к тем таблицам,которые были скорректированы на другой вкладке.Все взаимосвязано таким образом,что не все так просто И это всё про ленточную форму?
Кроме перехода на другую запись и явных команд на сохранение, это может происходить при переходе в подчиненную форму. Может у вас на ленточной форме и субформы есть на вкладках?
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39933095
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
draftyИмеется ленточная форма frm1,не подчиненная .
...
Дело в том,что форма с вкладками ,их много,причем на одной вкладке редактируется один набор таблиц в другой-другой.Но например при создании контролов мне необходимо обращаться к тем таблицам,которые были скорректированы на другой вкладке.Все взаимосвязано таким образом,что не все так просто
И это всё про ленточную форму?
Кроме перехода на другую запись и явных команд на сохранение, это может происходить при переходе в подчиненную форму. Может у вас на ленточной форме и субформы есть на вкладках?

frm1 открывается отдельно от всех (по нажатию кнопки,которая расположена на ленточной форме являющейся подчиненной к основной простой форме,которая в свою очередь расположена на вкладке)...
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39933216
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая разница где она находится-обрабатывайте её нажатие,однако.
( зачем Вам глобальная переменная??)
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39933220
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
....
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39933286
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Какая разница где она находится-обрабатывайте её нажатие,однако.
( зачем Вам глобальная переменная??)

drafty

....
1) Когда я добавляю новую запись кнопкой butAdd,а потом выбираю значение combo1 и перехожу на поле combo2 (НАХОДЯСЬ НА ЭТОЙ ЖЕ ЗАПИСИ!),
у меня сбрасывается выбранное ранее значение combo1,т.е. срабатывает событие Form_BeforeUpdate...

Чтобы обрабатывать нажатие надо понять ПОЧЕМУ срабаытвает Form_BeforeUpdate
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39933461
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty

....Чтобы обрабатывать нажатие надо понять ПОЧЕМУ срабаытвает Form_BeforeUpdate

Для этого,как минимум,надо видеть Ваш код (присвоение значения переменной GLOBVAR-когда и как)
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39934424
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
drafty

....Чтобы обрабатывать нажатие надо понять ПОЧЕМУ срабаытвает Form_BeforeUpdate

Для этого,как минимум,надо видеть Ваш код (присвоение значения переменной GLOBVAR-когда и как)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Compare Database
Option Explicit
Dim GLOBVAR As Byte

Private Sub Form_Open(Cancel As Integer)
    GLOBVAR=0
End Sub
Private Sub butSave_Click()
    FLAGSOHRANENIYA = 1
End Sub
Private Sub comb1_AfterUpdate()
    Me.butSave.Enabled=False
End Sub
Private Sub comb2_Change()
    Me.butSave.Enabled=True
End Sub
If (GLOBVAR = 0) Then
    Me.Undo
End If
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39934562
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty,
А на before_update что у вас навешено на форме?
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39934570
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
...До нажатия кнопки butSave переменная GLOBVAR=0, после нажатии кнопки butSave переменная GLOBVAR=1...
При открытии формы переменной GLOBAR присваивается значение 0,а вот в какой момент 1 не "вкурил". Еще раз повторяю:занахрена Вам эта переменная?(Она ВСЕГДА,как я понял-где Вы меняете её значение?, равна 0)
drafty
Joss
А базу выложить?
Давно бы выложил,да там данные не для всеобщего обозрения...
Панург
drafty
Давно бы выложил,да там данные не для всеобщего обозрения...
А копию только проблемного куска БД с данными "от фонаря" религия не позволяет сделать? Или лень?
За то время, что висит тема, можно целиком БД написать...
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39934716
drafty
sdku
пропущено...

Для этого,как минимум,надо видеть Ваш код (присвоение значения переменной GLOBVAR-когда и как)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Compare Database
Option Explicit
Dim GLOBVAR As Byte

Private Sub Form_Open(Cancel As Integer)
    GLOBVAR=0
End Sub
Private Sub butSave_Click()
    FLAGSOHRANENIYA = 1
End Sub
Private Sub comb1_AfterUpdate()
    Me.butSave.Enabled=False
End Sub
Private Sub comb2_Change()
    Me.butSave.Enabled=True
End Sub
If (GLOBVAR = 0) Then
    Me.Undo
End If

Выделенное у вас так и написано (не внутри процедуры Form_BeforeUpdate, а само по себе)?
И почему comb2_Change(), а не comb2_AfterUpdate()?
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39934788
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
drafty
пропущено...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Compare Database
Option Explicit
Dim GLOBVAR As Byte

Private Sub Form_Open(Cancel As Integer)
    GLOBVAR=0
End Sub
Private Sub butSave_Click()
    FLAGSOHRANENIYA = 1
End Sub
Private Sub comb1_AfterUpdate()
    Me.butSave.Enabled=False
End Sub
Private Sub comb2_Change()
    Me.butSave.Enabled=True
End Sub
If (GLOBVAR = 0) Then
    Me.Undo
End If

Выделенное у вас так и написано ( не внутри процедуры Form_BeforeUpdate, а само по себе)?
И почему comb2_Change(), а не comb2_AfterUpdate()?

1)Да внутри процедуры Form_BeforeUpdate (очепятка)
2) Потому что при внесении какого-либо изменения нужно чтобы появлялась дополнительная опция например удалить или сохранить (такой как бы сервис)...
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39934882
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty

...2) Потому что при внесении какого-либо изменения нужно чтобы появлялась дополнительная опция например удалить или сохранить (такой как бы сервис)...
Обычно делают так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty Then
Dim response As Integer
    response = MsgBox("Данные изменились.Сохранить изменения?", vbYesNo, "Подтверждение")
        If response = vbNo Then
            Cancel = True
            Me.Undo
        End If
End If
End Sub
...
Рейтинг: 0 / 0
Сохранение текущей записи на ленточной форме
    #39935170
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
drafty

...2) Потому что при внесении какого-либо изменения нужно чтобы появлялась дополнительная опция например удалить или сохранить (такой как бы сервис)...
Обычно делают так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty Then
Dim response As Integer
    response = MsgBox("Данные изменились.Сохранить изменения?", vbYesNo, "Подтверждение")
        If response = vbNo Then
            Cancel = True
            Me.Undo
        End If
End If
End Sub


Понял,спасибо,приму на вооружение в качестве шаблонной заготовки
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сохранение текущей записи на ленточной форме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]