|
|
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
Есть триггер - обновляет вычисляемые поля ------------------------------------------ CREATE TRIGGER TRG_TABLE1 ON dbo.TABLE1 FOR UPDATE AS UPDATE TABLE1 SET F1 = F2 + F3, F 4 = F2-(F3+F1) -------------------------------------------- При редактировании непосредственно в MS SQL - триггер работает исправно..Access ADP же выдает ошибку: "Key column information is unsufficient or incorrect" Таблица не связана с другими таблицами, имеет ключ по первому полю, предположим, П0. Тип поля - bigint Autonumber Когда лючевое поле снимаю - Аксесс вообще блокирует рекордсет Что делать, чтоб Аксесс позволял редактировать таблицу TABLE1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 19:31 |
|
||
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
Выкатывай полный текст триггера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 19:44 |
|
||
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
ALTER TRIGGER TRG_S_SUM_UPDATE ON dbo.S FOR UPDATE AS UPDATE FA_CARD_SERIES SET S_COM_AMOUNT=(S_COUNT* S_DEN * S_C_COM/100), S_T_AMOUNT=S_DEN * S_COUNT, S_AMOUNT=(S_DEN * S_COUNT)-(S_COUNT * S_DEN *S_C_COM/100) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 20:03 |
|
||
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
Ошибся - так верно ALTER TRIGGER TRG_S_SUM_UPDATE ON dbo.S FOR UPDATE AS UPDATE S SET S_COM_AMOUNT=(S_COUNT* S_DEN * S_C_COM/100), S_T_AMOUNT=S_DEN * S_COUNT, S_AMOUNT=(S_DEN * S_COUNT)-(S_COUNT * S_DEN *S_C_COM/100) В SQL Enterprise manager работает В Аксесс - нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 20:08 |
|
||
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
Интересная особенность Я создал простую таблицу с тремя полями, одно из них - обновляемое триггромТак вот, после того, как Аксесс выдаст ошибку о нарушении ключа, он предлагает отменить изменения. Нажимаю отмену..Но потом, при открытии таблицы - мои изменения оказываются сохраненными Что же делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 20:13 |
|
||
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
может set nocount on поможет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 09:54 |
|
||
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
Не помогает Логически, после апдейта записи, даже Enterprise Manager тоже ругается, ссылаясь на уже обновленный рекордсеи Думаю, что аксесс видит уже обновленный рекордсет и поэтому считает, что запись не вписывается в условия ключевого поля. Может, кто-то знает, как обмануть Аксесс. Неужели никто никогда не работал в аксессе с триггерами на апдейт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 12:55 |
|
||
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
Работали и все нормально. Стандартные методы против таких сообщений: - в начало триггера set nocount on - на форме однозначная таблица и строка синхронизации Но если ключевое поле счетчик, тогда возможны проблемы с тем, что триггер не правильно определяет номер счетчика, соответственно идет ошибка. Эта проблема уже обсуждалась - сделали немного корявое решение кажется через переменную, или что-то в этом роде. Поищи по форуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 13:06 |
|
||
|
Access и ТРИГГЕРЫ
|
|||
|---|---|---|---|
|
#18+
если изменяешь данные в форме то сделай следующее 1. обязательно включи в источник данных примари кей таблицы 2 пропиши в строке синхронизации select * from таблица_которая_обновляется where ID = ? ID в примере имя поля примари кей или select * from (таблица_которая_обновляется) where ID = ? синтаксис неправильный но работает или select * from таблица_которая_обновляется with (nolock) where ID = ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 13:19 |
|
||
|
|

start [/forum/search_topic.php?author=OraAdo&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 653ms |
| total: | 869ms |

| 0 / 0 |
