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:
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.