powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка при добавлении записи
9 сообщений из 9, страница 1 из 1
Ошибка при добавлении записи
    #32100476
Есть табличка в MS SQL, в которой поле "id" ключевое и формируется автоматически (уникальное в пределах данной табл.). На дабавление повешен тригер, который регистрирует все добавления в другой табличке записывая туда сформированное "id" и др. инф. Средствами самого MS SQL добавление проходит нормально (как задумано), а при попытке добавить запись в форме MS Access появ-ся ошибка:

"Данные, добавленные в БД, не будут отображены в форме, т.к. они противоречат условиям на базовый источник записей."
В форме никаких ограничений на "базовый источник записей" не предусмотрено. При удалении тригера добавл. в форме работает. Подскажите пожалуйста в чём проблема.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи
    #32100489
RiliR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкивался с нечто подобным. До конца не разгадал, но предполагаю следующие. При доюавлении записи форма, по-видимому, переоткрывает Recordset и успевает это сделать до того как отработает триггер. А потом таки определяет, что в вставленную ею запись влез кто-то еще (триггер) и изменил ее. И форма не берет эту запись в рекордсет. Как бороться с этим - не придумал. Имхо лучше таки отказаться от варианта генерить id на сервере триггером (см. /topic/21948 ). При таком способе возникает еще ряд неприятных сюрпризов, как на клиенте, так и на сервере. Сам долго боролся.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи
    #32100821
Julius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что после добавления Access выполняет попытку получить с сервера значение Id, посылая туда запрос

SELECT @@Identity

Понятно, что этот запрос вернет код ПОСЛЕДНЕЙ @@Identity, т.е. в Вашем случае - значение поля Id в записи ВТОРОЙ таблицы, в которой триггер что-то там регстрировал.
После получения значения, как он думае Id, Access выполняет запрос типа:
SELECT * FROM DataSource WHERE @id = <Полученное значение>. Этот запрос, понятное дело можеи и ничего не вернуть, или вернуть какую-то чепуху, в соответствии со значением поля Id во второй таблице.

Пока не известно другого радикального способа это обойти, кроме как отказаться от использования Identity в первой или во второй таблице, или в обеих сразу.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи
    #32100871
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Julius
Пока не известно другого радикального способа это обойти, кроме как отказаться от использования Identity в первой или во второй таблице, или в обеих сразу.
Да брось ты. Я один из способов еще в 98-ом году выложил в инет.

Андрей А. Иванов
Есть табличка в MS SQL, в которой поле "id" ключевое и формируется автоматически
Ты внятно скажи, это поле identity или ты сам формируешь значение ключа?
...
Рейтинг: 0 / 0
Ошибка при добавлении записи
    #32100881
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Pavel adp проектов в 98 году еще не было и впомине. разговор ведется именно об этой связке.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи
    #32100903
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДиД
Ну спасибо, рассказали! Оказывается я не знаю о чем утверждаю. Спасибо. Действительно, A2K тогда еще не было. Зато был MSSQL 7.0 (и ADO в составе Visual Studio). Те же проблемы со счетчиком, то же свойство рекордсета Resync Command. Короче, готов помочь, но пусть сначала Андрей А. Иванов уточнит с ключом.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи
    #32100909
Убрал поле Identity в табличке регистрации изменений (Лог). Теперь работает, но приходится самому генерить "id" для этой таблички.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи
    #32100924
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну теперь понятно. Хотя я же спросил, трудно ответить что ли?
Вот таблетка: верни в таблицу-лог счетчик, а в триггере на втавку основной таблицы вставь:
Код: plaintext
1.
2.
Set Nocount ON
Declare @Idt Int
Set @Idt = @@Identity

В конце вставь
Код: plaintext
1.
Set @s = 'Select Identity(Int, ' + Cast(@Idt As VarChar( 10 )) +' ,1)  As idt Into #Tmp'
Execute(@s)
...
Рейтинг: 0 / 0
Ошибка при добавлении записи
    #32100929
Извини за опоздание с предыдущим ответом (работа) и спасибо за помощь ... пробую
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка при добавлении записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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