Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как бы это все реализовать? / 13 сообщений из 13, страница 1 из 1
04.05.2003, 10:38
    #32152810
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
Есть таблица отгрузки товара:
КодОтгрузки, ДатаОтгрузки, кодТовара, Количество, КодРеализатора, КодОплаты, Цена.
таблица ТипОплаты содержит 2 записи: реализация и оплата.
Есть таблица оплачено:
КодОплаты, КодОтгрузки, Количество, Цена.
К слову таблица отгрузка относится один-ко-многим к таблице оплачено.
Есть тригер на вставку, который следит за тем, что если запись в таблицу отгрузке в поле КодОплаты содержит оплачено, то добавляется и запись в таблицу оплачено.
Так вот необходимо при изменении значения "оплачено" КодОплаты таблицы отгрузка на значение "реализация"(на самом деле поле содержит не эти значения а их коды, сопоставляемые из таблицы типОплаты) проверить если в таблице оплат такая запись 1 раз и количество оплаченное совпадает со взятым количеством( т.е. была ошибка при вводе и она исправляется) то удалить запись из таблицы оплачено.
помогите,как это реализовать?
...
Рейтинг: 0 / 0
04.05.2003, 12:33
    #32152824
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
Идей ни у кого нет?????
...
Рейтинг: 0 / 0
05.05.2003, 06:50
    #32152945
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
Нужны идеи.
...
Рейтинг: 0 / 0
05.05.2003, 10:56
    #32153085
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
какие идеи ?

еще один триггер на событие update ...
...
Рейтинг: 0 / 0
05.05.2003, 12:01
    #32153163
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
Написал, но на что-то ругается:

======

CREATE TRIGGER ReceiptsUpd
ON dbo.Receipts
FOR UPDATE
AS

Declare @Idt Int, @s VarChar(50) Set @Idt = @@Identity

IF UPDATE(pay_type) BEGIN
IF(EXISTS(SELECT COUNT(Payments.id) AS S
FROM Payment_type RIGHT OUTER JOIN
UPDATED ON dbo.Payment_type.id = UPDATED.pay_type LEFT OUTER JOIN
dbo.Payments ON UPDATED.id = dbo.Payments.receipt_id
WHERE (dbo.Payment_type.type = 'оплачено')
GROUP BY UPDATED.[count]
HAVING (COUNT(dbo.Payments.id) = 1) AND (SUM(dbo.Payments.[count]) = Receip.[count]))
)
BEGIN
DELETE FROM Payments Where receipt_id in (select id from UPDATED)
END
ELSE
BEGIN

DECLARE @ptype CHAR(20)
SET @ptype = ( SELECT dbo.Payment_type.type FROM UPDATED INNER JOIN
dbo.Payment_type ON UPDATED.pay_type = dbo.Payment_type.id)

IF(@ptype = 'оплачено')BEGIN
INSERT INTO dbo.Payments
([date],
receipt_id,
[count],
price
)
SELECT [date],
[id],
[count],
price
FROM UPDATED
END
END

END

Set @s = 'Select Identity(Int, ' + Cast(@Idt As VarChar(10)) +' ,1) As idt Into #Tmp'
Execute(@s)
...
Рейтинг: 0 / 0
05.05.2003, 12:05
    #32153174
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
Что то надо поправить
...
Рейтинг: 0 / 0
05.05.2003, 12:09
    #32153178
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
2 Лох Позорный
не подскажешь, что?
...
Рейтинг: 0 / 0
05.05.2003, 12:10
    #32153180
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
Уважаемый pv!\r
\r
Тебя Glory в топике /topic/30875 уже спрашивал: "...Кстати ответьте таки мне на вопрос, что за таблица UPDATED у вас фигурирует в запросах ? А?"\r
Если бы ответил на его вопрос, то понял почему "на что-то ругается"
...
Рейтинг: 0 / 0
05.05.2003, 12:17
    #32153186
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
UPDATED - таблица с обновленными записями. ее как раз токи тригером я и пытаюсь обработать, но вот почему то ругается, на срабатывании этого тригера, грит Invalid object name UPDATED, но ведь при проверке синтаксиса Enterprise Maneger об ошибках ничего не сообщил.
...
Рейтинг: 0 / 0
05.05.2003, 12:25
    #32153193
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
В смысле, это стандартная таблица для использования в тригерах, как и INSERTED и DELETED.
...
Рейтинг: 0 / 0
05.05.2003, 12:29
    #32153195
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
из BOL
Код: plaintext
1.
2.
3.
deleted and inserted are logical (conceptual) tables. They are structurally similar to the table on which the trigger is defined, that is, the table on which the user action is attempted, and hold the old values or new values of the rows that may be changed by the user action. For example, to retrieve all values in the deleted table, use: 
SELECT *
FROM deleted


А теперь задача: найти слово "Updated" хотя бы 1 раз.
...
Рейтинг: 0 / 0
05.05.2003, 12:31
    #32153197
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
В смысле, это стандартная таблица для использования в тригерах, как и INSERTED и DELETED.

Ну так если по вашим словам это стандартная таблица, то почему же "сервер ругается". Не поделитесь источником, в которм вы нашли информацию об этой таблице ?

ЗЫ
А EM проверяет именно синтаксис, а не логику.
...
Рейтинг: 0 / 0
05.05.2003, 12:37
    #32153206
pv
pv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бы это все реализовать?
Вот же я дурень, спасибочки, сейчас попробую.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как бы это все реализовать? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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