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 Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour