powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Работа с представлением в Access + MS SQL
5 сообщений из 5, страница 1 из 1
Работа с представлением в Access + MS SQL
    #39662031
volt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Имеется следующая проблема:
В MS SQL создал представление:
Код: sql
1.
2.
3.
4.
5.
6.
Create view dbo.[ПП_ПокупныеВПланеОптимиз] with view_Metadata
as
SELECT top 999999999999 План.НомЗап, ПланДог.МГ, НомДогОб.КодДог, ПланДог.НомПП, НомДогОб.ПроцОпл, СКЗпоДог.НомСКЗ, НомДогОб.НомДог, СКЗпоДог.Дог_СКЗ, СКЗпоДог.ДатаВПлан, ПланДог.ДатаОтгрЖелат, Ассортимент.КодИздел, Ассортимент.НаименПолн, Ассортимент.Наимен, План.Колво, Ассортимент.ТипИзд, ПокупнДоп1.Дата, ПокупнДоп1.ПРимечан, ПокупнДоп1.Выполнено
FROM ((СКЗпоДог RIGHT JOIN ПланДог ON СКЗпоДог.НомСКЗ = ПланДог.СКЗ) LEFT JOIN НомДогОб ON СКЗпоДог.КодДог = НомДогОб.КодДог) LEFT JOIN ((План LEFT JOIN Ассортимент ON План.Изделие = Ассортимент.КодИздел) LEFT JOIN ПокупнДоп1 ON План.НомЗап = ПокупнДоп1.СвПлан) ON ПланДог.НомПП = План.СвНомПП
WHERE (((ПланДог.МГ)>98) AND ((Ассортимент.ТипИзд)=8 Or (Ассортимент.ТипИзд)=12 Or (Ассортимент.ТипИзд)=13 Or (Ассортимент.ТипИзд)=19 Or (Ассортимент.ТипИзд)=18 Or (Ассортимент.ТипИзд)=20 Or (Ассортимент.ТипИзд)=21) AND ((ПланДог.ВидПлана)=1)) OR (((Ассортимент.Наимен) Like '*СЗТ углекислотой*'))
ORDER BY ДатаВПлан DESC



Для данного представления был создан триггер
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Create TRIGGER [dbo].[Update_ПП_ПокупныеВПланеОптимиз] on [dbo].[ПП_ПокупныеВПланеОптимиз]
INSTEAD OF Update
AS
BEGIN
	Update d set
		[Выполнено] = i.[Выполнено],
		[Дата] = i.[Дата],
		[ПРимечан] = i.[Примечан]
	From inserted i join dbo.[ПокупнДоп] d on d.СвПлан = i.НомЗап where i.НомЗап in (select СвПлан from ПокупнДоп)

	insert into [ПокупнДоп] (СвПлан, Выполнено, Дата, ПРимечан) select НомЗап, Выполнено, Дата, примечан from inserted where
	   inserted.НомЗап not in (select СвПлан from ПокупнДоп)

END;
GO



Данный триггер должен обновлять только поля таблицы Покупндоп.

Подключаю данное представление к Access, через ODBC. При попытке изменить значение поля Дата выдается ошибка: Конфилкт записи. Что я делаю не так?

Заранее спасибо.
...
Рейтинг: 0 / 0
Работа с представлением в Access + MS SQL
    #39662078
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем смысл top 999999999999?
...
Рейтинг: 0 / 0
Работа с представлением в Access + MS SQL
    #39662304
volt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin,

Иначе order by не работает для представления.
...
Рейтинг: 0 / 0
Работа с представлением в Access + MS SQL
    #39662426
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volt, а разве в ms sql view - не таблица с правом только на чтение?
...
Рейтинг: 0 / 0
Работа с представлением в Access + MS SQL
    #39662447
volt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин,

представление можно модифицировать, если существует для них триггеры Instead of insert, delete, update/
Если представление обычное, т.е. не объединяет несколько таблиц, то можно обойтись и без триггеров.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Работа с представлением в Access + MS SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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