在visual basic app中显示SQL消息

时间:2017-07-20 10:58:03

标签: sql-server visual-studio

嘿所以我有这个触发器:

CREATE TRIGGER [dbo].[atbl_Sales_OrdersLines_ITrigGG]
    ON [dbo].[atbl_Sales_OrdersLines]
    FOR INSERT
    AS 
    BEGIN
        IF (exists (select 1 from (
            select x.ProductId, totalOrdersQty, ISNULL(asp.Quantity, 0) PossibleQty from (
                select i.ProductId, sum(aso.Amount) totalOrdersQty 
                from (select distinct ProductId from inserted) i
                join atbl_Sales_OrdersLines aso on aso.ProductId = i.ProductId
                group by i.ProductId) x
            left join atbl_Sales_ProductS asp on asp.ProductId = x.ProductId
            ) x
            where PossibleQty < totalOrdersQty)) 
		BEGIN
            RAISERROR ('Quantity is not sufficient' ,10,1)
            ROLLBACK TRANSACTION
        END
    END

触发器有效。当我尝试插入时 - 它在SQL Server管理器中显示错误消息。但是,在visual basic app中我也会收到错误,但弹出窗口中不显示该消息。

另一件事,关于如何在该消息中显示产品名称(缺少数量)的任何想法。

感谢。

2 个答案:

答案 0 :(得分:0)

您需要在Visual Basic中捕获SQL Error内部异常并将其显示在弹出窗口中。

要显示产品的名称,可以使用SELECT 1 FROM (...查询中的子查询,并将ProductName添加到选择列表以填充变量,然后在RAISERROR字符串中使用该变量。如果有多个产品缺少数量,您需要决定您想要做什么。

答案 1 :(得分:0)

尝试在try...catch结构中封装APP中插入的执行,您将能够显示消息