Zastosowanie programu

Program ODBCLink jest programem interfejsowym. Jego zadaniem jest połączenie programu EWMAPA z dowolną bazą danych opisowych dostępną poprzez ODBC. Niemal wszystkie bazy mają drivery ODBC, co daje nieograniczone możliwości łączenia. Divery ODBC dostarczane są wraz z bazami danych, np. driver do MS Access dostarczany jest z pakietem MS OFFICE. Istnieją drivery do najpopularniejszych baz danych: Oracle i Informix. Zadaniem programu interfejsowego jest pobieranie danych z zewnętrznych baz, a następnie ich wyświetlanie. Łącznikim pomiędzy programem EWMAPA, a danymi opisowymi są identyfikatory, którymi mogą być:

•	numery działek,

•	numery punktów,

•	teksty na warstwach,

•	kod i identyfikator obiektu.

Wszystkie typy łączeń obsługiwane są przez ten sam program interfejsu.

Tematy:

Opis działania

Konfiguracja interfejsu

Podłączenie programu jako interfejsu

Obsługa interfejsu

Wersja demonstracyjna


Opis działania

Zasadę działania programu interfejsowego najlepiej wyjaśni poniższy schemat:

Identyfikator EWMAPY   ->  ODBCLink      <-->       Sterownik ODBC  <-> Baza danych

                                         (id)                  (pytanie SQL)

W pierwszym etapie EWMAPA przygotowuje plik pytania zawierający identyfikator obiektu, o którym chcemy uzyskać więcej informacji z bazy opisowej. Następnie uruchamiany jest program interfejsowy ODBCLink, który formułuje pytanie SQL i dalej przesyła je do sterownika ODBC. Sterowniki są specjalizowane, co oznacza, że współpracują z jedną bazą danych i są dostarczane przez producentów bazy. Sterownik komunikuje się z bazą danych, przekazuje pytanie SQL i pobiera odpowiedź. Odpowiedź jest następnie przesyłana do interfejsu ODBCLink, który zajmuje się jej wyświetleniem.

Pomimo stosunkowo złożonego procesu dostępu do danych, dla użytkownika programu EWMAPA wygląda to całkiem prosto: klika myszą np. na numerze działki i w specjalnym okienku otrzymuje informację o tej działce. Aby jednak wykorzystanie interfejsu było tak proste, należy przygotować odpowiednie połączenia tegoż interfejsu z EWMAPĄ i sterownikiem ODBC, jak również sformułować odpowiednie pytanie SQL. Z tego powodu instalacja interfejsu powinna być przeprowadzona przez osobę znającą język zapytań SQL.

Program interfejsu ODBCLink może być uruchomiony zarówno z poziomu EWMAPY (jako interfejs), jak i jako samodzielny program, umożliwiając konfigurację i testowanie. Po uruchomieniu programu pojawia się główne okno, w którym dostępne są trzy grupy opcji:

•	obsługa bazy,

•	test połączenia,

•	podłączenie jako interfejs.

Baza

Każda baza, tak będzie nazywany zestaw informacji o połączeniu, zapisywana jest w osobnym pliku z rozszerzeniem *.pyt. Takie rozwiązanie umożliwia łatwe przenoszenie pliku konfiguracji pomiędzy stanowiskami komputerowymi. Konfiguracja zapisywana jest w pliku tekstowym, który może być edytowany zewnętrznym programem lub bezpośrednio w programie po naciśnięciu przycisku Konfiguruj. Jeżeli chcemy założyć nową bazę, wystarczy nacisnąć przycisk Dodaj, który po pytaniu o nazwę nowego pliku przystępuje do jego konfiguracji. Przycisk Usuń umożliwia usunięcie bazy z dysku. Ponieważ edycja pliku bazy może być dokonana zewnętrzym edytorem, to po takiej edycji należy nacisnąć przycisk Przeładuj, który powoduje ponowny odczyt pliku. W rozwijanym oknie znajduje się lista dostępnych baz. Wszystkie opisywane przyciski działają w odniesieniu do aktualnie wybranej bazy. Pliki bazy (pliki *.pyt) muszą się znajdować w tej samej kartotece co program ODBCLink.

Test połączenia

