powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Конфликт записи - как решить
21 сообщений из 21, страница 1 из 1
Конфликт записи - как решить
    #32643787
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброе время суток!
При прекращении права собственности на объект пользователь ставит галочку в форме. На одном свидетельстве регистрации права сидит несколько объектов. Я программно с помощью запроса Update заменяю данные во всех объектах согласно изменений в форме.

Код: plaintext
1.
2.
3.
4.
If MsgBox("Распространить изменение статуса на все объекты с данным номером свидетельства???", vbYesNo, "Распространить?") = vbYes Then
                SQL_str = "UPDATE [Table] SET [Table].Precr_Prava_Sobstv = False WHERE (((Table.NumSvidet)=" & Me.NumSvidet.Value & "));"
                DoCmd.RunSQL SQL_str
            End If

После этого если перейти на следующий объект с данным свидетельством возникает конфликт записи и выходит диалог см. картинку-аттачмент.

Как быть? В принципе можно научить юзьверей жать "Сохранить", но это кустарщина какая-то...
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32643855
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после UPDATE сделай me.refresh
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644391
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
щас попробую...
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644403
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь сразу вылетает этот диалог :)
Что-то другое надо. А может как-то можно запускать выполнение Update-запроса от имени текущего пользователя и тогда конфликта не будет...
Почему пишет что запись изменялась другим пользователем?
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644537
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи весь код и конкретно строчку где вылетает

у меня в адп /хп было такое, рефреш помог, а у тебя мдб однако...
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644539
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не знает, как выключить этот глюк?
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644545
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код показывай , телепаты в отпуске
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644546
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Русские буквы кстати почему-то из VBA никак не хоЧУт перекачиваться ни в ворд ни куда-либо ещё... может это знаете как исправить?
Вот весь код, который меняет данные согласно выбора пользователей
Как видно, уже рефреш добавлен
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Private Sub Precr_Prava_Sobstv_BeforeUpdate(Cancel As Integer)
If Me.Precr_Prava_Sobstv.Value = True Then
        On Error GoTo Err_btn_OpenPrecrPrava_Click
    
        Dim stDocName As String
        Dim stLinkCriteria As String
        
        If MsgBox("Ðàñïðîñòðàíèòü èçìåíåíèå ñòàòóñà íà âñå îáúåêòû ñ äàííûì íîìåðîì ñâèäåòåëüñòâà???", vbYesNo, "Ðàñïðîñòðàíèòü?") = vbYes Then
            SQL_str = "UPDATE [Table] SET [Table].Precr_Prava_Sobstv = True WHERE (((Table.NumSvidet)=" & Me.NumSvidet.Value & "));"
            DoCmd.RunSQL SQL_str
            Me.Refresh
        End If
        
        stDocName = ChrW( 1055 ) & ChrW( 1088 ) & ChrW( 1077 ) & ChrW( 1082 ) & ChrW( 1088 ) & ChrW( 1072 ) & ChrW( 1097 ) & ChrW( 1077 ) & ChrW( 1085 ) & ChrW( 1080 ) & ChrW( 1077 ) & ChrW( 95 ) & ChrW( 1087 ) & ChrW( 1088 ) & ChrW( 1072 ) & ChrW( 1074 ) & ChrW( 1072 )
        
        stLinkCriteria = "[NumSvidet]=" & Me![NumSvidet]
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    
Exit_btn_OpenPrecrPrava_Click:
        Exit Sub
    
