Mahrukh Razi Ответов: 2

Запрос обновления в C# .


У меня есть две таблицы запас и счет
Запас SR_NO является FK в счете-фактуре

Я хочу обновить таблицу запасов при сохранении таблицы счетов-фактур

когда количество вводится в счет-фактуру, количество на складе обновляется

Что я уже пробовал:

Обновление T1
Комплект Т1.Кол-Во = Т1.Кол - Т2.Кол-во
Со склада Т1
Внутреннее соединение Т2 G_Invoice
На T1. SR_NO = T2.SR_NO

2 Ответов

Рейтинг:
2

Wendelius

Если я правильно понял вопрос, и вы хотите обновить таблицу запасов независимо от того, как обновляется счет-фактура, я бы предложил рассмотреть триггер. Видеть Создать триггер (Transact-SQL)[^]

С помощью триггера вы можете реагировать на вставку/обновление/удаление счета-фактуры и выполнять необходимые операции для других таблиц, таких как запасы.


Рейтинг:
0

jamuro77

Привет,

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

Это решение, на мой взгляд, более чистое и ремонтопригодное (используйте только один объект для хранения кода), чем использование триггеров, но это зависит от вас.

Псевдокод будет похож на:

CREATE PROCEDURE YourProcedureName
    @param1 -- Your Params
    ...
    @paramN,
    @Quantity
AS
BEGIN
	SET NOCOUNT ON;

    /* Query to insert into G_Invoice */
    insert into G_Invoice 
    values(@param1,..,@paramN,...,@Quantity) /* Set your values */

    /* Query to update Stock */
    SET T1.Qty = T1.Qty - @Quantity
    FROM Stock T1
    INNER JOIN G_Invoice T2
    ON T1.SR_NO = T2.SR_NO
    where /* Set filters according to params */
	
END
GO

Наконец, вы можете вызвать хранимую процедуру из уровня данных access, используя команды SQL, Entity Framework и т. д.