Test połączenia umożliwia sprawdzenie, czy połączenie z bazą zostało dokonane poprawnie. Możliwa jest także ocena wyglądu i formatu odpowiedzi bez konieczności podłączania do EWMAPY. Pola Kod i Id umożliwiają symulację kodu i identyfikatora obiektu. Pola te przyjmują następujące wartości (jeżeli program będzie uruchomiony jako interfejs):

działki: KOD=D, ID=<numer działki>

punkty: KOD=P, ID=<numer punktu>

warstwy: KOD=W, ID=<tekst z warstwy>

obiekty: KOD=<kod obiektu>, ID=<identyfikator obiektu>.

Pole KOD nie musi być uzupełniane, jeżeli w pytaniu SQL nie jest ono wykorzystywane. Po wypełnieniu pól, należy nacisnąć przycisk Wykonaj, co zasymuluje uruchomienie interfejsu.

Podłączenie jako interfejs

Aby program ODBCLink mógł być wykorzystywany jako interfejs, musi zostać podłączony do EWMAPY. Podłączenia tego można dokonać ręcznie w programie EWMAPA i EW_CFG lub z poziomu programu ODBCLink - sposób zalecany.


Konfiguracja interfejsu

Po naciśnięciu przycisku Konfiguruj lub Dodaj, pojawia się okno konfiguracyjne z zakładkami. Pierwszą zakładką jest zakładka Połączenie, umożliwiająca połączenie programu ODBCLink ze sterownikiem ODBC i dalej z bazą danych, jak rónież połączenie z programem EWMAPA.

W górnej części okna wyświetlana jest nazwa pliku, w którym będzie zapisana konfiguracja. Poniżej znajduje się pole edycyjne Nazwa symboliczna. Nazwa ta jest wykorzystywana tylko podczas konfiguracji i testowania połączenia. Znacznie istotniejszym polem jest Identyfikator interfejsu, gdyż wpisana tutaj nazwa jest traktowana jako identyfikator łączący daną bazę z programem EWMAPA. Identyczny identyfikator musi być wpisany w EWMAPIE (opcja Konfiguracja baz/Inne, Konfiguracja baz/Warstwy, Konfiguracja baz/Działki). Oprócz identyfikatora interfejsu można także określić kod obiektu (nie jest to obowiązkowe). Określenie kodu obiektu uściśla użycie konkretnej bazy do określonego identyfikatora interfejsu i kodu. Może to być istotne, jeżeli w tej samej kartotece programu EWMAPA znajdują się dwie różne kategorie obiektów z różnymi częściami opisowymi.

Kolejne pola edycyjne okna umożliwiają połączenie interfejsu z bazą danych. W połączeniu do baz ODBC istotne jest pojęcie DSN. Ogólnie rzecz biorąc, DSN to symboliczna nazwa, pod którą kryją się parametry połączenia. Do obsługi DSN służy specjalna opcja systemu operacyjnego dostępna w Panelu sterowania. Można tam przeglądać dostępne sterowniki ODBC, konfigurować DSN itd. Aby jednak ułatwić obsługę ODBC, nowe wpisy do DSN i ich konfigurację można dokonać bezpośrednio z poziomu programu ODBCLink. W polu wyboru znajdują się wszystkie dostępne wpisy DSN. Jeżeli zakładamy połączenie do nowej bazy, to najprawdopodobniej brak będzie odpowiedniego wpisu. W tym celu ustawiamy się na polu edycyjnym ODBC DSN i wpisujemy nową nazwę, a następnie naciskamy przycisk Konfiguruj DSN. Po naciśnięciu tego przycisku, pojawia się dodatkowe okno konfiguracyjne w którym należy wybrać nazwę drivera ODBC i zdecydować się na to, czy będzie to DSN użytkownika, czy DSN systemowy. Po wypełnieniu pól, możemy nacisnąć jeden z przycisków: Dodaj, Modyfikuj lub Usuń. Jeżeli na liście driverów brak drivera do naszej bazy, znaczy to, że nie został on zainstalowany. W tym przypadku naleeży przerwać konfigurację i najpierw dodać nowy sterownik ODBC. Pewnego wyjaśnienia wymagają pojęcia DSN użytkownika i DSN systemowy. Różnica polega na tym, iż DSN użytkownika jest widoczny tylko dla aktualnego użytkownika, a DSN systemowy jest widoczny dla wszystkich użytkowników, którzy logują się na konkretnym komputerze. Po naciśnięciu przycisku Dodaj lub Modyfikuj wyświetlane jest okno konfiguracyjne konkretnego sterownika (nie należy się więc dziwić, jeżeli napisy pojawią się w języku angielskim). W przypadku bazy MS ACCESS należy w tym oknie określić nazwę pliku bazy danych (przycisk Select). Dla innych baz ustawiane parametry różnią się.