Err_btn_OpenPrecrPrava_Click:
        MsgBox Err.Description
        Resume Exit_btn_OpenPrecrPrava_Click
    Else
    If MsgBox(" òàáëèöå ïðåêðàùåíèÿ ïðàâà ñîáñòâåííîñòè ñîäåðæèòñÿ èíôîðìàöèÿ îá ýòîì îáúåêòå!" & vbCr & "Òî÷íî æåëàåòå óäàëèòü îòìåòêó???", vbYesNo, "Âîïðîñ") = vbNo Then
        Cancel = - 1 
        
        If MsgBox("Îòêðûòü òàáëèöó ïðåêðàùåíèÿ ïðàâà äëÿ ïðîñìîòðà äàííûõ ïî òåêóùåìó îáúåêòó???", vbYesNo, "Îòêðûòü òàáëèöó?") = vbYes Then
            stDocName = ChrW( 1055 ) & ChrW( 1088 ) & ChrW( 1077 ) & ChrW( 1082 ) & ChrW( 1088 ) & ChrW( 1072 ) & ChrW( 1097 ) & ChrW( 1077 ) & ChrW( 1085 ) & ChrW( 1080 ) & ChrW( 1077 ) & ChrW( 95 ) & ChrW( 1087 ) & ChrW( 1088 ) & ChrW( 1072 ) & ChrW( 1074 ) & ChrW( 1072 )
            stLinkCriteria = "[NumSvidet]=" & Me![NumSvidet]
            DoCmd.OpenForm stDocName, , , stLinkCriteria
        End If
    Else
            If MsgBox("Ðàñïðîñòðàíèòü èçìåíåíèå ñòàòóñà íà âñå îáúåêòû ñ äàííûì íîìåðîì ñâèäåòåëüñòâà???", vbYesNo, "Ðàñïðîñòðàíèòü?") = vbYes Then
                SQL_str = "UPDATE [Table] SET [Table].Precr_Prava_Sobstv = False WHERE (((Table.NumSvidet)=" & Me.NumSvidet.Value & "));"
                DoCmd.RunSQL SQL_str
                Me.Refresh
            End If

    End If
End If
End Sub


...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644549
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На чём висит форма? Небоcь на таблице [table] ?
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644551
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно дело на таблице
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644558
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дал код
Эй телеТЯпы!!!!!!! аууууууууууууу :)
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644573
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй повесить не на Precr_Prava_Sobstv_BeforeUpdate, а на афтерапдейт , потом таки рефреш, а если
If MsgBox(" тратата") = vbNo
делай Undo
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644582
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или на after update формы, предварительно флажок взведя
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644678
amel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открывай форму и данные только на чтение.
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644697
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно, как же он тогда флажок выставлять на форме будет, да и откуда Вы взяли что нужно запретить редактировать всю форму?
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644756
GuestN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это из-за того, что запрос обновляет и ту запись, которую пользователь исправил ручками, если ее не обновлять в запросе то проблемы не будет.
т.е что-то типа:
SQL_str = "... WHERE (((Table.NumSvidet)=" & Me.NumSvidet.Value & " and (Table.id <> " & me.id & ")));"
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644764
amel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такое понятие курсоров в VB(A), советую заняться сразу программированием через них используя ADO или по старинке DAO. Так как форма только на чтение, то вы запоминаете где находились (id - ключ) открываете рекордсет обновляете и делаете рефрешь, ну и вовращаете на ту позицию на которой находились.
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644778
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перепиши вот этот кусок так
Код: plaintext
1.
2.
3.
4.
5.
If MsgBox("Ðàñïðîñòðàíèòü èçìåíåíèå ñòàòóñà íà âñå îáúåêòû ñ äàííûì íîìåðîì ñâèäåòåëüñòâà???", vbYesNo, "Ðàñïðîñòðàíèòü?") = vbYes Then
                SQL_str = "UPDATE [Table] SET [Table].Precr_Prava_Sobstv = False WHERE (((Table.NumSvidet)=" & Me.NumSvidet.Value & "));"
                DoCmd.RunSQL SQL_str
                 'Me.Refresh 
                Me.Requery
            End If

(с выражением лица)
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644812
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня большое подозрение, что эффект будет тот же

правда узнать мы это сможем только если энтот товарисч откликнется
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32644820
GuestN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только Me.Requery до выполнения запроса,
и в событии AfterUpdate
...
Рейтинг: 0 / 0
Конфликт записи - как решить
    #32645691
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо "GuestN".
Я поставил доп. условие на то, чтобы поправленная ручками запись не менялась и диалог конфликта пропал.

Другие варианты не пробовал, этот мне понравился с первого взгляда, так что про их работоспособность ничего сказать не могу.

AfterUpdate мне не подходит тем, что его нельзя откатить встроенными средствами, а в BeforeUpdate есть Cancel, а Undo мне никогда не нравился, да и работает он как-то кривовато.

Всем спасибо
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Конфликт записи - как решить
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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