Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сохранение текущей записи на ленточной форме / 25 сообщений из 26, страница 1 из 2
27.02.2020, 09:09
    #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
28.02.2020, 14:37
    #39932176
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение текущей записи на ленточной форме
Меня объявлен бойкот? Я плохо себя вел???
...
Рейтинг: 0 / 0
28.02.2020, 15:33
    #39932233
ИВП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение текущей записи на ленточной форме
drafty
Меня объявлен бойкот? Я плохо себя вел???
А в чем вопрос-то?
...
Рейтинг: 0 / 0
28.02.2020, 15:40
    #39932242
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение текущей записи на ленточной форме
ИВП,
22087877
...
Рейтинг: 0 / 0
28.02.2020, 15:40
    #39932244
Сохранение текущей записи на ленточной форме
drafty, пока вы перемещаетесь по полям одной записи, событие Form_BeforeUpdate не должно происходить, если только на других событиях вы не инициировали сохранение (например Refresh или Me.Dirty = false). Что у вас на combo1_AfterUpdate?
...
Рейтинг: 0 / 0
28.02.2020, 15:46
    #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
28.02.2020, 16:20
    #39932277
Сохранение текущей записи на ленточной форме
drafty

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

Давно бы выложил,да там данные не для всеобщего обозрения...
...
Рейтинг: 0 / 0
02.03.2020, 08:12
    #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
02.03.2020, 09:48
    #39932866
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение текущей записи на ленточной форме
drafty
Давно бы выложил,да там данные не для всеобщего обозрения...
А копию только проблемного куска БД с данными "от фонаря" религия не позволяет сделать? Или лень?
За то время, что висит тема, можно целиком БД написать...
...
Рейтинг: 0 / 0
02.03.2020, 10:03
    #39932873
drafty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение текущей записи на ленточной форме
Панург
drafty
Давно бы выложил,да там данные не для всеобщего обозрения...
А копию только проблемного куска БД с данными "от фонаря" религия не позволяет сделать? Или лень?
За то время, что висит тема, можно целиком БД написать...

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

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

drafty

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

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

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

Для этого,как минимум,надо видеть Ваш код (присвоение значения переменной GLOBVAR-когда и как)
...
Рейтинг: 0 / 0
05.03.2020, 08:12
    #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
05.03.2020, 11:51
    #39934562
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение текущей записи на ленточной форме
drafty,
А на before_update что у вас навешено на форме?
...
Рейтинг: 0 / 0
05.03.2020, 12:06
    #39934570
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение текущей записи на ленточной форме
drafty
...До нажатия кнопки butSave переменная GLOBVAR=0, после нажатии кнопки butSave переменная GLOBVAR=1...
При открытии формы переменной GLOBAR присваивается значение 0,а вот в какой момент 1 не "вкурил". Еще раз повторяю:занахрена Вам эта переменная?(Она ВСЕГДА,как я понял-где Вы меняете её значение?, равна 0)
drafty
Joss
А базу выложить?
Давно бы выложил,да там данные не для всеобщего обозрения...
Панург
drafty
Давно бы выложил,да там данные не для всеобщего обозрения...
А копию только проблемного куска БД с данными "от фонаря" религия не позволяет сделать? Или лень?
За то время, что висит тема, можно целиком БД написать...
...
Рейтинг: 0 / 0
05.03.2020, 15:20
    #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
05.03.2020, 16:49
    #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
05.03.2020, 19:04
    #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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сохранение текущей записи на ленточной форме / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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