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

Как мне от этого сообщения избавиться?
...
Рейтинг: 0 / 0
19.05.2005, 15:55
    #33075048
DAO: Конфликт записей
Обработать ошибку.
...
Рейтинг: 0 / 0
19.05.2005, 18:06
    #33075587
TP
TP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
Интересно, а как обработать эту ошибку?
...
Рейтинг: 0 / 0
10.02.2006, 11:29
    #33536485
eugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
Да и у меня такая же фигня. Есть оболочка Access-ная с присоединёнными таблицами SQL Server. Так вот все таблицы модийицируются из Access нормально, но одна табл - ка заколдованная (вроде и 1-ичный ключ есть, и нет внешених связей), а при попытке модификации ее из Access лезет "Конфликт записей. Запись изменена другими пользователями", хотя пользователь -один я. И при модификации этой же табл из Enterprise Manager SQL Server всё проходит нормально без ошибок.
В чём сермяхная правда?
...
Рейтинг: 0 / 0
28.07.2006, 07:44
    #33883967
Restavraciya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
а как отключить это сообщение ?
...
Рейтинг: 0 / 0
03.08.2006, 21:57
    #33898565
Matador2006
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
Та же фигня и у меня. Во всех таблицах все нормально редактируется и вставляется, но в двух никак не хочет и выдает эту ошибку. Из Enterprise Manager все ОК. Я уже пробовал и ограничения все убирать и связи удалял - ничего не помогает!
...
Рейтинг: 0 / 0
04.08.2006, 10:34
    #33899034
DAO: Конфликт записей
Этот код (модуль формы) проблему решить не поможет, но упростит по крайней мере диалоговое окно.
Код: 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
04.08.2006, 11:26
    #33899262
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
У меня такое было в следующем случае: открываю форму основанную на запросе или таблице с возможностью редактирования. Если Вы перешли в режим редактирования записи (на поле выделения записи появляется карандаш, а свойство формы OnDirty становится True . И если на основе выбранной записи вы открываете дополнительную форму для корректирования и пытаетесь в ней что-то изменить, то как раз и происходит описанный Вами случай. Несколько непонятно? Попробую по проще. Если у вас в программе две (или более) формы переведены в состояние редактирования и при этом работают с одной и той же записью ... или может быть так: когда вы пытаетесь изменить запись, которую уже меняете в другой форме. Тогда и появляется как раз и сообщение "Конфликт записи! Пока вы правили эту запись она была изменина другим пользователем ... "
Как это разрулить, зависит от конкретной задачи.
Может Гетц и поможет. Но скорее всего надо пересмотреть свои формы. Которая из них переходит в режим редактирования. Это, я считаю, ошибка программиста, и её надо искать и устранять.
...
Рейтинг: 0 / 0
04.08.2006, 11:36
    #33899301
м. б.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
Вполне возможно, что в дело замешаны триггеры.
...
Рейтинг: 0 / 0
04.08.2006, 11:56
    #33899368
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
Триггеры - это если работаешь с SQL Server, а если только Access, то они не причем.
...
Рейтинг: 0 / 0
23.08.2006, 12:55
    #33937269
russkii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
Триггеры - точно не при чем, они же выполняются на уровне базы
при полном соблюдении концепции транзакций.
А насчет этого сообщения - у меня оно тоже вылезает, когда я
врубаю подчиненную форму и пытаюсь сохранить запись в главной.
(Так пришлось сделать, потому что обрабатывать надо более 255 записей на одной форме, у меня 2 таблицы, повязанные по ключу + триггеры на одну из них для insert/delete в другую)
В аксессе я не мастер, и не хочу им быть, это извращение, но тут вот приперло-надо! Если кто может помочь - ПОМОГИТЕ! До сдачи проекта меньше недели, горю совсем!!! Буду признателен, с моей стороны респект и уважуха, отвечу потом на любые вопросы!
...
Рейтинг: 0 / 0
13.09.2006, 05:39
    #33982660
Svetusya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
у меня такая проблема была, буквально, вчера...долго вела разборки...
и, выяснила, что проблема из-за не соответствия типа данных - access не понимал тип bit!!! поменяла тип, чем и избавилась от конфликта записи...
Но, скорее всего ситуаций может быть много. И ответ нужно искать именно в данных!!!
...
Рейтинг: 0 / 0
13.09.2006, 08:24
    #33982780
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO: Конфликт записей
Такая ошибка, помимо описанных случаев, может появляться и при работе с одной формой. Если вы редактируете запись и не сохранив ее нажимаете, например, кнопку в которой происходит обработка этой записи, то Аксцесс думает, что эту запись вторично изменил кто-то другой, и выдает ошибку.
...
Рейтинг: 0 / 0
18.01.2007, 13:59
    #34264921
DAO: Конфликт записей
Спасибо Svetusya!
У меня была именно такая проблема.
Сначала ругался код на C++ - понял, что дело с "битом".
Потом и Access стал выделываться при переходе с локальной базы(мдб) на SQLServer.

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

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

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

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

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

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

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


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