Почему Access не выдает ошибку

NadyaT
Дата: 19.11.2009 16:14:58
Может кто знает как сделать так, чтобы когда триггер не пропускает изменения в таблице (MS SQL 2005) в ACCESS 2002 выдавалось сообщение об ошибке.
Если изменять данные через Management Studio, то триггер выдает сообщение о причине невозможности изменения, на форме данные меняются но изменения сохранить невозможно и ни одного сообщения не возникает, форма "зависает". С SQL 2000 такой ошибки не возникает:(
vladK
Дата: 19.11.2009 18:18:38
Нужны уточнения
1. Сервера стоят на одном и том же ПК?
2. Изменения сохраняются вручную в результате редактирования формы или в коде принудительно (Me.Dirty=False / DoCmd.RunCommand acCmdSaveRecord). Или может Execute "Insert ..." ?
3.Form_Error что то ловит?
VladimirKr
Дата: 20.11.2009 09:39:47
NadyaT
Может кто знает как сделать так, чтобы когда триггер не пропускает изменения в таблице (MS SQL 2005) в ACCESS 2002 выдавалось сообщение об ошибке.
Если изменять данные через Management Studio, то триггер выдает сообщение о причине невозможности изменения, на форме данные меняются но изменения сохранить невозможно и ни одного сообщения не возникает, форма "зависает". С SQL 2000 такой ошибки не возникает:(


Странно. Стандартное сообщение должно быть что-то типа "транзакция прервана в триггере". Текст триггера посмотреть можно?
NadyaT
Дата: 24.11.2009 13:53:38
vladK
Нужны уточнения
1. Сервера стоят на одном и том же ПК?
2. Изменения сохраняются вручную в результате редактирования формы или в коде принудительно (Me.Dirty=False / DoCmd.RunCommand acCmdSaveRecord). Или может Execute "Insert ..." ?
3.Form_Error что то ловит?


1.Нет;
2.Вручную в результате редактирования формы;
3.Нет.
NadyaT
Дата: 24.11.2009 14:28:30
VladimirKr,

Например, есть таблица и триггер

GO


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Table_1](
[a1] [nchar](10) NOT NULL,
[a2] [nchar](10) NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[a1] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO



SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER dbo.test_1_IUD
ON dbo.Table_1
AFTER INSERT,DELETE,UPDATE
AS
BEGIN

SET NOCOUNT ON

RAISERROR ('Ошибка. ',16,1)
ROLLBACK TRANSACTION
return
END
GO

Если в SQL вводить данные, то выдает сообщение об триггере, но если вводить или изменять данные в Access 2002, то ошибки не выдает. Что делать (((.

Может в Sql 2005 и Access 2002 конфликт?
VladimirKr
Дата: 24.11.2009 15:04:20
NadyaT,

У меня

Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Express Edition with Advanced Services on Windows NT 5.1 (Build 2600: Service Pack 3)

MS Access 2003 SP3 (11.8204.8172)

Ошибку выдает.

Похоже, версия акса 2002 делает по другому.
NadyaT
Дата: 24.11.2009 15:54:43
VladimirKr,

У меня

Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005
00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Developer
Edition on Windows NT 5.2 (Build 3790: Service Pack 2) ...
Павел Фурсов
Дата: 25.11.2009 22:56:49
NadyaT
Может кто знает как сделать так, чтобы когда триггер не пропускает изменения в таблице (MS SQL 2005) в ACCESS 2002 выдавалось сообщение об ошибке.

Отказаться от ADP.
Связка MS SQL 2000 и Access 2003 у меня тоже не хотела ошибки показывать.

Сейчас использую исключительно MDB, запросы к серверу и прилинкованные таблицы для редактирования данных. ODBC рулит.

Даже Microsoft сама не рекомендует использования проектов ADP и всяческими силами хочет убрать поддержку в будущих версиях Access.

С уважением,
Павел