|
|
|
я не прав?
|
|||
|---|---|---|---|
|
#18+
Существует база в MS SQL Server 2000, клиенты написаны в MS ACCESS 2000. Сделаал на спех такую страшную вещь - связал клиентское приложение с таблицами на сервере, через ODBC источник, одной из рабочих форм указал Источник записей - "Таблица на сервере", т.е. таблица к которой обращаюсь через ODBC. Данные вставляются как пологается, но если необходимо изменить что нибудь в вставленной только что записи возникает сообщение: "Пока вы правили эту запись, она была изменена другим пользователем. Если сохранить запись, исправления другого пользователя будут потеряны. Копирование исправлений в буфер позволит просмотреть изменения, внесенные другим пользователем, а затем, при необходимости, вставить свои исправления обратно.". И три кнопки "Сохранить запись", "Копировать в буфер", "Отменить изменения" при чем кнопка "Сохранить запись" enable = false т.е. не доступна. Работают с этой таблицей 20 операторов, причем каждый бегает только по своим записям, поэтому "другой пользователь" отпадает. На сервере в ручную все исправляется как и пологается без каких либо сообщений. Утаблицы есть три триггера Instead of Inseart, Instead of Update и For Delete. Помогите кто может что подправить, а что изменить, в чем я неправ. Большое спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2003, 12:46 |
|
||
|
я не прав?
|
|||
|---|---|---|---|
|
#18+
Скорее всего виноваты триггеры. У меня было тоже самое пока в триггерах не убрал из условий запросов на UPDATE , INSERT и DELETE ссылки на inserted и deleted Пришлось сначала скопировать из них нужные данные в временную таблицу SELECT inserted.ID,inserted.Status , deleted.Status AS OldStatus,inserted.AO_ID INTO #TmpInsDel_tbl FROM inserted INNER JOIN deleted ON inserted.ID=deleted.ID и потом использовать ее там где раньше использовал inserted и deleted UPDATE dbo.PL_UpdAO_v SET KA_ID_Plat = KA_ID_Plat_New, Vlt_ID_rsch =Vlt_ID_rsch_New, KV_ID_rsch =KV_ID_rsch_New , KV_Kurs_rsch =KV_Kurs_rsch_New , RBT_ID = CASE WHEN Doc_ID=6 THEN RBT_ID_New ELSE RBT_ID END ,Doc_ID_Old=Doc_ID+1 WHERE AO_ID IN (SELECT ID FROM #TmpInsDel_tbl) причем имя пременной таблице должно быть уникальным для базы иначе если триггер запустится изза действий процедуры в которой есть временная таблица с таким же названием то будут проблеммы и будет довольно сложно понять из-за чего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2003, 15:33 |
|
||
|
я не прав?
|
|||
|---|---|---|---|
|
#18+
спасибо Шайтан я перешел на C++Builder 6, все глюки пропали больше за ACCESS браться не буду, разве что делаая локальную базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 13:54 |
|
||
|
я не прав?
|
|||
|---|---|---|---|
|
#18+
2 Шайтан Наверно достаточно было в триггер поставить Set nocount On ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 14:01 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32201968&tid=1680680]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 181ms |
| total: | 283ms |

| 0 / 0 |
