Koszyk

[ 0 ] szt.
Pokaż koszyk
Twój koszyk jest pusty


Informacja dla użytkowników systemu EWOPIS

w związku z pismem GGK – KN-EGB.403.2.2021

W związku z pismem Głównego Geodety Kraju KN-EGB.403.2.2021 z dnia 25 listopada 2021 r. - w sprawie decyzji podziałowych na pierwsze półrocze 2021 r. - przygotowaliśmy 2 zapytania SQL.

Pierwsze zapytanie zwraca działki usunięte i dodane dla wszystkich decyzji administracyjnych.

UWAGA! Analizowane są wyłącznie zmiany posiadające dokumenty o wartości pola "Rodzaj dokumentu" równym "Decyzja administracyjna".

Należy podkreślić, że w wynikowym pliku identyfikator działki powstałej musi być pojedynczy. Dana decyzja może się więc wielokrotnie powtarzać w pliku.

EXECUTE BLOCK 
  RETURNS ( 
            DATA_DEC VARCHAR(30),
            NUMER_DEC VARCHAR(100),
            DZIALKI_USU varchar(10000),
            DZIALKA_DOD VARCHAR(100),
            DATA_ZM VARCHAR(30)
           )
AS
  DECLARE ID_ZM INTEGER;
  DECLARE ILOSC INTEGER;
  DECLARE TERYT VARCHAR(8);
  DECLARE OBREB VARCHAR(4);
  DECLARE IDD VARCHAR(30);
  DECLARE PELNY_NUMER VARCHAR(100);
  DECLARE LICZNIK INTEGER;
BEGIN
  FOR
      select zm.ID, cast(dok.dtd as varchar(30)), dok.syg_pelna, cast(cast(zm.dta as DATE) as varchar(30))
      from zmiany zm
      join dokumenty_zmiany dz on dz.idzm=zm.id
      join dokumenty dok on dok.id=dz.iddok and dok.kdk=3
      where zm.DTA>='2021-01-01' and zm.dta<'2021-07-01'
      into :ID_ZM,:DATA_DEC,:NUMER_DEC,:DATA_ZM
  DO 
  BEGIN
    DZIALKI_USU='';
    LICZNIK=0;
    FOR
      select d.TERYT, d.idobr, d.idd from dzialka d 
      where d.DOWW=:ID_ZM and not exists (select first 1 0 from dzialka d2 where d2.ID=d.id and dowu=:ID_ZM)
      into :TERYT, :OBREB, :IDD
    DO
    BEGIN
      LICZNIK=LICZNIK+1;
      IF (LICZNIK<300) THEN
      BEGIN
        OBREB=LPAD(OBREB,4,'0');
        IF (POSITION('.' in IDD)>0) THEN IDD='AR_' || IDD;
        PELNY_NUMER=TERYT || '.' || OBREB || '.' || IDD;
        IF (DZIALKI_USU<>'') THEN DZIALKI_USU=DZIALKI_USU || ', ';
        DZIALKI_USU=DZIALKI_USU || PELNY_NUMER;
      END
      IF (LICZNIK=300) THEN
        DZIALKI_USU=DZIALKI_USU || ' ... i więcej...';
    END
  
  
    DZIALKA_DOD='';
    select COUNT(*) from dzialka d where d.DOWU=:ID_ZM and
	not exists (select first 1 0 from dzialka d2 where d2.id=d.id and doww=:ID_ZM)
    INTO :ILOSC;
    if (:ILOSC>0) THEN
    BEGIN
      FOR
        select d.TERYT, d.idobr, d.idd from dzialka d where d.DOWU=:ID_ZM and
		not exists (select first 1 0 from dzialka d2 where d2.id=d.id and doww=:ID_ZM)
        into :TERYT, :OBREB, :IDD
      DO
      BEGIN
        OBREB=LPAD(OBREB,4,'0');
        IF (POSITION('.' in IDD)>0) THEN IDD='AR_' || IDD;
        PELNY_NUMER=TERYT || '.' || OBREB || '.' || IDD;
        DZIALKA_DOD=PELNY_NUMER;
        SUSPEND;
      END
    END ELSE
    BEGIN
      DZIALKA_DOD = '';
      IF (DZIALKI_USU<>'') THEN SUSPEND;
    END
  END
END

Drugie zapytanie umożliwia ograniczenie decyzji do konkretnej opatrzonej zadanym początkiem sygnatury.

