Конфликт записи при копировании заказа |
With cmd .ActiveConnection = CurrentProject.Connection .CommandText = "CopyOrder" .CommandType = adCmdStoredProc .Parameters.Append .CreateParameter("@fOrder", adInteger, adParamInput, , Me.Ê238;ä199;à234;à231;à) .Parameters.Append .CreateParameter("@fOper", adInteger, adParamInput, , Me.Î239;å240;à242;î240;) .Parameters.Append .CreateParameter("@LastID", adInteger, adParamOutput) .Execute Me.RecordSource = "exec Òîðãîâëÿ_Ñïèñîê_ñ÷åòîâ 'order','" & .Parameters("@LastID") & "'" 'Debug.Print .Parameters("@LastID") End With
ALTER PROCEDURE [dbo].[CopyOrder] @fOrder int, -- код копируемого счета @fOper int, -- код оператора, копирующего счет @LastID int OUTPUT AS BEGIN SET NOCOUNT ON; -- Вставляем строку INSERT INTO dbo.[Учёт заказов] ([КодКлиента], [Дата выписки счёта], [Заметки], [Оператор], [БукваСчёта], [ПроцСкидки], [КодСклада], [СкладОтгрузки], [ОтправкаТК], [ОтправкаЗаСчет], [ОтправкаГород], [ОтправкаАдрес], [ОтправкаКонтЛицо], [ОтправкаТип], Примечение, КодКонтЛица) SELECT dbo.[Учёт заказов].КодКлиента, CONVERT(datetime, GETDATE(), 102) AS [Дата выписки счёта], dbo.[Учёт заказов].Заметки, Oper.Оператор, Oper.БукваСчета, dbo.[Учёт заказов].ПроцСкидки, dbo.[Учёт заказов].КодСклада, dbo.[Учёт заказов].СкладОтгрузки, dbo.[Учёт заказов].ОтправкаТК, dbo.[Учёт заказов].ОтправкаЗаСчет, dbo.[Учёт заказов].ОтправкаГород, dbo.[Учёт заказов].ОтправкаАдрес, dbo.[Учёт заказов].ОтправкаКонтЛицо, dbo.[Учёт заказов].ОтправкаТип, dbo.[Учёт заказов].Примечение, dbo.[Учёт заказов].КодКонтЛица FROM dbo.[Учёт заказов] CROSS JOIN (SELECT Оператор, БукваСчета FROM dbo.Операторы WHERE (Оператор = @fOper)) AS Oper WHERE (dbo.[Учёт заказов].КодЗаказа = @fOrder) -- Получаем id вставленной строки SET @LastID = SCOPE_IDENTITY() -- вставляем позиции в счете INSERT INTO dbo.[Строки заказов] (КодЗаказа, [Код товара], Количество, Скидка, Цена2) SELECT @LastID As КодЗаказа , [Строки заказов].[Код товара], Количество, [Коды скидок].[%скидки] As Скидка, CEILING(((ROUND(dbo.[Перечень товаров].ЦенаРозн0 + dbo.[Перечень товаров].[Цена отп ЕВРО] * dbo.Курс.[Курс ЕВРО] + dbo.[Перечень товаров].[Цена отп $] * dbo.Курс.[Курс $], 0)) * (1 - ISNULL([Коды скидок].[%скидки], 0) / 100)) * (1 + ISNULL(dbo.[Строки заказов].Наценка, 0) / 100)) AS Цена2 FROM dbo.[Строки заказов] INNER JOIN [Перечень товаров] ON [Перечень товаров].[Код товара] = [Строки заказов].[Код товара] INNER JOIN [Учёт заказов] ON [Строки заказов].КодЗаказа = [Учёт заказов].КодЗаказа INNER JOIN Предприятия ON Предприятия.КодПредприятия = [Учёт заказов].КодКлиента LEFT OUTER JOIN [Коды скидок] ON [Коды скидок].ГруппаСкидок = Предприятия.ГруппаСкидок AND [Коды скидок].Тип=[Перечень товаров].Тип CROSS JOIN Курс WHERE [Строки заказов].КодЗаказа=@fOrder UPDATE [Учёт заказов] SET [№счёта]=@LastID WHERE КодЗаказа = @LastID RETURN @LastID END
http://www.sql.ru/forum/1085355/konflikt-zapisi-pri-kopirovanii-zakaza
Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |