|
|
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
Проект 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 предлагает мне сохранить запись либо копировать ее в буфер либо отменить изменения. После сохранения вышеописанный диалог не исчезает, а после закрытия таблицы и повторного ее открытия новая запись уже существует в таблице, после чего все новые записи вводятся без проблем. Что это может быть и как это исправить? а то уж с ругательствами вводить первую запись как-то не серьезно!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 14:13 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
команда синхронизации см. help ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 15:24 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
2 Хам трамвайный Почему тогда это происходит лишь при вводе первой записи в таблицу, по которой пишется представление, а после того, как запись уже существует она не ругается, а отображает все правильно. К тому же это происходит не только в режиме формы, но и если открыть представление напрямую, в режиме "запрос"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 17:34 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
Вопрос к pv Ты в курсе как работают триггеры(когда срабатывают, что используют в качестве идентефикатора при срабатывания триггера ) >К тому же это происходит не только в режиме формы, но и если открыть представление напрямую, в режиме "запрос"? Тригер когда срабатывает ему всеравно как ты к таблице ломишся хоть через форму хоть через запрос напрямую, он реагирует на то что творится в таблице!!!! Читай хелп триггеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 18:22 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
2 alexkov как работают тригеры я в курсе, и если бы он всегда работал не правильно, но это происходит лишь в случае внесения первой записи в таблицу, в дальнейшем же как закроешь-откроешь таблицу, чтобы первая запись в ней появилась ввод данных в таблицу происходит без всяких проблем абсолютно правильно, вот почему это происходит именно при вводе первой записи я понять не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 18:37 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
не знаю как тебе объяснить суть проблемы (в уме понимаю как выразить не знаю :-) ) Слелай экспиремент добавивь триггер условие типа если таблица пустая, т.е кол-во записей = 0 ничего не делать в противном случае выполнить. Думаю должно попустить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 19:15 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
>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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2003, 00:28 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
2 V. Motchulsky Как то я это уже делал, кстати, по вашему же совету, но никаких изменений, все происходит по тому же принципу, на вводд первой записи в таблицу аксес ругается, далее все нормально. да, и , пожалуйста, объясните смысл добавляемых строк, я не очень силен в SQL и мне бы очень хотелось бы знать смысл их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2003, 09:37 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
С триггерами есть две проблемки. Первая, которую я к сожелению упустил - обязательно должно быть SET NOCOUNT ON. Вторая. Если в триггере есть оператор Insert, то он портит переменную @@Identity (значение поля с автоинкрементам для вставленной записи), которую использует Access для определения ключа добавленной записи. Может в 2000-м SQL это не так, но в 7-м точно. Приведенные строчки выше, запоминали это значение и в конце триггера востанавливали. Предложил это сам Microsoft. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2003, 11:21 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
2 V. Motchulsky Как видно из кода тригера - INSERT используется, но вот как избавиться от вышеописанной проблемы??? Можно конечно сдать базу, с введенной в таблицу первой записью, но это избавление от глюка, а его замазывание. К тому же тогда не удается создать форму для ввода данных в таблицу, т.е. которая при откритии не отображает данных в таблице а тольеко осуществляет ввод в нее, т.к. постоянно будет первая запись и, следовательно, постоянно будет ругаться аксес. Хотелось бы корректно обойти эту проблему, но как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2003, 11:52 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
Обнаружил следующее: Данная беда происходит только при вводе в одно из полей определенного значения, прти любом другом значении введеном в поле ошибка не наблюдается. т.е. в поле типа продукции вводим: "видеоплеер" база ругается, вводим телевизор - никаких проблем. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2003, 13:16 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
А теперь ничего не понимаю: Все заработало, как только изменил id типа продукции, у "видеоплеер" было 1, поменял все, чтоб стало 11, но теперь ничего понять не могу - все работает. Конечно стало легче, но почему до этого не работало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2003, 13:25 |
|
||
|
Проблемы с вводом данных в представление.
|
|||
|---|---|---|---|
|
#18+
> pv Измени обратно 11 на 1, а то каким то шаманством занимаешся. Как видно из кода тригера - INSERT используется, но вот как избавиться от вышеописанной проблемы??? Если в таблице в которую вставляются данные не используется счетчик то проблемы не должно быть а если используется то я выше уже писал, перед Insert-ом две строчки и после Inserta две строчки и NOCOUNT ON везде и всегда в триггерах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2003, 15:01 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32152352&tid=1681656]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 314ms |

| 0 / 0 |
