В приложении, которое я пишу, я получаю конфликты записи, когда я использую код VBA для изменения значения флажка в форме. Я попытался вставить следующий код в события, в которых VBA изменяет значения любого объекта в форме:
If Me.Dirty Then
Me.Dirty = False
End If
Но проблема сохраняется - как будто запись не сохраняется, прежде чем я пытаюсь что-то изменить с помощью ручных манипуляций.
Вот несколько примеров полного кода из формы, где я сталкиваюсь с этой проблемой:
Код для изменения флажка «Чистая цена»:
Private Sub chkSupAllowBlankPrice_AfterUpdate()
If Me.Dirty Then
Me.Dirty = False
End If
If (chkSupAllowBlankPrice.Value = True) Then
chkSupRequirePrice.Value = False
End If
End Sub
Код для изменения флажка Требовать цены:
Private Sub chkSupRequirePrice_AfterUpdate()
If Me.Dirty Then
Me.Dirty = False
End If
If (chkSupRequirePrice.Value = True) Then
chkSupAllowBlankPrice.Value = False
chkSupAllowBlankPrice.Visible = False
chkSupAllowBlankPrice.Enabled = False
chkSupAllowBlankPrice.Locked = True
lblSupAllowBlankPrice.Visible = False
Else
chkSupAllowBlankPrice.Visible = True
chkSupAllowBlankPrice.Enabled = True
chkSupAllowBlankPrice.Locked = False
lblSupAllowBlankPrice.Visible = True
End If
End Sub
Не уверен, поможет ли это, но таблицы хранятся в экспресс-базе данных SQL Server - отсюда и тег.
- отредактировано 29.05.2009 @ 1201 часов -
Я пытался закомментировать все изменения значений объекта, оставляя только видимые, заблокированные и включенные изменения - но я продолжаю получать конфликты записи. Я попытался поместить Me.Dirty = False в конце процедуры события, и я даже попытался удалить его. Пока что я получаю конфликты записи всякий раз, когда я изменяю Требовать цену или Разрешить пустую цену, без изменения другого значения кодом VBA.
- отредактировано 29.05.2009 @ 1318 часов -
Поля, которыми эти флажки манипулируют, не будут принимать какие-либо изменения после создания записи, создавая конфликт записи каждый раз, когда я пытаюсь с ними работать. Теперь я в полном замешательстве, думая о том, чтобы все потрошить и начать все сначала.
- отредактировано 01.06.2009 @ 1209 часов -
После исследования кажется, что на сервере определен ряд проверочных ограничений для задействованных таблиц, которые я не могу удалить. Что-то заставляет связанные таблицы всегда сообщать о загрязнении, даже если элементы не были изменены - и я думаю, что Access и SQL борются со значениями по умолчанию. Я собираюсь стереть все таблицы, удалить всю информацию и начать заново с моим дизайном, так как проверочные ограничения, по-видимому, не снимаются без опускания таблицы в любом случае. Спасибо всем за помощь, мог ли этот вопрос быть закрыт - ссылаясь на проблему с этим новым вопросом ( Обновление записей не разрешено - Конфликт записи )?
- отредактировано 03/03/2009 @ 1307 часов -
Кросс-пост от другого вопроса, решение описано ниже для всего, что было любопытно. Спасибо всем людям, которые ударили меня по голове, чтобы получить это далеко, я действительно рассчитываю на помощь. Я обнаружил, что странная проблема возникает при использовании флажков Да / Нет и SQL Server с Access. Очевидно, Access будет интерпретировать NULL как Нет - при изменении значения, но SQL Server не будет интерпретировать NULL как поле Нет в бите (во что да / нет превращается при преобразовании), поэтому он выдает ошибку Write Conflict, когда значение не требуется, и имеет значение NULL. Решение состояло в том, чтобы изменить структуру таблицы таким образом, чтобы было необходимо значение и чтобы для КАЖДОГО прежнего флажка Да / Нет было назначено значение по умолчанию. Это решило загадочные сообщения о конфликте записи и позволило вносить изменения в записи после их создания.