W załączeniu ...
--
Marek Paliwoda
[EMAIL PROTECTED]
--**************************************************
--**************************************************
--**************************************************
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[CSMS_Frm_OnUpd]')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[CSMS_Frm_OnUpd]
GO
--++++++++++++++++++++++++++++++++++++++++++++++++++
/*
CREATE TRIGGER CSMS_Frm_OnUpd ON dbo.K0_KatalogFirm
FOR UPDATE AS
BEGIN
INSERT INTO CSMS_K0_KatalogFirm
( idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
kodPocztowy, miejscowosc, ulica, nrDomu,
kodPocztowy1, miejscowosc1, ulica1, nrDomu1,
kodOperacji )
SELECT
I.idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
A.kodPocztowy, M.miejscowosc, A.ulica, A.nrDomu,
B.kodPocztowy, N.miejscowosc, B.ulica, B.nrDomu,
'U'
FROM inserted I INNER JOIN ( K0_Adres A INNER JOIN A0_Miejscowosc M
ON M.idMiejscowosci=A.idMiejscowosc
) ON A.idFirmy=I.idFirmy AND A.typAdresu=1
LEFT JOIN ( K0_Adres B INNER JOIN A0_Miejscowosc N
ON N.idMiejscowosci=B.idMiejscowosc
) ON B.idFirmy=I.idFirmy AND B.typAdresu=2
END
*/
--GO
--++++++++++++++++++++++++++++++++++++++++++++++++++
exec sp_settriggerorder 'CSMS_Frm_OnUpd', @order='last', @stmttype = 'UPDATE'
--**************************************************
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[CSMS_Adr_OnIns]')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[CSMS_Adr_OnIns]
GO
CREATE TRIGGER CSMS_Adr_OnIns ON dbo.K0_Adres
FOR INSERT AS
BEGIN
DECLARE @IDFrm INTEGER
DECLARE @Skrot VARCHAR(40)
DECLARE @Nazwa VARCHAR(200)
DECLARE @Nip CHAR(13)
DECLARE @Regon CHAR(20)
DECLARE @KodPcz CHAR(6)
DECLARE @Miejsc VARCHAR(50)
DECLARE @Ulica VARCHAR(30)
DECLARE @NrDom VARCHAR(10)
DECLARE @KodPc1 CHAR(6)
DECLARE @Miejs1 VARCHAR(50)
DECLARE @Ulic1 VARCHAR(30)
DECLARE @NrDo1 VARCHAR(10)
DECLARE @Oper CHAR(1)
DECLARE @IDCsms INTEGER
-- Wstawienie rekordu wynikaj¥cego z typuAdresu=1
-- (mo¾e by "I" lub "U" - zale¾nie jaka bya op.)
DECLARE genCSMS CURSOR LOCAL FAST_FORWARD FOR
SELECT
I.idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
I.kodPocztowy, M.miejscowosc, I.ulica, I.nrDomu,
B.kodPocztowy, N.miejscowosc, B.ulica, B.nrDomu,
'I'
FROM inserted I
INNER JOIN A0_Miejscowosc M
ON M.idMiejscowosci=I.idMiejscowosc
INNER JOIN (
K0_KatalogFirm F
LEFT JOIN (
K0_Adres B
INNER JOIN A0_Miejscowosc N
ON N.idMiejscowosci=B.idMiejscowosc
) ON B.idFirmy=F.idFirmy AND B.typAdresu=2
) ON F.idFirmy=I.idFirmy
WHERE I.typAdresu=1
OPEN genCSMS
WHILE 1 = 1
BEGIN
FETCH NEXT FROM genCSMS INTO
@IDFrm, @Skrot, @Nazwa, @Nip,
@Regon, @KodPcz, @Miejsc, @Ulica,
@NrDom, @KodPc1, @Miejs1, @Ulic1,
@NrDo1, @Oper
IF @@FETCH_STATUS <> 0 BREAK
--+++++++++++++++++++++++++++++++++++++++++
/*
-- Czy ju¾ czasami nie mamy tego rekordu ?
SET @IDCsms = null
SELECT @IDCsms=IDcsmsKF
FROM CSMS_K0_KatalogFirm
WHERE idFirmy = @IDFrm
AND kodOperacji = 'I'
-- Nie - nie mamy
IF @IDCsms IS null
INSERT INTO CSMS_K0_KatalogFirm (
idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
kodPocztowy, miejscowosc, ulica, nrDomu,
kodPocztowy1, miejscowosc1, ulica1, nrDomu1,
kodOperacji
) VALUES (
@IDFrm, @Skrot, @Nazwa, @Nip, @Regon,
@KodPcz, @Miejsc, @Ulica, @NrDom,
@KodPc1, @Miejs1, @Ulic1, @NrDo1,
@Oper
)
-- Tak - ju¾ mamy
ELSE
UPDATE CSMS_K0_KatalogFirm SET
krotkaNazwa = @Skrot,
pelnaNazwa = @Nazwa,
nip = @Nip,
regon = @Regon,
kodPocztowy = @KodPcz,
miejscowosc = @Miejsc,
ulica = @Ulica,
nrDomu = @NrDom,
kodPocztowy1 = @KodPc1,
miejscowosc1 = @Miejs1,
ulica1 = @Ulic1,
nrDomu1 = @NrDo1,
Pobrano = null
WHERE IDcsmsKF = @IDCsms
*/
INSERT INTO CSMS_K0_KatalogFirm (
idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
kodPocztowy, miejscowosc, ulica, nrDomu,
kodPocztowy1, miejscowosc1, ulica1, nrDomu1,
kodOperacji
) VALUES (
@IDFrm, @Skrot, @Nazwa, @Nip, @Regon,
@KodPcz, @Miejsc, @Ulica, @NrDom,
@KodPc1, @Miejs1, @Ulic1, @NrDo1,
@Oper
)
END
CLOSE genCSMS
DEALLOCATE genCSMS
--*********************************************
-- Wszystkie operacje na typieAdresu=2 traktujemy jak "U"
INSERT INTO CSMS_K0_KatalogFirm
( idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
kodPocztowy, miejscowosc, ulica, nrDomu,
kodPocztowy1, miejscowosc1, ulica1, nrDomu1,
kodOperacji )
SELECT
I.idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
B.kodPocztowy, N.miejscowosc, B.ulica, B.nrDomu,
I.kodPocztowy, M.miejscowosc, I.ulica, I.nrDomu,
'U'
FROM inserted I
INNER JOIN A0_Miejscowosc M
ON M.idMiejscowosci=I.idMiejscowosc
INNER JOIN (
K0_KatalogFirm F
INNER JOIN K0_Adres B ON B.idFirmy=F.idFirmy AND B.typAdresu=1
INNER JOIN A0_Miejscowosc N ON N.idMiejscowosci=B.idMiejscowosc
) ON F.idFirmy=I.idFirmy
WHERE I.typAdresu=2
END
GO
--++++++++++++++++++++++++++++++++++++++++++++++++++
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[CSMS_Adr_OnUpd]')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[CSMS_Adr_OnUpd]
GO
CREATE TRIGGER CSMS_Adr_OnUpd ON dbo.K0_Adres
FOR UPDATE AS
BEGIN
INSERT INTO CSMS_K0_KatalogFirm
( idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
kodPocztowy, miejscowosc, ulica, nrDomu,
kodPocztowy1, miejscowosc1, ulica1, nrDomu1,
kodOperacji )
SELECT DISTINCT
I.idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
I.kodPocztowy, M.miejscowosc, I.ulica, I.nrDomu,
B.kodPocztowy, N.miejscowosc, B.ulica, B.nrDomu,
'U'
FROM inserted I
INNER JOIN A0_Miejscowosc M
ON M.idMiejscowosci=I.idMiejscowosc
INNER JOIN (
K0_KatalogFirm F
LEFT JOIN (
K0_Adres B
INNER JOIN A0_Miejscowosc N
ON N.idMiejscowosci=B.idMiejscowosc
) ON B.idFirmy=F.idFirmy AND B.typAdresu=2
) ON F.idFirmy=I.idFirmy
WHERE I.typAdresu=1
END
GO
--++++++++++++++++++++++++++++++++++++++++++++++++++
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[CSMS_Adr_OnDel]')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[CSMS_Adr_OnDel]
GO
CREATE TRIGGER CSMS_Adr_OnDel ON dbo.K0_Adres
FOR DELETE AS
BEGIN
INSERT INTO CSMS_K0_KatalogFirm
( idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
kodPocztowy, miejscowosc, ulica, nrDomu,
kodPocztowy1, miejscowosc1, ulica1, nrDomu1,
kodOperacji )
SELECT
I.idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
B.kodPocztowy, N.miejscowosc, B.ulica, B.nrDomu,
I.kodPocztowy, M.miejscowosc, I.ulica, I.nrDomu,
'U'
FROM deleted I
INNER JOIN A0_Miejscowosc M
ON M.idMiejscowosci=I.idMiejscowosc
INNER JOIN (
K0_KatalogFirm F
INNER JOIN K0_Adres B ON B.idFirmy=F.idFirmy AND B.typAdresu=1
INNER JOIN A0_Miejscowosc N ON N.idMiejscowosci=B.idMiejscowosc
) ON F.idFirmy=I.idFirmy
WHERE I.typAdresu=2
AND NOT EXISTS (
SELECT idFirmy FROM deleted J
WHERE J.idFirmy = I.idFirmy
AND J.typAdresu=1
)
INSERT INTO CSMS_K0_KatalogFirm
( idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
kodPocztowy, miejscowosc, ulica, nrDomu,
kodPocztowy1, miejscowosc1, ulica1, nrDomu1,
kodOperacji )
SELECT DISTINCT
I.idFirmy, krotkaNazwa, pelnaNazwa, nip, regon,
I.kodPocztowy, M.miejscowosc, I.ulica, I.nrDomu,
B.kodPocztowy, N.miejscowosc, B.ulica, B.nrDomu,
'D'
FROM deleted I
INNER JOIN A0_Miejscowosc M
ON M.idMiejscowosci=I.idMiejscowosc
INNER JOIN (
K0_KatalogFirm F
LEFT JOIN (
K0_Adres B
INNER JOIN A0_Miejscowosc N
ON N.idMiejscowosci=B.idMiejscowosc
) ON B.idFirmy=F.idFirmy AND B.typAdresu=2
) ON F.idFirmy=I.idFirmy
WHERE I.typAdresu=1
END
GO
--++++++++++++++++++++++++++++++++++++++++++++++++++
exec sp_settriggerorder 'CSMS_Adr_OnIns', @order='last', @stmttype = 'INSERT'
exec sp_settriggerorder 'CSMS_Adr_OnUpd', @order='last', @stmttype = 'UPDATE'
exec sp_settriggerorder 'CSMS_Adr_OnDel', @order='last', @stmttype = 'DELETE'
--**************************************************
--**************************************************
--**************************************************
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[CSMS_Zlc_OnIns]')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[CSMS_Zlc_OnIns]
GO
CREATE TRIGGER CSMS_Zlc_OnIns ON dbo.Z0_Zlecenia
FOR INSERT AS
BEGIN
-- wstawiamy wszystkie zapisy 'I' nawet dla tych, kt¢rzy ju¾ s¥
INSERT INTO CSMS_Z0_Zlecenia
( nrZlecenia, dataOd, dataDo, dataRejZlecenia, trescZlecWgNabywcy,
trescZlecWgWystawcy, idNabywca, idZleceniodawca, idOdbiorca,
kodOsrodka, kodDzialu, kodOddzialu, kodOperacji, zamowienie )
SELECT
I.nrZlecenia, I.dataOd, I.dataDo, I.dataRejZlecenia, I.trescZlecWgNabywcy,
I.trescZlecWgWystawcy, I.idNabywca, I.idZleceniodawca, I.idOdbiorca,
S.Kod AS kodOsrodka, D.Kod AS kodDzialu, O.Kod AS kodOddzialu, 'I',
I.zamowienie
FROM inserted I INNER JOIN Oddzial O ON O.IdOddzial=I.IdOddzial
INNER JOIN Dzial D ON D.IdDzial=O.IdDzial
INNER JOIN Osrodek S ON S.IdOsrodek=D.IdOsrodek
END
GO
--++++++++++++++++++++++++++++++++++++++++++++++++++
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[CSMS_Zlc_OnUpd]')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[CSMS_Zlc_OnUpd]
GO
CREATE TRIGGER CSMS_Zlc_OnUpd ON dbo.Z0_Zlecenia
FOR UPDATE AS
BEGIN
INSERT INTO CSMS_Z0_Zlecenia
( nrZlecenia, dataOd, dataDo, dataRejZlecenia, trescZlecWgNabywcy,
trescZlecWgWystawcy, idNabywca, idZleceniodawca, idOdbiorca,
kodOsrodka, kodDzialu, kodOddzialu, kodOperacji, zamowienie )
SELECT
I.nrZlecenia, I.dataOd, I.dataDo, I.dataRejZlecenia, I.trescZlecWgNabywcy,
I.trescZlecWgWystawcy, I.idNabywca, I.idZleceniodawca, I.idOdbiorca,
S.Kod AS kodOsrodka, D.Kod AS kodDzialu, O.Kod AS kodOddzialu, 'U',
I.zamowienie
FROM inserted I INNER JOIN Oddzial O ON O.IdOddzial=I.IdOddzial
INNER JOIN Dzial D ON D.IdDzial=O.IdDzial
INNER JOIN Osrodek S ON S.IdOsrodek=D.IdOsrodek
END
GO
--++++++++++++++++++++++++++++++++++++++++++++++++++
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[CSMS_Zlc_OnDel]')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[CSMS_Zlc_OnDel]
GO
CREATE TRIGGER CSMS_Zlc_OnDel ON dbo.Z0_Zlecenia
FOR DELETE AS
BEGIN
INSERT INTO CSMS_Z0_Zlecenia
( nrZlecenia, dataOd, dataDo, dataRejZlecenia, trescZlecWgNabywcy,
trescZlecWgWystawcy, idNabywca, idZleceniodawca, idOdbiorca,
kodOsrodka, kodDzialu, kodOddzialu, kodOperacji, zamowienie )
SELECT
D.nrZlecenia, D.dataOd, D.dataDo, D.dataRejZlecenia, D.trescZlecWgNabywcy,
D.trescZlecWgWystawcy, D.idNabywca, D.idZleceniodawca, D.idOdbiorca,
OSR.Kod AS kodOsrodka, DZZ.Kod AS kodDzialu, ODD.Kod AS kodOddzialu, 'D',
D.zamowienie
FROM deleted D INNER JOIN Oddzial ODD ON ODD.IdOddzial=D.IdOddzial
INNER JOIN Dzial DZZ ON DZZ.IdDzial=ODD.IdDzial
INNER JOIN Osrodek OSR ON OSR.IdOsrodek=DZZ.IdOsrodek
END
GO
--++++++++++++++++++++++++++++++++++++++++++++++++++
exec sp_settriggerorder 'CSMS_Zlc_OnIns', @order='last', @stmttype = 'INSERT'
exec sp_settriggerorder 'CSMS_Zlc_OnUpd', @order='last', @stmttype = 'UPDATE'
exec sp_settriggerorder 'CSMS_Zlc_OnDel', @order='last', @stmttype = 'DELETE'
--**************************************************
--**************************************************
--**************************************************
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour