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.