Kolejne pola formatki umożliwiają konfigurację autoryzacji połączenia z bazą danych. Po zaznaczeniu pola Przywołanie okna logowania, program interfejsu będzie za każdym razem, gdy wymagane jest połączenie, przywoływał okno logowania (pytanie o nazwę użytkownika i hasło). Nazwę użytkownika i hasło można także wprowadzić bezpośrednio w polach Użytkownik i Hasło.

Zakładka Parametry

Zakładka Parametry umożliwia ustawienie dodatkowych parametrów dotyczących połączenia z ODBC. W większości przypadków, takie dodatkowe ustawienia nie są konieczne.

Uwaga: Podczas testów na sterowniku ODBC do bazy Oracle występowały błędy w pracy programu ODBCLink. Po ustawieniu ROWSET SIZE na jeden problemy ustąpiły.

Zakładki z pytaniami

Interfejs ODBCLink musi do każdej bazy danych posiadać minimum jedno pytanie. Dodatkowe pytania (zakładki) można dodawać przyciskiem Dodaj stronę i usuwać przyciskiem Usuń stronę (pierwszego pytania nie można usunąć).

Każda strona (zakładka) posiada identyczny zestaw pól.

U góry znajduje się pole, które umożliwia wpisanie pytania SQL. Wpisywany ciąg znaków musi być poprawnym ciągiem SQL dla danej bazy danych. Po klauzuli WHERE oprócz ewentualnych warunków łączenia należy wykorzystać automatycznie podstawianą zmienną :ID, która to zmienna będzie reprezentowała identyfikator (numer działki, punktu, tekst warstwy lub identyfikator interfejsu). Dostępna jest także zmienna :KOD, która reprezentuje kod obiektu (może być użyta np. w interfejsach do obieków). Najlepiej zastosowanie zmiennych i konstrukcji pytań wyjaśnią przykładowe pytania do bazy MS ACCESS:

SELECT JEZIORA.NAZWA, JEZIORA.Identyfikator, JEZIORA.[SZER GEOGRAF]

FROM JEZIORA

WHERE JEZIORA.NAZWA=:ID

Powyższe pytanie umożliwia uzyskanie prostej informacji o jeziorach, utworzonych jako obiekty w EWMAPIE, gdzie identyfikatorem obiektu jest nazwa jeziora.

select bu.nrbu as [Numer budynku],bu.nrdz as [Na działce],bu.rodzaj as [Rodzaj],bu.rej_zab as [Rejestr zabytków],

       bu.rok_z_bud as [Rok budowy], bu.rok_o_mod as [Rok modernizacji],

       bu.pow_zab as [Powierzchnia zabudowy], bu.pow_uzy as [Powierzchnia użytkowa],

       bu.lkon as [Liczba kondygnacji],bu.llok_m as [Liczba lokali mieszkalnych],

       bu.llok_u as [Liczba lokali usługowych],bu.llok_g as [Liczba lokali garażowych]

from bu

where bu.nrbu=:id

Powyższe pytanie wykorzystuje klauzulę "as" do zmiany nazwy pola.

select osf.nazwisko as [Nazwisko],osf.imie_1 as [Imię 1], osf.imie_2 as [Imię 2],

       osf.imie_o as [Imię ojca], osf.imie_m as [Imię matki], osf.pesel as [PESEL]

from osf,pr,dz

where dz.pr=pr.pr and pr.idos=osf.idos and dz.nrdz=:id

