mam problem z konwersją pola trn_data2 na bardziej przyjazny format wewnątrz triggera.
podczas użycia convert(varchar(10), dateadd(dd, trn_data2, '1800-12-28'), 121) XL zwraca coś takiego w momencie wywołania triggera:
Kod: Zaznacz cały
błąd 120
Szczegóły operacji:
Operacja zmiany obiektu TraNag o identyfikatorze (2033:579329:66250:0).
Identyfikator operacji: Zapisz_TraNag-14.
Błąd: Konwersja typu danych varchar na typ danych datetime spowodowała utworzenie wartości leżącej poza zakresem. (22008), Konwersja typu danych varchar na typ danych datetime spowodowała utworzenie wartości leżącej poza zakresem..ktoś coś może poradzić z tym fantem?
cały trigger poniżej. xl w wersji 2014.6.3, mssql 2012
Kod: Zaznacz cały
USE [XXX]
GO
/****** Object: Trigger [CDN].[XXXX] Script Date: 2014-01-21 20:47:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [CDN].[XXXXXX]
ON [CDN].[TraNag]
FOR UPDATE, INSERT
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE(TrN_Stan)
BEGIN
-- deklaracja zmiennych do maila
DECLARE @RaportHTML varchar(max)
DECLARE @temat varchar(max)
SET @RaportHTML = ''
-- deklaracja zmiennych potrzebnych do ustalenia
-- czy trigger powinien zadziałać
DECLARE @trn_gidnumer int
DECLARE @trn_gidtyp int
DECLARE @sposob_dostawy varchar(255)
DECLARE @knt_gidnumer int
DECLARE @trn_stan int
DECLARE @knt_docelowy int
DECLARE @aktualny_stan int
DECLARE @ilosc int
DECLARE @ilosc_spietych int
DECLARE @spinacz int
DECLARE @kurier varchar(255)
DECLARE @numer_listu varchar(255)
DECLARE @data_sprzedazy VARCHAR(10)
DECLARE @termin_platnosci VARCHAR(10)
DECLARE @nr_faktury VARCHAR(50)
DECLARE @akronim_kontrahenta VARCHAR(255)
DECLARE @nazwa_kontrahenta VARCHAR(255)
DECLARE @netto decimal(10,2)
DECLARE @brutto decimal(10,2)
DECLARE @forma_platnosci VARCHAR(100)
DECLARE @trn_data2 int
SELECT
@trn_gidnumer = trn_gidnumer,
@sposob_dostawy = trn_sposobdostawy,
@knt_gidnumer = trn_kntnumer,
@trn_stan = trn_stan,
@trn_gidtyp = trn_gidtyp,
@knt_docelowy = trn_kndnumer,
@trn_data2 = trn_data2
FROM
inserted
if @sposob_dostawy <> 'x' AND @sposob_dostawy <> ''
begin
SET @RaportHTML = @RaportHTML + 'Wejście 1'
if @trn_stan in (0, 1, 2, 3) and @trn_gidtyp in (2033, 2034, 2037)
begin
SET @RaportHTML = ' Wejście 2'
SELECT @aktualny_stan = trn_stan FROM CDN.TraNag WHERE trn_gidnumer = @trn_gidnumer
if @aktualny_stan = 3
begin
SET @RaportHTML = ' Wejście 3'
SELECT @ilosc_spietych = COUNT(*) FROM CDN.TraNag WHERE Trn_spinumer = @trn_gidnumer
if @ilosc_spietych > 0
begin
-- spinacz
SELECT @spinacz = trn_gidnumer FROM CDN.TraNag WHERE TrN_SpiNumer = @trn_gidnumer
end
else
begin
-- brak spinacza
SELECT @spinacz = trn_gidnumer FROM CDN.TraNag WHERE Trn_gidnumer = @trn_gidnumer
end
SELECT @ilosc = COUNT(*) from cdn.traelem
WHERE tre_gidnumer = @spinacz
AND cdn.bgrupatwrpien(TrE_TwrNumer) = 4632
IF @ilosc > 0
BEGIN
SET @RaportHTML = 'Wejście 4'
-- ustawiamy temat wiadomości e-mail
SELECT
@kurier = Atr_Wartosc
from cdn.TraNag a JOIN cdn.atrybuty b ON a.trn_gidnumer = b.atr_obinumer
WHERE
TrN_KntNumer = @knt_gidnumer
AND Atr_AtkId = 8
AND TrN_GIDNumer = @trn_gidnumer
-- pobierz informacje o numerze listu przewozowego
SELECT
@numer_listu = Atr_Wartosc
from
cdn.tranag a JOIN cdn.atrybuty b ON a.trn_gidnumer = b.atr_obinumer
WHERE
TrN_KntNumer = @knt_gidnumer
AND Atr_AtkId = 7
AND TrN_GIDNumer = @trn_gidnumer
SELECT
@nr_faktury = TrN_DokumentObcy
from
cdn.tranag
WHERE
TrN_GIDNumer = @trn_gidnumer
SELECT
@akronim_kontrahenta = knt_akronim
from
cdn.tranag, cdn.kntkarty
WHERE
TrN_GIDNumer = @trn_gidnumer
AND knt_gidnumer = TrN_KntNumer
SELECT
@nazwa_kontrahenta = Knt_Nazwa1
from
cdn.tranag, cdn.kntkarty
WHERE
TrN_GIDNumer = @trn_gidnumer
AND knt_gidnumer = TrN_KntNumer
SELECT
@netto = TrN_NettoR
from
cdn.tranag
WHERE
TrN_GIDNumer = @trn_gidnumer
SELECT
@brutto = TrN_NettoR*1.23
from
cdn.tranag
WHERE
TrN_GIDNumer = @trn_gidnumer
SELECT
@data_sprzedazy = convert(varchar(10), dateadd(dd, @trn_data2, '1800-12-28'), 121)
SELECT
@forma_platnosci = TrN_FormaNazwa
from
cdn.tranag
WHERE
TrN_GIDNumer = @trn_gidnumer
SET @temat = 'Powiadomienie o wystawieniu faktury nr '+ @nr_faktury
SET @RaportHTML = ''
SET @RaportHTML = @RaportHTML + 'Numer dokumentu: <strong>' + @nr_faktury + '</strong><br />'
SET @RaportHTML = @RaportHTML + 'Akronim kontrahenta: <strong>' + @akronim_kontrahenta + '</strong><br />'
SET @RaportHTML = @RaportHTML + 'Nazwa kontrahenta: <strong>' + @nazwa_kontrahenta + '</strong><br />'
SET @RaportHTML = @RaportHTML + 'Kwota netto: <strong>' + CONVERT(VARCHAR, @netto) + '</strong><br />'
SET @RaportHTML = @RaportHTML + 'Kwota brutto: <strong>' + CONVERT(VARCHAR, @brutto) + '</strong><br />'
SET @RaportHTML = @RaportHTML + 'Data wystawienia: <strong>' + CONVERT(VARCHAR, @data_sprzedazy) + '</strong><br />'
SET @RaportHTML = @RaportHTML + 'Forma płatności: <strong>' + @forma_platnosci + '</strong><br />'
--SET @RaportHTML = @RaportHTML + 'Termin płatności: <strong>' + @termin_platnosci + '</strong><br />'
-- wysyłka powiadomienia
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'test',
@recipients = 'costam@xyz.pl',
@subject = @temat,
@body = @RaportHTML,
@body_format = 'HTML'
END
end
end
end
END
END