powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DAO: Конфликт записей
25 сообщений из 25, страница 1 из 1
DAO: Конфликт записей
    #33074919
boris_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть форма и присоединенная к ней таблица. Работа с данными идет через DAO.
С этой формой работает только один пользователь, но обращения к ней идут с разных форм. В процессе работы вылетает сообщение: "Конфликт записи! Пока вы правили эту запись она была изменина другим пользователем ... " (на картинке)

Как мне от этого сообщения избавиться?
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33075048
Обработать ошибку.
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33075587
TP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TP
Гость
Интересно, а как обработать эту ошибку?
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33536485
eugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и у меня такая же фигня. Есть оболочка Access-ная с присоединёнными таблицами SQL Server. Так вот все таблицы модийицируются из Access нормально, но одна табл - ка заколдованная (вроде и 1-ичный ключ есть, и нет внешених связей), а при попытке модификации ее из Access лезет "Конфликт записей. Запись изменена другими пользователями", хотя пользователь -один я. И при модификации этой же табл из Enterprise Manager SQL Server всё проходит нормально без ошибок.
В чём сермяхная правда?
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33883967
Фотография Restavraciya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как отключить это сообщение ?
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33898565
Matador2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Та же фигня и у меня. Во всех таблицах все нормально редактируется и вставляется, но в двух никак не хочет и выдает эту ошибку. Из Enterprise Manager все ОК. Я уже пробовал и ограничения все убирать и связи удалял - ничего не помогает!
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33899034
Этот код (модуль формы) проблему решить не поможет, но упростит по крайней мере диалоговое окно.
Код: 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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
' From Access 97 Developer's Handbook
' by Litwin, Getz and Gilbert. (Sybex)
' Copyright 1997. All Rights Reserved.
'
Option Compare Database   'Use database order for string comparisons
Option Explicit

Const adhcErrWriteConflict =  7787 
Const adhcErrDataChanged =  7878 

Private Sub cmdClose_Click()
    DoCmd.Close acForm, Me.Name
End Sub

Private Sub Form_Error(DataErr As Integer, Response As Integer)

    ' Handle form-level errors

    On Error GoTo Form_ErrorErr
     
    Dim strMsg As String
    Dim intResp As Integer
    Dim rst As DAO.Recordset
    Dim fld As DAO.Field
    Dim db As DAO.Database
    
    ' Branch based on value of error
    Select Case DataErr
    
    Case adhcErrWriteConflict
        ' Write conflict error
        strMsg = "Another user has updated this record " & _
         "since you began editing it. " & vbCrLf & vbCrLf & _
         "The record will be refreshed with the other " & _
         "user's changes before continuing."
        MsgBox strMsg, vbOKOnly + vbInformation, _
         "Record Refresh"
        
        ' This will cause record refresh
        Response = acDataErrContinue
        
    Case adhcErrDataChanged
        ' This error occurs if Access detects that
        ' another user has changed this record when we
        ' attempt to dirty the record. Fairly harmless since
        ' we haven't actually made any changes.
        strMsg = "Another user has updated this record " & _
         "since you began viewing it. " & vbCrLf & vbCrLf & _
         "The record will be refreshed with the other " & _
         "user's changes before continuing."
        MsgBox strMsg, vbOKOnly + vbInformation, _
         "Record Refresh"
         
        ' This will cause record refresh
        Response = acDataErrContinue
    Case Else
        ' Otherwise, let Access display standard error message
        Response = acDataErrDisplay
    End Select
    
    DoCmd.Hourglass False
    
Form_ErrorEnd:
    Exit Sub

Form_ErrorErr:
    ' It's possible to hit or own error while handling a
    ' data error. For example, someone could pessimstically
    ' lock the record while we are trying to update it.
    ' Report the error to the user and exit.
    MsgBox "Error " & Err.Number & ": " & Err.Description, _
     vbOKOnly + vbCritical, "Error Handler Error"

End Sub
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33899262
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня такое было в следующем случае: открываю форму основанную на запросе или таблице с возможностью редактирования. Если Вы перешли в режим редактирования записи (на поле выделения записи появляется карандаш, а свойство формы OnDirty становится True . И если на основе выбранной записи вы открываете дополнительную форму для корректирования и пытаетесь в ней что-то изменить, то как раз и происходит описанный Вами случай. Несколько непонятно? Попробую по проще. Если у вас в программе две (или более) формы переведены в состояние редактирования и при этом работают с одной и той же записью ... или может быть так: когда вы пытаетесь изменить запись, которую уже меняете в другой форме. Тогда и появляется как раз и сообщение "Конфликт записи! Пока вы правили эту запись она была изменина другим пользователем ... "
Как это разрулить, зависит от конкретной задачи.
Может Гетц и поможет. Но скорее всего надо пересмотреть свои формы. Которая из них переходит в режим редактирования. Это, я считаю, ошибка программиста, и её надо искать и устранять.
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33899301
м. б.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вполне возможно, что в дело замешаны триггеры.
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33899368
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггеры - это если работаешь с SQL Server, а если только Access, то они не причем.
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33937269
russkii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Триггеры - точно не при чем, они же выполняются на уровне базы
при полном соблюдении концепции транзакций.
А насчет этого сообщения - у меня оно тоже вылезает, когда я
врубаю подчиненную форму и пытаюсь сохранить запись в главной.
(Так пришлось сделать, потому что обрабатывать надо более 255 записей на одной форме, у меня 2 таблицы, повязанные по ключу + триггеры на одну из них для insert/delete в другую)
В аксессе я не мастер, и не хочу им быть, это извращение, но тут вот приперло-надо! Если кто может помочь - ПОМОГИТЕ! До сдачи проекта меньше недели, горю совсем!!! Буду признателен, с моей стороны респект и уважуха, отвечу потом на любые вопросы!
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33982660
Svetusya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня такая проблема была, буквально, вчера...долго вела разборки...
и, выяснила, что проблема из-за не соответствия типа данных - access не понимал тип bit!!! поменяла тип, чем и избавилась от конфликта записи...
Но, скорее всего ситуаций может быть много. И ответ нужно искать именно в данных!!!
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #33982780
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая ошибка, помимо описанных случаев, может появляться и при работе с одной формой. Если вы редактируете запись и не сохранив ее нажимаете, например, кнопку в которой происходит обработка этой записи, то Аксцесс думает, что эту запись вторично изменил кто-то другой, и выдает ошибку.
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #34264921
Спасибо Svetusya!
У меня была именно такая проблема.
Сначала ругался код на C++ - понял, что дело с "битом".
Потом и Access стал выделываться при переходе с локальной базы(мдб) на SQLServer.

Девушку хвалю! Молодец!
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #34624013
guest83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Небольшое добавление к ответу Svetusya (идея высказанная там мне помогла).
Но Access понимает тип bit, он выводит ошибку, если поле этого типа в MS SQL null. Так что если вам нужны null в битовых полях меняйте тип, иначе задайте значение в имеющихся записях и определите значение по умолчанию.
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #34689242
daneska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я столкнулся с таким же сообщением при обновлении РАЗНЫХ полей ОДНОЙ и ТОЙ ЖЕ строки в единственной таблице. Обновление происходит через CurrentDb.Execute при щелчке по checkbox'ам (событие - After Update). так вот, как пишут вот здесь:http://www.thescripts.com/forum/thread554481.html, надо всего лишь обновлять источник записей для формы Me.Requery после каждого изменения и сообщение пропадёт!!! Только, естественно, помаргивать будет изображение формы при перезапросе данных из таблицы.
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #34689292
daneska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я столкнулся с таким же сообщением при обновлении РАЗНЫХ полей ОДНОЙ и ТОЙ ЖЕ строки в единственной таблице. Обновление происходит через CurrentDb.Execute при щелчке по checkbox'ам (событие - After Update). так вот, как пишут вот здесь:http://www.thescripts.com/forum/thread554481.html, надо всего лишь обновлять источник записей для формы Me.Requery после каждого изменения и сообщение пропадёт!!! Только, естественно, помаргивать будет изображение формы при перезапросе данных из таблицы.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
DAO: Конфликт записей
    #36421181
xbz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Svetusyaу меня такая проблема была, буквально, вчера...долго вела разборки...
и, выяснила, что проблема из-за не соответствия типа данных - access не понимал тип bit!!! поменяла тип, чем и избавилась от конфликта записи...
Но, скорее всего ситуаций может быть много. И ответ нужно искать именно в данных!!!

Такой же касяк огромная спасибо за информацию
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #36421263
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boris_2005,

Код: plaintext
С этой формой работает только один пользователь, но обращения к ней идут с разных форм.

Переделайте все эти обращения по другому. То есть упростите программу.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
DAO: Конфликт записей
    #39271902
akcecc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация аналогичная:
Основная форма (много контролов)+ несколько подчиненных.
Изменяем запись и нажимаем свою кнопку "сохранить".
Если разные поля разных форм соответствуют определенным условиям,- в основной форме проставляем соответствующие флаги (forms!forma!flag = -1). (перед этим все флаги обнулив).
Иногда возникает "runtime error (7878) данные были изменены".
монопольный доступ, блокировка по умолчанию - отсутствует.
В общем такая ошибка выходит 1 раз на проставление всех флагов и после останова - программа отрабатывает нормально
На обнулении флагов ошибка не возникает.
Между обнулением и проставлением обрабатываются рекордсетклоны подчиненных форм.
Пересоздание файла не помогло.
Ошибка пропадает, если непосредственно перед проставлением проблемного флага, в коде вставить doevents.

Намекните пожалуйста, кто сталкивался - как отловить и вылечить эту ошибку, либо где упрощать.
(Уже почти решился в обработке ошибок прописать эту фигню - но хотелось бы понять ее причину, поскольку неизвестно как она прявит себя на машинах пользователей.)
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #39271923
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #39272015
akcecc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ.
Но. Приведенные по ссылке методы для mdb не сработали оба.
Если ставлю блокировку изменяемой записи или добавляю сохранение записи при отключении форм (как вместе так и по отдельности) - ошибка остается.
Добавление doevents вроде бы приводит к устранению ошибки.
Но мне почему-то кажется, что тут что-то не правильно...
И у пользователей возможны сюрпризы...
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #39272133
_гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akcecc,

у вас, не исключено, что-то нарушено в связи форма-таблица, например, в каком-н поле со списком неправильно указан присоединённый столбец... Как вариант
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #39272287
э
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
э
Гость
Не думаю, что в данном случае возможны какие-либо чудеса, поэтому:
1. всплывающее сообщение читал бы примерно так:
"пока вы здесь правили эту запись, она уже была изменена, причем, вами же, только в другом месте (форме, рекордсете и проч..)"
2. ну а возможные косяки искал бы где-то здесь:
akcecc Изменяем запись и нажимаем свою кнопку "сохранить".
Если разные поля разных форм соответствуют определенным условиям,- в основной форме проставляем соответствующие флаги (forms!forma!flag = -1). ( перед этим все флаги обнулив ).
...
Рейтинг: 0 / 0
DAO: Конфликт записей
    #39272651
akcecc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_гурД, э, спасибо за рекомендации.

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


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