Powyższe pytanie pokazuje jak połączyć kilka tabel. Zadaniem pytania jest wyświetlenie właścicieli fizycznych związanych z działką (dz.nrdz=:id). Pozostałe wiązania umożliwiają przejście z działki do pozycji rejestrowych (dz.pr=pr.pr) i dalej przejście z pozycji rejestrowych do osób fizycznych (pr.idos=osf.idos).

Uwaga: Podczas łączenia z bazą Oracle, występował problem z wyświetlaniem wartości pól numerycznych i datowych, które nie miały przypisanej wartości. W takim przypadku należy dokonać konwersji tych pól do postaci znakowej w pytaniu SQL. Służy do tego funkcja TO_CHAR, np.:

select to_char(funkcja) as funk, to_char(data_powstania) as data_budowy from budynki

where id_bud=:id

Funkcja TO_CHAR ma także możliwości formatujące (patrz instrukcja do Oracla).

Ponieważ nie wszystkie bazy SQL mają możliwość nazewnictwa pól zgodnie z polską pisownią i znakami spacji wewnątrz, w lewej części okna znajduje się specjalna tabela umożliwiająca zastępowanie oryginalnych (zwracanych przez SQL) nazw pól na inne nazwy. Dodatkowo istnieje mozliwość określenia:

•	czy pole ma być wyświetlane w okienku zawijanym (memo),

•	długość pola w znakach,

•	wysokość pola w liniach (do ustawiania dla pól Mem),

•	wyświetlanie scrolera (do ustawiania dla pól Mem).

Nowe wiersze do tabeli można dodawać po naciśnięciu strzałki w dół lub klawiszy Ctrl Ins, zaś usuwać po naciśnięciu Ctrl Del.

Z prawej strony okna można ustawić dodatkowe parametry:

•	tytuł zakładki,

•	obecność nawigatora,

•	sposób wyświetlania,

•	długości pól.

Nawigator, to listwa narzędziowa umożliwiająca poruszanie się pomiędzy kolejnymi rekordami odpowiedzi. Jego obecność ma sens tylko w przypadku, gdy w wyniku pytania otrzymujemy kilka rekordów odpowiedzi. Opcja Zliczanie uaktywnia nawigator i dodatkowo dokonuje zliczania rekordów, które spełniają warunek. Nie należy jej wykorzystywać, jeżeli spodziewamy się wiekszej ilości rekordów (ponad 100), gdyż zliczanie wprowadza opóźnienie proporcjonalne do ilości rekordów.

Zaznaczenie pola Tabela oznacza, że wyniki będą prezentowane w tabeli. Ma to sens w przypadku, gdy w wyniku pytania otrzymamy więcej niż jeden rekord.

Pole Wykonaj określa, czy pytanie SQL ma być wykonane natychmiast lub dopiero po wybraniu odpowiedniej zakładki. Pierwsze pytanie SQL (pytanie z pierwszej zakładki) jest wykonywane zawsze niezależnie od ustawienia pola Wykonaj. Dodatkowo wynik tego pytania decyduje o wyświetleniu lub niewyświetleniu okna odpowiedzi interfejsu. Z tego powodu pierwsze pytanie powinno zawsze zwracać przynajmniej jeden rekord odpowiedzi.

Pole Oblicz dł. określa, czy długości pól mają być pobierane z odpowiedzi, czy mają być stałe (nie dotyczy to odpowiedzi w postaci tabeli).

Pole Długość pól określa długość pól w przypadku, gdy Oblicz dł. nie jest ustawione.

Pole Maksymalna długość określa maksymalną długość pól i jest wykorzystywane, gdy Oblicz dł. jest ustawione.

U dołu okna znajduje się przycisk Zaszyfruj. Umożliwia on zaszyfrowanie nazwy użytkownika, hasła oraz pytań SQL. Dzięki zaszyfrowaniu, użytkownik wykorzystujący interfejs może wykonywać tylko te pytania, które zostały wprowadzone i dodatkowo zakryta jest przed nim nazwa użytkownika i hasło bazy danych. Operacja szyfrowania nie jest odwracalna.


Podłączenie programu jako interfejsu

Głównym przeznaczeniem programu ODBCLink jest jego współpraca z programem EWMAPA.

Istnieje możliwość jego podłączenia jako:

•	interfejsu dla działek

•	interfejsu dla punktów

•	interfejsu dla warstw