UWAGA! W tym drugim przypadku należy w zapytaniu w miejscu:

POCZATEK_SYGNATURY = 'GG.II/7430'

określić odpowiedni początek sygnatury, która będzie brana pod uwagę.

EXECUTE BLOCK 
  RETURNS ( 
            DATA_DEC VARCHAR(30),
            NUMER_DEC VARCHAR(100),
            DZIALKI_USU varchar(10000),
            DZIALKA_DOD VARCHAR(100),
            DATA_ZM VARCHAR(30)
           )
AS
  DECLARE ID_ZM INTEGER;
  DECLARE ILOSC INTEGER;
  DECLARE TERYT VARCHAR(8);
  DECLARE OBREB VARCHAR(4);
  DECLARE IDD VARCHAR(30);
  DECLARE PELNY_NUMER VARCHAR(100);
  DECLARE LICZNIK INTEGER;
  DECLARE POCZATEK_SYGNATURY VARCHAR(50);
BEGIN
  /** TU WPISZ POCZĄTEK SYGNATURY **/
  POCZATEK_SYGNATURY = 'GG.II/7430';
  FOR
      select zm.ID, cast(dok.dtd as varchar(30)), dok.syg_pelna, cast(cast(zm.dta as DATE) as varchar(30))
      from zmiany zm
      join dokumenty_zmiany dz on dz.idzm=zm.id
      join dokumenty dok on dok.id=dz.iddok and dok.kdk=3 and dok.SYG_PELNA like :POCZATEK_SYGNATURY || '%'
      where zm.DTA>='2021-01-01' and zm.dta<'2021-07-01'
      into :ID_ZM,:DATA_DEC,:NUMER_DEC,:DATA_ZM
  DO 
  BEGIN
    DZIALKI_USU='';
    LICZNIK=0;
    FOR
      select d.TERYT, d.idobr, d.idd from dzialka d 
      where d.DOWW=:ID_ZM and not exists (select first 1 0 from dzialka d2 where d2.ID=d.id and dowu=:ID_ZM)
      into :TERYT, :OBREB, :IDD
    DO
    BEGIN
      LICZNIK=LICZNIK+1;
      IF (LICZNIK<300) THEN
      BEGIN
        OBREB=LPAD(OBREB,4,'0');
        IF (POSITION('.' in IDD)>0) THEN IDD='AR_' || IDD;
        PELNY_NUMER=TERYT || '.' || OBREB || '.' || IDD;
        IF (DZIALKI_USU<>'') THEN DZIALKI_USU=DZIALKI_USU || ', ';
        DZIALKI_USU=DZIALKI_USU || PELNY_NUMER;
      END
      IF (LICZNIK=300) THEN
        DZIALKI_USU=DZIALKI_USU || ' ... i więcej...';
    END
  
  
    DZIALKA_DOD='';
    select COUNT(*) from dzialka d where d.DOWU=:ID_ZM and 
	not exists (select first 1 0 from dzialka d2 where d2.id=d.id and doww=:ID_ZM)
    INTO :ILOSC;
    if (:ILOSC>0) THEN
    BEGIN
      FOR
        select d.TERYT, d.idobr, d.idd from dzialka d where d.DOWU=:ID_ZM and 
		not exists (select first 1 0 from dzialka d2 where d2.id=d.id and doww=:ID_ZM)
        into :TERYT, :OBREB, :IDD
      DO
      BEGIN
        OBREB=LPAD(OBREB,4,'0');
        IF (POSITION('.' in IDD)>0) THEN IDD='AR_' || IDD;
        PELNY_NUMER=TERYT || '.' || OBREB || '.' || IDD;
        DZIALKA_DOD=PELNY_NUMER;
        SUSPEND;
      END
    END ELSE
    BEGIN
      DZIALKA_DOD = '';
      IF (DZIALKI_USU<>'') THEN SUSPEND;
    END
  END
END

  • Aby wykonać powyższe zapytanie należy je skopiować do schowka i wkleić w monitorze zapytań SQL w programie EWOPIS. Następnie nacisnąć przycisk "Wykonaj". Na pytanie "Czy zatwierdzić zmiany w bazie?" można kliknąk TAK lub NIE - jest to w tym przypadku bez znaczenia.
  • Wynik można zapisać wybierając "Eksportuj tabelę → Podział z tabulatorem" dzięki czemu będzie możliwe wyświetlenie tego pliku w programie Excel.

Odwiedza nas 266 gości oraz 0 użytkowników.