Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблемы с вводом данных в представление. / 14 сообщений из 14, страница 1 из 1
30.04.2003, 14:13
    #32151917
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
Проект ADP связываю с SQL Server
Есть представление:
=========================
CREATE VIEW dbo.Receipt
AS
SELECT dbo.Goods_type.name AS ntype, dbo.Goods.type AS itype, dbo.Firms.name AS nfirm, dbo.Goods.firm AS ifirm, dbo.Goods.model AS nmodel,
dbo.Receipts.goods_id AS imodel, dbo.Receipts.date, dbo.Receipts.[count], dbo.Receipts.client, dbo.Receipts.pay_type, dbo.Receipts.price,
dbo.Firms.id AS id_firm, dbo.Goods_type.id AS id_type, dbo.Goods.id AS id_goods, dbo.Receipts.id AS id_receipts, dbo.Clients.id AS id_client,
dbo.Client_type.id AS id_cltype
FROM dbo.Receipts INNER JOIN
dbo.Goods ON dbo.Receipts.goods_id = dbo.Goods.id INNER JOIN
dbo.Goods_type ON dbo.Goods.type = dbo.Goods_type.id INNER JOIN
dbo.Firms ON dbo.Goods.firm = dbo.Firms.id INNER JOIN
dbo.Clients ON dbo.Receipts.client = dbo.Clients.id INNER JOIN
dbo.Client_type ON dbo.Clients.type = dbo.Client_type.id
WHERE (dbo.Client_type.type = 'поставщик')
=======================
Есть тригер на замещение:
=======================
CREATE TRIGGER [Receipt_Ins] ON [dbo].[Receipt]
INSTEAD OF INSERT
AS
INSERT INTO dbo.Receipts
(
goods_id,
[date],
count,
client,
pay_type,
price
)
SELECT
imodel,
[date],
count,
client,
pay_type,
price
FROM INSERTED
=============
Так вот когда ввожу первую запись аксес выкидывает сообщение , что пока я правил запись она была изменена другим пользователем и что если ее сохранить то введеные другим пользователем изменения будут потеряны и Access предлагает мне сохранить запись либо копировать ее в буфер либо отменить изменения.
После сохранения вышеописанный диалог не исчезает, а после закрытия таблицы и повторного ее открытия новая запись уже существует в таблице, после чего все новые записи вводятся без проблем. Что это может быть и как это исправить? а то уж с ругательствами вводить первую запись как-то не серьезно!!!
...
Рейтинг: 0 / 0
30.04.2003, 15:24
    #32152007
Хам трамвайный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
команда синхронизации см. help
...
Рейтинг: 0 / 0
30.04.2003, 17:34
    #32152166
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
2 Хам трамвайный
Почему тогда это происходит лишь при вводе первой записи в таблицу, по которой пишется представление, а после того, как запись уже существует она не ругается, а отображает все правильно. К тому же это происходит не только в режиме формы, но и если открыть представление напрямую, в режиме "запрос"?
...
Рейтинг: 0 / 0
30.04.2003, 18:22
    #32152209
alexkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
Вопрос к pv
Ты в курсе как работают триггеры(когда срабатывают, что используют в качестве идентефикатора при срабатывания триггера )


>К тому же это происходит не только в режиме формы, но и если открыть представление напрямую, в режиме "запрос"?

Тригер когда срабатывает ему всеравно как ты к таблице ломишся хоть через форму хоть через запрос напрямую, он реагирует на то что творится в таблице!!!!

Читай хелп триггеры.
...
Рейтинг: 0 / 0
30.04.2003, 18:37
    #32152215
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
2 alexkov
как работают тригеры я в курсе, и если бы он всегда работал не правильно, но это происходит лишь в случае внесения первой записи в таблицу, в дальнейшем же как закроешь-откроешь таблицу, чтобы первая запись в ней появилась ввод данных в таблицу происходит без всяких проблем абсолютно правильно, вот почему это происходит именно при вводе первой записи я понять не могу.
...
Рейтинг: 0 / 0
30.04.2003, 19:15
    #32152232
alexkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
не знаю как тебе объяснить суть проблемы (в уме понимаю как выразить не знаю :-) )

Слелай экспиремент
добавивь триггер условие типа

если таблица пустая, т.е кол-во записей = 0 ничего не делать в противном случае выполнить.
Думаю должно попустить.
...
Рейтинг: 0 / 0
01.05.2003, 00:28
    #32152296
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
>pv
Добавька вначале триггера:

Declare @Idt Int, @s VarChar(50)
Set @Idt = @@Identity

В конце:

Set @s = 'Select Identity(Int, ' + Cast(@Idt As VarChar(10)) +' ,1) As idt Into #Tmp'
Execute(@s)
...
Рейтинг: 0 / 0
01.05.2003, 09:37
    #32152325
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
2 V. Motchulsky
Как то я это уже делал, кстати, по вашему же совету, но никаких изменений, все происходит по тому же принципу, на вводд первой записи в таблицу аксес ругается, далее все нормально.
да, и , пожалуйста, объясните смысл добавляемых строк, я не очень силен в SQL и мне бы очень хотелось бы знать смысл их.
...
Рейтинг: 0 / 0
01.05.2003, 11:21
    #32152340
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
С триггерами есть две проблемки.
Первая, которую я к сожелению упустил - обязательно должно быть SET NOCOUNT ON.
Вторая. Если в триггере есть оператор Insert, то он портит переменную @@Identity (значение поля с автоинкрементам для вставленной записи), которую использует Access для определения ключа добавленной записи. Может в 2000-м SQL это не так, но в 7-м точно. Приведенные строчки выше, запоминали это значение и в конце триггера востанавливали. Предложил это сам Microsoft.
...
Рейтинг: 0 / 0
01.05.2003, 11:52
    #32152342
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
2 V. Motchulsky
Как видно из кода тригера - INSERT используется, но вот как избавиться от вышеописанной проблемы???
Можно конечно сдать базу, с введенной в таблицу первой записью, но это избавление от глюка, а его замазывание. К тому же тогда не удается создать форму для ввода данных в таблицу, т.е. которая при откритии не отображает данных в таблице а тольеко осуществляет ввод в нее, т.к. постоянно будет первая запись и, следовательно, постоянно будет ругаться аксес.
Хотелось бы корректно обойти эту проблему, но как?
...
Рейтинг: 0 / 0
01.05.2003, 13:16
    #32152352
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
Обнаружил следующее:

Данная беда происходит только при вводе в одно из полей определенного значения, прти любом другом значении введеном в поле ошибка не наблюдается.
т.е. в поле типа продукции вводим: "видеоплеер" база ругается, вводим телевизор - никаких проблем. Почему?
...
Рейтинг: 0 / 0
01.05.2003, 13:25
    #32152355
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
А теперь ничего не понимаю:
Все заработало, как только изменил id типа продукции, у "видеоплеер" было 1, поменял все, чтоб стало 11, но теперь ничего понять не могу - все работает.
Конечно стало легче, но почему до этого не работало?
...
Рейтинг: 0 / 0
01.05.2003, 15:01
    #32152379
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
> pv
Измени обратно 11 на 1, а то каким то шаманством занимаешся.

Как видно из кода тригера - INSERT используется, но вот как избавиться от вышеописанной проблемы???
Если в таблице в которую вставляются данные не используется счетчик то проблемы не должно быть а если используется то я выше уже писал, перед Insert-ом две строчки и после Inserta две строчки и NOCOUNT ON везде и всегда в триггерах.
...
Рейтинг: 0 / 0
01.05.2003, 15:10
    #32152382
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с вводом данных в представление.
2 V. Motchulsky
Дело не в замене 1 на 11 конкретно, а замене 1 на другой id, а вернее удаления из таблицы типов товаров видеоплеера а затем его повторного ввода, и проблема решилась.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблемы с вводом данных в представление. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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