•	interfejsu dla obiektów.

Podłączenia można dokonać w programie EWMAPA. W pierwszych trzech przypadkach należy wpisać odpowiednie dane w konfiguracji EWMAPY, w ostatnim przypadku (podłączenie do obiektu) należy dokonać modyfikacji pliku PLIKI.TXT w kartotece z obiektami.

Istnieje jednak znacznie prostszy sposób podłączenia interfejsu. Można tego dokonać bezpośrednio z programu ODBCLink przy użyciu klawisza Podłącz jako interfejs.

Po naciśnięciu tego klawisza, ukaże się specjalne okno umożliwiające wskazanie, w którym miejscu należy podłączyć interfejs. Jeżeli któraś z opcji jest nieaktywna, oznacza to, że interfejs jest już podłączony. Podłączenie następuje po naciśnięciu przycisku OK. Przycisk Anuluj umożliwia rezygnację z podłączenia.

Ustawienie interfejsu dla działek, punktów i warstw, dotyczy wszystkich baz danych. Inaczej przedstawia się sytuacja, gdy interfejs podłączany jest do obiektów. Po wyborze opcji Interfejs do obiektów, ukazuje się specjalne drzewo umożliwiające wybór kartoteki, w której znajdują się dane obiektowe. Drzewo wyświetlane jest w dwóch poziomach. Poziom pierwszy, to nazwy dostępnych baz danych, poziom drugi, to symboliczne nazwy kartotek z danymi (warstwami). W kartotece z warstwami powinny istnieć podstawowe zbiory obiektów, a zwłaszcza plik OPISY.TXT, który jest niezbędny do procesu konfiguracji.

Jeżeli zaznaczono opcję Interfejs do obiektów i wskazano kartotekę z danymi do obiektów, to po naciśnięciu klawisza OK, ukaże się okno z dostępnymi kodami obiektów. Wyświetlane są tylko te kody obiektów, do których nie został jeszcze podłączony program ODBCLink. Zadaniem użytkownika jest wskazanie, do których kodów należy podłączyć interfejs. Dokonujemy tego, wskazując właściwy kod i naciskając przycisk oznaczony jako "->" . Przycisk "<-" umożliwia wykonanie operacji odwrotnej. Przenoszenie dużej ilości kodów można uprościć, zaznaczając kilka kodów. W tym celu posługujemy się myszą i klawiszami Shift i Ctrl.

Podłączenie interfejsu do działek, punktów i warstw jest możliwe pod warunkiem, że EWMAPA nie jest uruchomiona. Podłączenie jako interfejsu do obiektów jest możliwe, gdy obiekty w EWMAPIE nie są załączone.


Obsługa interfejsu

Obsługa interfejsu w EWMAPIE jest bardzo prosta. Dla działek, punktów i warstw, należy na listwie z interfejsami:

•	wybrać odpowiedni interfejs: ODBC - działki, ODBC - punkty, ODBC - warstwy,

•	nacisnąć przycisk uruchamiający interfejs,

•	wskazać działkę, punkt lub tekst na warstwie.

Interfejs ma charakter interfejsu ciągłego, co oznacza, że po wskazaniu jednego obiektu możemy wskazywać następny. Podobnie wygląda obsługa interfejsu, gdy podłączony jest on do obiektów. W tym przypadku należy tylko uruchomić interfejs ciągły, a następnie wskazywać kolejne obiekty. Informacja graficzna i opisowa będzie pojawiać się automatycznie. Pierwsze wywołanie interfejsu wiąże się z koniecznością jego załadowania i ewentualnego pytania o nazwę użytkownika i hasło, co może potrwać kilka sekund.

Nie należy zamykać programu interfejsowego, gdyż powoduje to jego usunięcie z pamięci i w konsekwencji ponowne ładowanie jeśli wskażemy nowy obiekt. W celu ukrycia okna z danymi interfejsowymi, należy wskazać inny obiekt lub anulować krzyż.


Wersja demonstracyjna

Wersja demonstracyjna programu ODBCLink umożliwia zapoznanie się z programem. Program NIE MOŻE być wykorzystywany w celach komercyjnych. Posiada także ograniczenia do trzech pól w odpowiedzi i do dwóch zakładek (pytań).