Wonderware FactorySuite"!
Menedżer SQL Access Podręcznik użytkownika
Wersja A
Ostatnia wersja: Sierpień 2002
Invensys Systems, Inc.
Wszystkie prawa zastrzeżone. Żaden fragment niniejszej publikacji nie może
być kopiowany, przechowywany w systemie do wyszukiwania informacji,
przesyłany za pomocą jakichkolwiek metod: elektronicznych, mechanicznych,
fotokopiowania, nagrywania lub też w jakikolwiek inny sposób, bez
uprzedniego otrzymania pisemnej zgody Invensys Systems, Inc. Dołożono
wszelkich starań, aby informacje zawarte w tej publikacji były kompletne
i rzetelne, jednakże ani dostawca ani autor nie ponoszą odpowiedzialności za
błędy i omyłkowe pominięcia. Nie jest również ponoszona jakakolwiek
odpowiedzialność za szkody wynikłe z korzystania z informacji podanych
w niniejszym dokumencie.
Podane informacje mogą ulec zmianie bez uprzedzenia i nie są zobowiązujące
dla Invensys Systems, Inc. Oprogramowanie może być wykorzystywane
i kopiowane wyłącznie przy zachowaniu zgodności z tymi dokumentami.
2002 Invensys Systems, Inc. Wszystkie prawa zastrzeżone.
Invensys Systems, Inc.
26561 Rancho Parkway South
Lake Forest, CA 92630 U.S.A.
(949) 727-3200
http://www.wonderware.com
Znaki handlowe
Terminy używane w niniejszej dokumentacji, co do których było wiadomo, że
są znakami firmowymi lub oznaczeniami usług, zostały odpowiednio
wyróżnione. Invensys Systems, Inc. nie może zaświadczyć o pełnej
kompletności tych informacji. Korzystanie z tych terminów w niniejszej
dokumentacji nie może być traktowane jako naruszanie praw do tych znaków
handlowych lub oznaczeń usług.
Alarm Logger, ActiveFactory, ArchestrA, Avantis, DBDump, DBLoad, DT
Analyst, FactoryFocus, FactoryOffice, FactorySuite, FactorySuite A2,
InBatch, InControl, IndustrialRAD, IndustrialSQL Server, InTouch, InTrack,
MaintenanceSuite, MuniSuite, QI Analyst, SCADAlarm, SCADASuite,
SuiteLink, SuiteVoyager, WindowMaker, WindowViewer, Wonderware oraz
Wonderware Logger są znakami towarowymi Invensys plc, jego
reprezentanów i filii. Wszystkie inne znaki mogą być znakami towarowymi
należącymi do ich właścicieli.
Spis treści 3
Spis treści
ROZDZIAA 1: Moduł SQL Access .....................5
Wprowadzenie........................................................................................ 5
Informacje o podręczniku użytkownika................................................. 6
Pomoc techniczna................................................................................... 7
Kompatybilność z ODBC....................................................................... 8
ROZDZIAA 2: Konfigurowanie i nawiązywanie
połączenia z bazą danych...................................9
Korzystanie z bazy danych Oracle 8.0 ................................................... 9
Funkcja SQLConnect()..................................................................... 10
Zapisywanie daty i czasu do pól bazy danych Oracle ...................... 10
Dla bazy Microsoft SQL Server............................................................11
Konfigurowanie klienta .....................................................................11
Obsługiwane typy danych ................................................................ 12
Microsoft Access.................................................................................. 12
Długość tekstu .................................................................................. 13
Zestawienie typów w obsługiwanych bazach danych.......................... 13
ROZDZIAA 3: Konfigurowanie modułu SQL
Access................................................................15
Przegląd modułu SQL Access.............................................................. 15
Konfigurowanie listy powiązań........................................................ 16
Separatory specjalne............................................................................. 20
Konfigurowanie szablonu tabeli........................................................... 21
Plik SQL.DEF ...................................................................................... 24
ROZDZIAA 4: Funkcje SQL..............................25
Zestawienie funkcji SQL...................................................................... 25
Funkcja ............................................................................................. 26
Parametry funkcji SQL......................................................................... 34
Korzystanie z funkcji SQL w skryptach .............................................. 38
Zapytania złożone............................................................................. 38
Wczytywanie wartości do zmiennych programu InTouch ............... 42
Zapisywanie wartości zmiennych InTouch do pól bazy danych ...... 42
Niebezpieczeństwa przy uaktualnianiu danych................................ 42
ROZDZIAA 5: Rozwiązywanie problemów......45
Usuwanie problemów z funkcjami....................................................... 45
Komunikaty o błędach...................................................................... 45
Menedżer SQL Access Podręcznik użytkownika
4Spis treści
Kody błędów dla poszczególnych baz danych .....................................47
Analizowanie pracy modułu InTouch SQL Access ..............................48
ZAACZNIK A: Zarezerwowane słowa
kluczowe ............................................................49
SQL Access oraz ODBC ...................................................................49
InTouch..............................................................................................51
Indeks................................................................53
Menedżer SQL Access Podręcznik użytkownika
Moduł SQL Access 5
R O Z D Z I A A 1
Moduł SQL Access
WonderwareŁł FactorySuite SQL Access Manager pozwala na korzystanie
z tabel baz danych, ich modyfikowanie, tworzenie i usuwanie. Baza danych
przechowuje informacje w tabelach, posiadających wspólny atrybut lub pole.
Dostęp do informacji zgromadzonych w bazie danych zapewnia język SQL
(Structured Query Language).
Spis treści
" Wprowadzenie
" Informacje o podręczniku użytkownika
" Pomoc techniczna
" Kompatybilność z ODBC
Wprowadzenie
Moduł SQL Access programu InTouch został specjalnie zaprojektowany
w celu zapewnienia łatwej metody wymiany danych pomiędzy bazami SQL
a aplikacjami InTouch. Moduł ten umożliwia również przesyłanie danych
w czasie pracy aplikacji, takich jak status alarmów, czy dane historyczne
z programu InTouch do bazy danych SQL. Przykładowo, po zakończeniu
cyklu obróbki, można zapisać szereg zestawów danych, każdy dla innej
aplikacji. W bazie SQL może być zapisanych szereg danych. Moduł SQL
Access pozwala na odczyt tych danych oraz na ich wyświetlanie w dowolnej
aplikacji InTouch.
Menedżer SQL Access Podręcznik użytkownika
6 Rozdział 1
Moduł odpowiadający za obsługę baz danych SQL składa się z Menedżera
modułu SQL Access oraz z funkcji SQL. Zadaniem Menedżera modułu SQL
Access jest utworzenie i powiązanie kolumn bazy danych ze zmiennymi
zdefiniowanymi na liście zmiennych programu InTouch. Proces
przypisywania kolumn bazy danych do zmiennych programu InTouch
określany jest terminem "wiązanie." Dzięki powiązaniu zmiennych programu
InTouch z kolumnami bazy danych, Menedżer modułu SQL Access może
bezpośrednio manipulować danymi przechowywanymi w bazie danych.
Menedżer modułu SQL Access zapisuje kolumny bazy danych i ich
powiązania w pliku w formacie .csv o nazwie "SQL.DEF." (Plik ten
umieszczony jest w kartotece aplikacji InTouch, można go podglądnąć lub
modyfikować za pomocą Menedżera modułu SQL Access lub też za pomocą
dowolnego edytora tekstowego, np. Notatnika Windows. Menedżer modułu
SQL Access tworzy również szablony tabel definiujące format i strukturę bazy
danych.
Aby dowiedzieć się więcej na temat list powiązań oraz szablonów tablic,
zobacz Rozdział 3, "Konfigurowanie modułu SQL Access."
Funkcje SQL można wywoływać z poziomu każdego skryptu. Pozwala to na
automatyczne uruchamianie tych funkcji, w momencie podjęcia odpowiednich
działań przez operatora, po zmianie wartości zmiennej lub też w przypadku
spełnienia określonych warunków. Przykładowo, w przypadku
wygenerowania alarmu, aplikacja może wywołać polecenia SQLInsert()
i SQLUpdate() w celu zapisania danych i statusu alarmu. Funkcje SQL mogą
być wykorzystane do tworzenia nowych tabel, wstawiania nowych rekordów
do tabel, edycji istniejących rekordów tabel, czyszczenia tabel, usuwania tabel,
przewijania rekordów, itp.
Uwaga Systemy baz danych nie omawiane w niniejszym podręczniku
użytkownika, nie są obsługiwane.
Informacje o podręczniku użytkownika
Niniejsza instrukcja podzielona jest logicznie na szereg rozdziałów,
opisujących różne aspekty korzystania z modułu SQL Access. Ma ona
charakter algorytmiczny , podaje kroki do realizacji większości funkcji
i zadań.
Jeżeli ten podręcznik użytkownika jest używany w wersji elektronicznej, jeżeli
tekst jest w kolorze zielonym, wystarczy kliknąć na tekście, aby przeskoczyć
do odpowiedniej sekcji lub rozdziału. Po przejściu do innego punktu lub
rozdziału, można skorzystać z polecenia "Wstecz", powodującego przejście do
pierwotnego miejsca.
Wskazówka Znak ten umieszczono obok Podpowiedzi , zawierających
prostszą lub szybszą metodę realizacji funkcji lub zadania.
W podręczniku użytkownika InTouch omówiono środowisko edycyjne
programu WindowMaker oraz dostępne w nim narzędzia, przeczytaj rozdział 1
tego podręcznika "Elementy programu WindowMaker". W celu zapoznania się
z oknami, obiektami graficznymi, wizardami, obiektami ActiveX, itp. należy
przeczytać Rozdział 2, "Korzystanie z programu WindowMaker".
Menedżer SQL Access Podręcznik użytkownika
Moduł SQL Access 7
Szczegółowe informacje o środowisku do uruchamiania aplikacji (program
WindowViewer) podano w podręczniku operatora.
Dodatkowo, w podręczniku InTouch - opis funkcji, pól i zmiennych
systemowych zamieszczono wyczerpujący opis języka skryptów, funkcji,
zmiennych systemowych oraz pól zmiennych, występujących w programie
InTouch.
Więcej informacji na temat dodatkowego programu SPC Pro podano
w Podręczniku Użytkownika SPC Pro.
Szczegóły dotyczące dodatkowego programu Menedżer Receptur podano
w Podręczniku Użytkownika Menedżera Receptur.
Podręczniki w wersji elektronicznej dla wszystkich elementów pakietu
FactorySuite są również zawarte w pakiecie oprogramowania FactorySuite.
Uwaga Aby przeglądać lub drukować podręczniki w wersji elektronicznej,
należy zainstalować Adobe Acrobat Reader (wersja 4.0 lub pózniejszą).
Wymagane wiadomości
W niniejszej instrukcji przyjęto następujące założenia o użytkowniku:
" Użytkownik jest zapoznany z systemami operacyjnymi Windows 2000,
Windows XP oraz Windows NT.
" Posiada umiejętność korzystania z myszki, menu Windows, wybierania
opcji oraz korzystania z pomocy.
" Posiada doświadczenie w zakresie programowania lub języka makr.
W celu osiągnięcia jak największych korzyści, użytkownik powinien być
zapoznany z takimi zagadnieniami programowania jak zmienne,
deklaracje, funkcje i metody.
Pomoc techniczna
Dział Pomocy Technicznej Wonderware oferuje różne metody wsparcia
w zakresie produktów Wonderware jak również ich implementacji.
Przed skontaktowaniem się z Działem Pomocy Technicznej, proszę szukać
rozwiązania problemów, mogących wystąpić w czasie korzystania z systemu
InTouch w podręczniku Moduł SQL Access. Jeżeli okaże się konieczne
skorzystanie z pomocy technicznej, należy mieć przygotowane następujące
informacje:
1. Numer seryjny oprogramowania.
2. Numer wykorzystywanej wersji programu InTouch.
3. Typ i wersję wykorzystywanego sytemu operacyjnego. Przykładowo,
Microsoft Windows NT Wersja 4.0, jednostanowiskowa.
4. Dokładną treść wyświetlanego przez system komunikatu o błędzie.
5. Jakiekolwiek wydruki z programu Wonderware Logger, narzędzi
diagnostycznych Microsoft Diagnostic (MSD), czy innych aplikacji
diagnostycznych, które mogą być pomocne.
Menedżer SQL Access Podręcznik użytkownika
8 Rozdział 1
6. Szczegółowe informacje na temat podejmowanych prób rozwiązania
problemów oraz ich wyniki.
7. Szczegółowe informacje odnośnie sposobu odtworzenia zaistniałego
problemu.
8. Jeżeli jest dostępna taka informacja, numer przyporządkowany do tego
problemu przez Dział Pomocy Technicznej Wonderware (dotyczy to
problemów aktualnie opracowywanych).
Więcej informacji o pomocy technicznej podano w Podręczniku Użytkownika
FactorySuite System Administrator's.
Kompatybilność z ODBC
Moduł SQL Access jest kompatybilny z ODBC, co oznacza, że może
współpracować z dowolnym systemem baz danych, pod warunkiem, że system
ten posiada sterownik ODBC. Przed rozpoczęciem korzystania ze sterownika
ODBC należy go skonfigurować za pomocą programu Microsoft ODBC
Administrator, w celu nawiązania połączenia pomiędzy aplikacją
kompatybilną z ODBC a systemem baz danych.
W celu skonfigurowania sterownika ODBC
1. Uruchomić program Microsoft ODBC Administrator.
2. Wybrać sterownik lub zródło danych, a następnie kliknąć Add New
Name, Set Default lub Configure. Okno dialogowe ODBC Driver
Setup.
Opcja Opis
Nazwa zródła danych Nazwa zdefiniowana przez użytkownika,
identyfikująca zródło danych.
Opis Wprowadzony przez użytkownika opis zródła
danych.
Katalog aplikacji Kartoteka, w której umieszczone są pliki bazy
danych. Jeżeli nie jest określona żadna kartoteka,
wykorzystywana będzie kartoteka bieżąca.
Wskazówka Wprowadzić pozostałe informacje, wymagane do
skonfigurowania wybranego sterownika.
3. Kliknąć OK.
Wskazówka Sterownik zapisze wartości każdego z pól do pliku
ODBC.INI. Są to domyślne wartości, wykorzystywane przy łączeniu się
ze zródłem danych. Wartości te można zmodyfikować. W przypadku
atrybutów nieobsługiwanych przez pole dialogowe ODBC Driver Setup,
wartości można wprowadzać ręcznie, w odpowiedniej sekcji zródła
danych w pliku odbc.ini.
Menedżer SQL Access Podręcznik użytkownika
Konfigurowanie i nawiązywanie połączenia z bazą danych 9
R O Z D Z I A A 2
Konfigurowanie
i nawiązywanie połączenia
z bazą danych
SQL Access Manager umożliwia łączenie się z bazami danych Oracle,
Microsoft SQL Server oraz Microsoft Access. Każdy z systemów baz danych
ma inne wymagania. W niniejszym rozdziale poświęcono oddzielne punkty dla
każdego z systemów baz danych oraz opisano w nich sposób komunikacji
z modułem SQL Access.
Spis treści
" Korzystanie z bazy danych Oracle 8.0
" Dla bazy Microsoft SQL Server
" Microsoft Access
" Zestawienie typów w obsługiwanych bazach danych
Korzystanie z bazy danych Oracle 8.0
W celu nawiązania połączenia z bazą danych Oracle 8.0
1. Zweryfikować, czy dostawca Oracle OLEDB (MSDAORA.DLL) istnieje
na komputerze z programem InTouch. Ten plik jest instalowany wraz
z MDAC, który jest instalowany wraz z programem InTouch.
2. Nawiązać połączenie z bazą danych Oracle poprzez wywołanie funkcji
SQLConnect() z poziomu skryptu InTouch.
Aby dowiedzieć się więcej na temat funkcji SQLConnect(), zobacz
Rozdział 4, "Funkcje SQL."
Menedżer SQL Access Podręcznik użytkownika
10 Rozdział 2
Funkcja SQLConnect()
Funkcja SQLConnect() przeznaczona jest do nawiązywania połączenia z bazą
danych Oracle. Aańcuch znaków do połączenia, wykorzystywany w funkcji
SQLConnect() musi mieć następującą składnię:
SQLConnect(ConnectionId,"
=;
=;...");
Poniżej podano atrybuty wykorzystywane przez bazę danych Oracle:
Atrybut Wartość
Provider MSDAORA
User ID Nazwa użytkownika.
Password Hasło.
Data Source Nazwa serwera Oracle
Przykład
SQLConnect(ConnectionId,"Provider=MSDAORA; Data
Source=OracleServer; User ID=SCOTT;
Password=TIGER;");
Zapisywanie daty i czasu do pól bazy danych
Oracle
W celu zarejestrowania daty i czasu w polu danych bazy Oracle, należy
odpowiednio ustawić parametry funkcji delim.
W celu rejestrowania w polu danych bazy Oracle daty i czasu
1. W eksploratorze aplikacji, w grupie SQL Access Manager kliknąć Bind
List (Lista powiązań). Wyświetlone zostanie okno dialogowe Bind List
Configuration (Konfiguracja listy powiązań).
Menedżer SQL Access Podręcznik użytkownika
Konfigurowanie i nawiązywanie połączenia z bazą danych 11
2. W polu Tagname.FieldName (Zmienna.Pole) wprowadzić zmienną,
która ma być wykorzystywana.
3. W polu Column Name (Nazwa kolumny) wpisać funkcję DATE_TIME
delim().
4. W aplikacji InTouch napisać skrypt, przygotowujący dane wejściowe
w oparciu o bieżący czas i datę. Przykładowo:
DATE_TIME_TAG = "TO_DATE(''" + $DateString + "" +
StringMid($TimeString,1,8) + "'',''mm/dd/yy
hh24:mi:ss'')";
Wskazówka Zmienna Date_Time_Tag będzie wyświetlana w czasie
pracy aplikacji w następującym formacie:
TO_DATE(''08/22/97 23:32:18'' ,''mm/dd/yy hh24:mi:ss'')
Dla bazy Microsoft SQL Server
W celu nawiązania komunikacji z serwerem Microsoft SQL Server
1. Skonfigurować klienta bazy danych Windows.
2. Wywołać z poziomu skryptu funkcję SQLConnect() w celu nawiązania
łączności z serwerem MicrosoftŁł SQL Server.
Aby dowiedzieć się więcej na temat funkcji SQLConnect(), zobacz
Rozdział 4, "Funkcje SQL."
Konfigurowanie klienta
Funkcja SQLConnect()
Funkcja SQLConnect() może służyć nawiązywaniu połączenia z bazą danych
Microsoft SQL Server. Wywołanie tej funkcji powoduje zalogowanie do
serwera bazy danych oraz nawiązanie połączenia, co pozwala na korzystanie
z innych funkcji SQL. Aańcuch znaków połączenia, wykorzystywany
w funkcji SQLConnect() musi mieć następującą składnię:
SQLConnect(ConnectionId,"=;
=
;...");
Poniżej podano atrybuty wykorzystywane przez bazę danych Microsoft SQL
Server:
Atrybut Wartość
Provider SQLOLEDB
DSN Nazwa zródła danych (Data Source Name)
skonfigurowana w programie Microsoft ODBC
Administrator.
UID Identyfikator użytkownika, rozróżniana jest wielkość
liter.
Menedżer SQL Access Podręcznik użytkownika
12 Rozdział 2
Atrybut Wartość
PWD Hasło, rozróżniana jest wielkość liter.
SRVR Nazwa serwera, na którym znajdują się tablice, które
będą wykorzystywane.
DB Nazwa bazy danych, która będzie wykorzystywana.
Przykład
SQLConnect(ConnectionId,"DSN=SQL_Data;UID=OPERATOR;PWD=XYZ
Z");
Obsługiwane typy danych
Menedżer SQL Access wiąże cztery typy danych programu InTouch (discrete,
integer, real oraz message) z typami występującymi w bazie danych. Dane
typu char są łańcuchami znaków o stałej długości. Do zmiennych InTouch typu
tekstowego można przypisywać wyłącznie dane typu char. Należy określić
długość pola. Maksymalna długość danych typu char nie może przekraczać w
bazie danych Microsoft SQL Server 8,000 znaków. Należy pamiętać jednak, że
maksymalna długość zmiennych tekstowych programu InTouch może wynosi
131 znaków. Jeżeli zmienna tekstowa ma większą długość niż zadeklarowano
w polu bazy danych, przed zapisaniem zostanie obcięta.
Typ danych int odpowiada zmiennym InTouch typu całkowitego. Jeżeli nie
określono długości pola, przyjmowana jest domyślna długość, wprowadzona
dla bazy danych. Szerokość określa maksymalną liczbę cyfr w kolumnie.
Typ danych float odpowiada zmiennym InTouch typu rzeczywistego. Długość
pola dla tego typu zmiennych jest ustalana przez bazę danych. Ten typ danych
nie wymaga podawania długości.
Microsoft Access
W celu nawiązania połączenia z Microsoft Access, należy wywołać z poziomu
skryptu funkcję SQLConnect().
Funkcja SQLConnect()
Funkcja SQLConnect() przeznaczona jest do nawiązywania połączenia z bazą
danych Microsoft Access. Wywołanie tej funkcji powoduje zalogowanie do
serwera bazy danych oraz nawiązanie połączenia, co pozwala na korzystanie
z innych funkcji SQL. Aańcuch znaków do połączenia wykorzystywany
w funkcji SQLConnect() musi mieć następującą składnię:
SQLConnect(ConnectionId,"=;
=
;...");
DSN to atrybut używany przez Microsoft Access i nazwa zródła danych
skonfigurowana w administratorze Microsoft ODBC.
Przykład
SQLConnect(ConnectionId,"DSN=MSACC");
Menedżer SQL Access Podręcznik użytkownika
Konfigurowanie i nawiązywanie połączenia z bazą danych 13
Długość tekstu
Ilość dopuszczalnych typów danych zależy od wersji wykorzystywanego
sterownika ODBC. Dane typu text to łańcuchy znaków o stałej długości, są
one wykorzystywane w przypadku zmiennych InTouch typu tekstowego.
Należy określić długość. W bazie danych Microsoft Access długość pola typu
text nie może przekraczać 255 znaków. Należy pamiętać jednak, że
maksymalna długość zmiennych InTouch typu tekstowego może wynosić 131
znaków. Jeżeli zmienna tekstowa ma większą długość niż zadeklarowano
w polu bazy danych, przed zapisaniem zostanie obcięta. Sterownik Microsoft
Access ODBC obsługuje nazwy kolumn o długości do 17 znaków.
W przypadku korzystania z instrukcji SQLSetStatement( Select Col1, Col2, ...
), maksymalna liczba obsługiwanych kolumn wynosi 40.
Zestawienie typów w obsługiwanych bazach
danych
Oracle
Zakres Typ
Typ danych Długość Domyślnie wartości zmiennej
char 2000 znaków 1 znak Message
number 38 cyfr 38 cyfr Integer
Microsoft SQL Server
Zakres Typ
Typ danych Długość Domyślnie wartości zmiennej
char 8000 Message
znaków
int -2147483648 Integer
do 2147483647
float 15 cyfr Real
-1.79E+308 do
1.79E+308
Microsoft Access 2000
Zakres Typ
Typ danych Długość Domyślnie wartości zmiennej
wartość 255 Message
tekstowa znaków
number Integer
number Real
Menedżer SQL Access Podręcznik użytkownika
14 Rozdział 2
Menedżer SQL Access Podręcznik użytkownika
Konfigurowanie modułu SQL Access 15
R O Z D Z I A A 3
Konfigurowanie modułu SQL
Access
Programy narzędziowe modułu SQL Access umożliwiają tworzenie list
powiązań i szablonów tabel. Lista powiązań kojarzy kolumny bazy danych ze
zmiennymi programu InTouch. Szablon tablicy umożliwia zdefiniowanie
struktury i formatu nowej tabeli w bazie danych.
Spis treści
" Przegląd modułu SQL Access
" Separatory specjalne
" Konfigurowanie szablonu tabeli
" Plik SQL.DEF
Przegląd modułu SQL Access
W momencie wywołania przez aplikację instrukcji SQLCreateTable(),
argument Table Template wykorzystywany jest do zdefiniowania struktury
nowego pliku bazy danych.
Podręcznik Użytkownika programu InTouch
16 Rozdział 3
Przy korzystaniu z funkcji SQLInsert(), SQLSelect() i SQLUpdate(),
argument lista powiązań określa przypisanie zmiennych InTouch do kolumn
bazy danych.
Konfigurowanie listy powiązań
Lista powiązań kojarzy kolumny bazy danych ze zmiennymi programu
InTouch.
W celu utworzenia nowej listy powiązań
1. Z menu Special (Specjalne) wybrać SQL Access Manager, a następnie
kliknąć Bind List (Lista powiązań) lub rozwinąć grupę SQL Access
Manager w eksploratorze aplikacji, a następnie podwójnie kliknąć Bind
List (Lista powiązań).
2. Kliknąć New (Nowe).
Podręcznik Użytkownika programu InTouch
Konfigurowanie modułu SQL Access 17
3. Wyświetlone zostanie okno dialogowe Bind List Configuration
(Konfiguracja listy powiązań).
Wskazówka Po kliknięciu prawym przyciskiem myszy
w DOWOLNYM polu tekstowym, wyświetlone zostanie menu
z poleceniami, które można zastosować do zaznaczonego tekstu.
4. W polu Bind List Name (Nazwa listy powiązań) wpisać nazwę listy
powiązań.
Wskazówka Długość nazwy listy powiązań nie może przekraczać 32
znaków. Nowa lista powiązań umożliwi przypisanie kolumn bazy danych
do zmiennych InTouch. Przykładowo, jeżeli tworzona jest lista
demograficzna pracowników, należy wpisać w tym polu nazwę listy
powiązań, związaną z informacjami o pracownikach.
Uwaga Lista powiązań jest parametrem wywołania funkcji SQLInsert(),
SQLSelect() i SQLUpdate().
5. W polu Tagname.FieldName (Zmienna.Pole) wpisać zmienną wraz
z polem w formacie zmienna.pole.
Wskazówka Lista zmiennych powiąże pola zmiennych z nazwą
kolumny w bazie danych. Jeżeli zmienna nie jest jeszcze zdefiniowana na
liście zmiennych, należy ją podwójnie kliknąć w celu wywołania okna
dialogowego Tagname Dictionary (Lista zmiennych) i zdefiniować ją.
6. Kliknąć Tagname (Zmienna) w celu wybrania jednej z zdefiniowanych
wcześniej zmiennych. Wyświetlona zostanie przeglądarka zmiennych.
Podręcznik Użytkownika programu InTouch
18 Rozdział 3
Wskazówka Pokazane zostaną wszystkie zmienne dla wybranego zródła
zmiennych. W celu wybrania zmiennej podwójnie ją kliknąć lub
zaznaczyć ją, a następnie kliknąć OK. W celu wybrania pola zmiennej,
kliknąć strzałkę Dot Field (Pole) zaznaczyć jedno z pól, a następnie
kliknąć OK.
Uwaga Zmienne typu I/O, które nie są używane w aplikacji ale określone
w liście powiązań, będą uaktywnione i odpytywane z programu
komunikacyjnego I/O w momencie uruchomienia programu
WindowViewer. Aby zaobserwować to zachowanie, nie jest wymagane
połączenie z bazą danych.
Więcej informacji na temat przeglądarki zmiennych podano
w Podręczniku użytkownika programu InTouch.
7. Kliknąć FieldName (Pole) w celu wybrania pola zmiennej. Wyświetlone
zostanie okno dialogowe Choose field name (Wybierz nazwę pola).
8. Zaznaczyć pole, które ma być wstawione. Okno dialogowe zostanie
zamknięte, a wybrane pole automatycznie wstawione do pola
Tagname.FieldName (Zmienna.Pole).
Więcej informacji na temat pól zmiennych podano w Rozdziale 4
podręcznika InTouch Podręcznik użytkownika.
9. W polu Column Name (Nazwa kolumny) wpisać nazwę kolumny.
Wskazówka Długość nazwy kolumny nie może przekraczać 30 znaków.
Nazwa kolumny jest bezpośrednio wiązana z nazwą kolumny w bazie
danych. Jeżeli w nazwie kolumny występują spacje, w czasie
wprowadzania tej nazwy w oknie dialogowym lub w skrypcie należy ją
ująć w nawiasy kwadratowe. Przykładowo:
WHERE EXPR= "[Pipe Flow} = " + text (tagname,"#");
Wskazówka W celu powiązania nazwy kolumny z bazą danych, można
skorzystać ze specjalnych separatorów.
Aby dowiedzieć się więcej na temat znaków rozdzielających, zobacz
rozdział "Separatory specjalne"
10. Kliknąć Move Up (Przenieś w górę) w celu przesunięcia na liście
wybranej zmiennej o jeden poziom wyżej.
11. Kliknąć Move Down (Przesuń w dół) w celu przesunięcia na liście
wybranej zmiennej o jeden poziom niżej.
12. Kliknąć Add Item (Dodaj) w celu dodania pól i nazw kolumn do listy
powiązań.
13. Kliknąć Delete (Usuń) w celu usunięcia zaznaczonych pól i nazw
kolumn z listy powiązań.
14. Kliknąć Modify (Modyfikuj) w celu zmienienia na liście powiązań
zaznaczonych pól Tagname.FieldName (Zmienna.Pole) i Column
Name (Nazwa kolumny) .
Podręcznik Użytkownika programu InTouch
Konfigurowanie modułu SQL Access 19
15. Kliknąć OK w celu zapisania listy powiązań i zamknięcia okna
dialogowego.
Wskazówka Kliknięcie Save (Zapisz) powoduje zapisanie
wprowadzonych zmian, bez zamykania okna dialogowego.
W celu wprowadzenia zmian na liście powiązań
1. Z menu Special (Specjalne) wybrać SQL Access Manager, a następnie
kliknąć Bind List (Lista powiązań) lub rozwinąć grupę SQL Access
Manager w eksploratorze aplikacji, a następnie podwójnie kliknąć Bind
List (Lista powiązań).
2. Wyświetlone zostanie okno dialogowe Select a Bind List (Wybierz listę
powiązań).
3. Zaznaczyć nazwę listy powiązań, a następnie kliknąć Modify
(Modyfikuj). Wyświetlone zostanie okno dialogowe Bind List
Configuration (Konfiguracja listy powiązań).
4. Wprowadzić żądane zmiany.
5. Kliknąć OK w celu zapisania zmian i zamknięcia okna dialogowego.
Aby dowiedzieć się więcej na temat konfigurowania listy powiązań, zobacz
podrozdział "W celu utworzenia nowej listy powiązań."
W celu usunięcia listy powiązań
1. Z menu Special (Specjalne) wybrać SQL Access Manager, a następnie
kliknąć Bind List (Lista powiązań) lub rozwinąć grupę SQL Access
Manager w eksploratorze aplikacji, a następnie podwójnie kliknąć Bind
List (Lista powiązań).
2. Wyświetlone zostanie okno dialogowe Select a Bind List (Wybierz listę
powiązań).
3. Zaznaczyć nazwę listy powiązań, która ma być usunięta.
4. Kliknąć Delete (Usuń). Wyświetlone zostanie okno dialogowe żądające
zatwierdzenia zamiaru wykonania tej czynności. Kliknąć Yes (Tak)
w celu usunięcia zaznaczonego szablonu tabeli lub kliknąć No (Nie)
w celu anulowania tej operacji. Wyświetlone zostanie ponownie okno
dialogowe Bind List Configuration (Konfiguracja listy powiązań):
5. Kliknąć OK w celu zamknięcia okna dialogowego.
Podręcznik Użytkownika programu InTouch
20 Rozdział 3
Separatory specjalne
Funkcje SQLInsert() i SQLUpdate() korzystają z domyślnego formatu,
wktórym łańcuchy znaków ujęte są w apostrofy. Niektóre bazy danych SQL
wymagają, aby łańcuchy znaków były ujęte w inne separatory. Przykładowo,
w bazie danych Oracle, łańcuch znaków musi być podawany w nawiasach.
Jeżeli występuje taka potrzeba, należy skorzystać w następujący sposób
z funkcji Delim():
W oknie dialogowym Bind List Configuration (Konfiguracja listy
powiązań), w polu Column Name (Nazwa kolumny), wpisać za nazwą
kolumny słowo kluczowe "delim" (nie jest rozróżniana wielkość liter). Po
słowie kluczowym "delim" należy wpisać:
" lewy nawias
" lewy separator
" przecinek
" prawy separator
" prawy nawias
Przykład: datestring delim ( , )
Jeżeli z lewej i z prawej strony stosowany jest ten sam separator, wystarczy go
podać w nawisach, bez przecinka.
Przykład: datestring delim ( )
W podanym poniżej przykładzie, z lewej strony jest inny separator niż
z prawej strony. Zwrócić uwagę na miejsce wpisania date delim ( , ) w polu
Column Name (Nazwa kolumny).
Aby dowiedzieć się więcej na temat rejestrowania daty i czasu do pól bazy
danych Oracle, zobacz Rozdział 2, "Konfigurowanie i nawiązywanie
połączenia z bazą danych."
Podręcznik Użytkownika programu InTouch
Konfigurowanie modułu SQL Access 21
Konfigurowanie szablonu tabeli
Szablon tabeli umożliwia zdefiniowanie struktury i formatu nowej tabeli
w bazie danych.
W celu utworzenia nowego szablonu tabeli
1. Z menu Special (Specjalne) wybrać SQL Access Manager, a następnie
kliknąć Table Template (Szablon tabeli) lub rozwinąć grupę SQL
Access Manager w eksploratorze aplikacji, a następnie podwójnie kliknąć
Table Template (Szablon tabeli).
2. Kliknąć New (Nowe).
3. Wyświetlone zostanie okno dialogowe Table Template Configuration
(Konfiguracja szablonu tablicy):
Wskazówka Po kliknięciu prawym przyciskiem myszy
w DOWOLNYM polu tekstowym, wyświetlone zostanie menu
z poleceniami, które można zastosować do zaznaczonego tekstu.
Podręcznik Użytkownika programu InTouch
22 Rozdział 3
4. W polu Table Template Name (Nazwa szablonu tablicy) wpisać nazwę
szablonu tabeli.
Uwaga Długość nazwy szablonu tabeli nie może przekraczać 32 znaków.
Jeśli tworzymy indeks, unikalny lub nie, nazwa szablonu tablicy nie może
przekroczyć 24 znaków. Nazwa szablonu tabeli jest wykorzystywana do
identyfikacji struktury w bazie danych, w czasie korzystania z funkcji
SQLCreateTable().
5. W polu Column Name (Nazwa kolumny) wpisać nazwę szablonu tabeli.
Długość nazwy kolumny nie może przekraczać 30 znaków.
6. W polu Column Type (Typ kolumny) wpisać typ danych
przechowywanych w kolumnie. Należy wpisać jeden z typów danych,
dopuszczalnych przez bazę, z którą będzie nawiązywane połączenie.
Aby dowiedzieć się więcej na temat typów danych dostępnych
w poszczególnych bazach, zobacz Rozdział 2, "Konfigurowanie
i nawiązywanie połączenia z bazą danych."
7. Zaznaczyć pole w grupie Index Type (Typ indeksu), zgodnie z podanym
poniżej opisem.
Unique (Bez powtórzeń)
Wartości w kolumnie nie mogą się powtarzać.
Non-Unique (Z powtórzeniami)
Wartości w kolumnie mogą się powtarzać.
None (Brak)
Bez indeksu
Wskazówka Po wywołaniu funkcji SQLCreateTable() tworzony jest
automatycznie plik z indeksowaniem.
8. Zaznaczyć opcję Allow Null Entry (Pusta wartość OK), jeżeli w tej
kolumnie ma być dopuszczona możliwość nie wpisywania wartości.
Uwaga W programie InTouch zmienne musza mieć zawsze przypisaną
wartość.
Jeżeli do zmiennej przypisane zostanie pole bez wartość, zmienna będzie
równa:
Typ danych Wartość
Discrete 0
Integer 0
Message Pusty łańcuch znaków.
W momencie przypisywania do zmiennej pola bazy danych bez wartości,
wartość zmiennej zostanie wyznaczona zgodnie z powyższym
zestawieniem.
9. Kliknąć Add (Dodaj) w celu dodania wartości wprowadzonych w polach
Column Name (Nazwa kolumny), Column Type (Typ kolumny), Length
(Długość) i Index Type (Typ indeksu) do szablonu tabeli.
Podręcznik Użytkownika programu InTouch
Konfigurowanie modułu SQL Access 23
10. Kliknąć Delete (Usuń) w celu usunięcia wartości wprowadzonych
w polach Column Name (Nazwa kolumny), Column Type (Typ kolumny),
Length (Długość) i Index Type (Typ indeksu) z szablonu tabeli.
11. Kliknąć Modify (Modyfikuj) w celu zmodyfikowania w szablonie tabeli
wartości wprowadzonych w polach Column Name (Nazwa kolumny),
Column Type (Typ kolumny), Length (Długość) i Index Type (Typ
indeksu).
12. Kliknąć OK w celu zapisania szablonu tabeli i zamknięcia okna
dialogowego.
Wskazówka Kliknięcie Zapisz powoduje zapisanie wprowadzonych
zmian, bez zamykania okna dialogowego.
W celu zmodyfikowania szablonu tabeli
1. Z menu Special (Specjalne) wybrać SQL Access Manager, a następnie
kliknąć Table Template (Szablon tabeli) lub rozwinąć grupę SQL
Access Manager w eksploratorze aplikacji, a następnie podwójnie kliknąć
Table Template (Szablon tabeli).
2. Wyświetlone zostanie okno dialogowe Select a Table Template
(Wybierz szablon tablicy).
3. Zaznaczyć nazwę szablonu tabeli, a następnie kliknąć Modify
(Modyfikuj). Wyświetlone zostanie okno dialogowe Table Template
Configuration (Konfiguracja szablonu tablicy):
4. Wprowadzić żądane zmiany.
5. Kliknąć OK w celu zapisania zmian i zamknięcia okna dialogowego.
Aby dowiedzieć się więcej na temat konfigurowania szablonu tabeli,
zobacz podrozdział "W celu utworzenia nowego szablonu tabeli."
W celu usunięcia szablonu tabeli
1. Z menu Special (Specjalne) wybrać SQL Access Manager, a następnie
kliknąć Table Template (Szablon tabeli) lub rozwinąć grupę SQL
Access Manager w eksploratorze aplikacji, a następnie podwójnie kliknąć
Table Template (Szablon tabeli).
Podręcznik Użytkownika programu InTouch
24 Rozdział 3
2. Wyświetlone zostanie okno dialogowe Select a Table Template
(Wybierz szablon tablicy).
3. Zaznaczyć nazwę szablonu tabeli, który ma być usunięty.
4. Kliknąć Delete (Usuń). Wyświetlone zostanie okno dialogowe żądające
zatwierdzenia zamiaru wykonania tej czynności. Kliknąć Yes (Tak)
w celu usunięcia zaznaczonego szablonu tabeli lub kliknąć No (Nie)
w celu anulowania tej operacji. Wyświetlone zostanie ponownie okno
dialogowe Table Template Configuration (Konfiguracja szablonu
tablicy):
5. Kliknąć OK w celu zamknięcia okna dialogowego.
Plik SQL.DEF
Moduł SQL Access zapisuje listy powiązań i szablony tabel w pliku
"SQL.DEF". Ten plik jest formatowany jako plik .CSV. Plik SQL.DEF można
podglądnąć lub modyfikować za pomocą modułu SQL Access lub też za
pomocą dowolnego edytora tekstowego, np. Notatnika Windows. Dane
w pliku zapisywane są w następujący sposób:
:BindListName,BindListName
Zmienna1.PolezZmiennej,NazwaKolumny1
Zmienna2.PoleZmiennej,NazwaKolumny2
Zmienna3.PoleZmiennej,NazwaKolumny3
:TableTemplateName,TableTemplateName
NazwaKolumny1,TypKolumny,[DługośćKolumny],Null,Index
NazwaKolumny2,TypKolumny,[DługośćKolumny],Null,Index
NazwaKolumny3,TypKolumny,[DługośćKolumny],Null,Index
Podręcznik Użytkownika programu InTouch
Funkcje SQL 25
R O Z D Z I A A 4
Funkcje SQL
Program InTouch korzysta z funkcji SQL do wymiany informacji z bazą
danych. Funkcje te mogą być wykorzystywane, podobnie jak standardowe
funkcje InTouch, w dowolnym skrypcie. Pozwalają one na zaznaczanie,
modyfikowanie, wstawianie i usuwanie rekordów z wybranej tabeli.
Spis treści
" Zestawienie funkcji SQL
" Parametry funkcji SQL
" Korzystanie z funkcji SQL w skryptach\
Zestawienie funkcji SQL
W punkcie tym zestawiono wszystkie funkcje SQL. Należy pamiętać, że
funkcje SQL są synchroniczne. Program InTouch powraca do realizacji innych
czynności dopiero po zakończeniu działania wywołanej wcześniej funkcji SQL
(przerywane jest w tym czasie tworzenie trendów, itp.)
Wszystkie funkcje SQL (za wyjątkiem SQLNumRows()) zwracają parametr
ResultCode. Jeżeli zwrócona wartość parametru ResultCode jest różna od 0,
sygnalizuje to niepomyślne wykonanie funkcji, w związku z czym należy
podjąć dodatkowe działania. Parametr ResultCode może być wykorzystany
przez funkcję SQLErrorMsg().
Ogólna składania funkcji SQL jest następująca:
SQLFunction(Parametr1, Parametr2,...)
Szczegółowe informacje na temat każdej z funkcji SQL oraz przykłady ich
wykorzystania podano w podręczniku InTouch - Opis funkcji, pól i zmiennych
systemowych.
Menedżer SQL Access Podręcznik użytkownika
26 Rozdział 4
Funkcja
SQLAppendStatement(ConnectionId,
SQLStatement)
Dołącza wyrażenie SQLStatement do domyślnego wyrażenia SQL dla
ConnectionId.
SQLClearParam(StatementId, ParameterNumber)
Ustawia wartość ParameterNumber związanego z wyrażeniem StatementId na
zero lub pusty tekst w zależności od typu parametru.
SQLClearStatement(ConnectionId, StatementId)
Zwalnia zasoby związane z wyrażeniem StatementId. Samo wyrażenie
o identyfikatorze StatementId pozostaje bez zmian.
SQLClearTable(ConnectionId, TableName)
Usuwa wszystkie rekordy z tabeli o nazwie TableName.
SQLCommit(ConnectionId)
Zatwierdza wykonanie transakcji utworzonej przez funkcję SQLTransact.
SQLConnect(ConnectionId, ConnectString)
Parametr ConnectString to ta sama definicja połączenia jaka została opisana
w dokumentacji ADO (najdokładniej w dokumentacji Microsoft ADO API
Reference). Jest to parametr, który może wymagać modyfikacji w aplikacji
InTouch, aby wykorzystać możliwości każdego z dostawców OLE DB
poszczególnych baz danych.
Ogólna forma definicji ConnectString składa się z różnych części
rozdzielonych średnikami. Pierwszy komponent jest określony jako
Provider=ProviderName, gdzie ProviderName to nazwa dostawcy OLE DB
dla danej bazy danych. Funkcje SQL Connect w istniejących aplikacjach
InTouch nie definiują dostawcy w parametrze ConnectString więc ADO użyje
domyślnego dostawcy, Microsoft OLE DB Provider for ODBC, a więc
MSDASQL.DLL. Aplikacje InTouch będą działać poprawnie ale jest zalecane,
aby zmienić parametr ConnectString tak, aby używać oryginalnego dostawcy
OLE DB. Oto przykłady wartości parametru ConnectString:
Przykład 1
Microsoft OLE DB Provider for Microsoft Jet (zalecane użycie)
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\DBName.mdb;User
ID=UserIDStr;Password=PasswordStr;"
Microsoft.Jet.OLEDB.4.0 is the native OLE DB Provider for Microsoft Jet
(Microsoft Access Database engine).
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 27
Przykład 2
Microsoft OLE DB Provider for ODBC (domyślny dostawca MSDASQL dla
MS Access):
"Provider=MSDASQL;DSN=DSNStr;UID=UserName;PWD=PasswordStr;"
Uwaga User ID i uid mogą być używane zamiennie, podobnie jak Password
i pwd. Jednakże jak zostało już wspomniane, zalecane jest użycie
Microsoft.Jet.OLEDB.4.0.
Przykład 3
Microsoft OLE DB Provider for SQL Server (zalecane użycie)
"provider=sqloledb;Data Source=MyServer;Initial Catalog=MyDB;User
Id=sa;Password=;"
Dostawcą OLE DB dla SQL Server''a jest sqloledb.
Przykład 4
Microsoft OLE DB Provider for SQL Server (zalecane użycie)
"Provider=SQLOLEDB;uid=sa;pwd=;Database=MyDB"
Przykład 5
Microsoft OLE DB Provider for ODBC (domyślny dostawca MSDASQL dla
SQL Server):
"DSN=Pubs;UID=sa;PWD=;"
Przykład 6
Microsoft OLE DB Provider for ODBC (domyślny dostawca MSDASQL dla
SQL Server):
"Data Source=Pubs;User ID=sa;" "Password=;"
Uwaga Data Source i Server mogą być używane zamiennie, podobnie jak
Catalog oraz Database.
Przykład 7
Microsoft OLE DB Provider for Oracle (zalecane użycie)
"Provider=MSDAORA;Data Source=ServerName;User ID=UserIDStr;
Password=PasswordStr;"
Jeżeli wyrażenie SQLTrace=1 zostało zdefiniowane w sekcji [InTouch]
w pliku win.ini, każde pomyślne wykonanie funkcji SQLConnect spowoduje
zalogowanie w programie Wonderware Logger informacji o wersji ADO,
dostawcy i bazie danych.
SQLCreateTable(ConnectionId, TableName,
TemplateName)
Tworzy tablicę o nazwie TableName używając szablonu TemplateName.
Menedżer SQL Access Podręcznik użytkownika
28 Rozdział 4
SQLDelete(ConnectionId, TableName,
WhereExpr)
Usuwa rekordy z tablicy TableName, które spełniają warunek WhereExpr.
SQLDisconnect(ConnectionId)
Powoduje rozłączenie z bazą danych i zwolnienie zasobów zajętych przez
funkcje SQLPrepareStatement oraz SQLInsertPrepare, które jeszcze nie
zostały zwolnione (przez wywołanie funkcji SQLClearStatement oraz
SQLInsertEnd).
SQLDropTable(ConnectionId, TableName)
Usuwa z bazy danych tablicę o nazwie TableName.
SQLEnd(ConnectionId)
Czyści zasoby związane z tablicą powiązaną z kolei z ConnectionId.
SQLErrorMsg(ResultCode)
Zwraca kod błędu ResultCode o wartości -1, gdy baza danych generuje błąd.
ResultCode zawsze wynosi -1, lecz komunikat błędu jest kopiowany dokładnie
od dostawcy danych.
Dokładane informacje na temat kodów błędów i opisów błędów można znalezć
w rozdziale Rozdział 5, "Rozwiązywanie problemów."
SQLExecute(ConnectionId, BindList, StatementId)
Wykonuje wyrażenie identyfikowane przez StatementId (zapytanie MS
Access, procedura zachowana MS SQL Servera lub tekstowy wyrażenie SQL).
Parametr BindList może być tekstem o długości zero. Jeżeli wyrażenie
identyfikowane przez StatementId jest zapytaniem zwracającym wyniki
w postaci rekordów, logiczna tabela jest uaktualniana za pomocą funkcji
SQLExecute. Jeżeli określimy istniejącą listę powiązań, rezultat znajdzie się
w zmiennych zdefiniowanych w tej liście. Pusta lista powiązań może być
wykorzystana, gdy wiemy że zapytanie identyfikowane przez StatementId nie
zwraca rekordów.
SQLFirst(ConnectionId)
Przesuwa wskaznik bieżącego rekordu do pierwszego rekordu logicznej
tablicy i pobiera wartości z tego rekordu do zmiennych programu InTouch.
SQLGetRecord(ConnectionId, RecordNumber)
Przesuwa wskaznik bieżącego rekordu do rekordu RecordNumer logicznej
tablicy i pobiera wartości z tego rekordu do zmiennych programu InTouch.
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 29
SQLInsert(ConnectionId, TableName, BindList)
Pobiera bieżące wartości zmiennych programu InTouch i wstawia je jako
nowy rekord w tabeli TableName.
SQLInsertEnd(ConnectionId, StatementId)
Czyści zasoby związane z danym StatementId i utworzone za pomocą funkcji
SQLInsertPrepare.
SQLInsertExecute(ConnectionId, BindList,
StatementId)
Powoduje pobranie bieżących wartości zmiennych InTouch i wstawienie
nowego rekordu do tabeli identyfikowanej przez poprzednie wykonanie
SQLInsertPrepare. Jeżeli lista powiązań zawiera klucz identyfikacyjny
w tabeli MS SQL Servera, przed wykonaniem funkcji konieczne jest
ustawienie IDENTITY_INSERT.
Przykład
Wstawianie rekordu z kluczem będącym częścią listy powiązań:
ResultCode = SQLSetStatement(ConnectionId, "SET
IDENTITY_INSERT Products ON");
ResultCode = SQLExecute(ConnectionId, "", 0);
ResultCode = SQLInsertPrepare(ConnectionId, TableName,
Bindlist, StatementId);
ResultCode = SQLInsertExecute(ConnectionId, Bindlist,
StatementId);
ResultCode = SQLInsertEnd(ConnectionId, StatementId);
SQLInsertPrepare(ConnectionId, TableName,
BindList, StatementId)
Zwraca StatementId, które może być wykorzystane w funkcjach
SQLInsertExecute i SQLInsertEnd.
SQLLast(ConnectionId)
Przesuwa wskażnik bieżącego rekordu do ostatniego rekordu logicznej tablicy
i pobiera wartości z tego rekordu do zmiennych programu InTouch.
SQLLoadStatement(ConnectionId, FileName)
Wczytuje wyrażenie znajdujące się w pliku FileName do wyrażenia
domyślnego identyfikowanego przez ConnectionId.
Menedżer SQL Access Podręcznik użytkownika
30 Rozdział 4
SQLManageDSN(ConnectionId)
ConnectionId nie jest używane. Pozostaje jednak po to, aby utrzymać
kompatybilność z wcześniejszymi wersjami SQL Access. W tej sytuacji
można przekazać do funkcji dowolną liczbę. Nie jest także wymagane, aby
przed wykonaniem tej funkcji inicjalizować połączenie z bazą danych.
Przykład
SQLManageDSN( 0 )
SQLNext(ConnectionId)
Przesuwa wskaznik bieżącego rekordu do następnego rekordu logicznej tablicy
i pobiera wartości z tego rekordu do zmiennych programu InTouch.
SQLNumRows(ConnectionId)
Zwraca liczbę rekordów w tablicy logicznej. Ponieważ ta funkcja może
zwrócić błąd, zalecane jest użycie jej w następujący sposób:
DIM TEMP AS INTEGER;
TEMP = SQLNumRows(ConnectionId);
IF (TEMP >= 0) THEN
RowCount = TEMP;
ELSE
ResultCode = TEMP;
ENDIF;
Opis
Domyślne wyrażenie jest to wyrażenie związane z identyfikatorem connection
ID. Może to być zapytanie tekstowe SQL (SELECT, INSERT, DELETE lub
UPDATE), nazwa zapytania MS Access (z lub bez parametrów), nazwa
procedury zachowanej w MS SQL Serverze (z lub bez parametrów). Domyślne
wyrażenie można modyfikować za pomocą funkcji SQLLoadStatement,
SQLSetStatement oraz SQLAppendStatement i można wykonać za pomocą
funkcji SQLExecute, gdy StatementId = 0.
SQLPrepareStatement(ConnectionId,
StatementId)
Przygotowuje domyślne wyrażenie i zwraca StatementId (1, 2, 3 itd.).
Przygotowanie jest przydatne dla wyrażeń, które będą wykorzystywane przez
funkcje SQLSetParam{Type}. SQLHandle jest określony jako drugi parametr
funkcji w starszych wersjach SQL Access; jednakże obecna wersja SQL
Access używa we wszystkich funkcjach StatementId zamiast SQLHandle.
Funkcjonalność pozostaje jednak taka sama.
SQLPrev(ConnectionId)
Przesuwa wskaznik bieżącego rekordu do poprzedniego rekordu logicznej
tablicy i pobiera wartości z tego rekordu do zmiennych programu InTouch.
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 31
SQLRollback(ConnectionId)
Anuluje wykonanie transakcji utworzonej przez funkcję SQLTransact.
SQLSelect(ConnectionId, TableName, BindList,
WhereExpr, OrderByExpr)
Funkcja ta wybiera informacje z wyszczególnionej tablicy w bazie danych.
Podczas wykonywania funkcji SQLSelect() w pamięci tworzona jest
tymczasowa tablica wynikowa (Results Table), zawierająca rekordy, które
można przeszukiwać używając funkcji SQLFirst(), SQLLast(), SQLNext(),
SQLNumRows i SQLPrev()
Instrukcja:
SELECT FROM TableName WHERE WhereExpr ORDER BY OrderByExpr
Jeżeli wyrażanie jest wykonane poprawnie, tworzony jest tymczasowy zestaw
rekordów (tablica logiczna), a lista powiązań wiąże zmienne programu
InTouch z kolumnami tablicy jako przygotowanie do wykorzystania funkcji
SQLFirst, SQLPrev, SQLNext, SQLLast oraz SQLNumRows. Tablica
logiczna może także nie zawierać żadnych rekordów. Na przykład, jeżeli
wyrażenie WhereExpr nie jest spełnione dla żadnego z rekordów.
SQLSetParamChar(StatementId,
ParameterNumber, Value, Length)
Ustawia parametr ParameterNumber powiązany z StatementId na wartość
tekstową (tekstem może być także jeden znak). Ostatni parametr funkcji
określa maksymalną długość poprzedniego parametru. Jeżeli długość wartości
tekstowej będzie większa niż ta określona w parametrze długość, tekst ten
zostanie obcięty do podanej długości. Jeżeli długość jest określona na 0,
wykorzystana zostanie cała długość tekstu.
SQLSetParamDate(StatementId,
ParameterNumber, Value)
Ustawia parametr ParameterNumber związany z StatementId na wartość daty.
Czas jest przyjmowany jako 12:00:00 AM (początek doby).
SQLSetParamDateTime(StatementId,
ParameterNumber, Value, Precision)
Ustawia parametr ParameterNumber związany ze StatementId na wartość typu
data/czas.
Menedżer SQL Access Podręcznik użytkownika
32 Rozdział 4
SQLSetParamDecimal(StatementId,
ParameterNumber, Value, Precision, Scale)
Ustawia parametr ParameterNumber związany z StatementId na wartość typu
całkowitego. Wartość może być tekstem (lub zmienną tekstową), która
reprezentuje liczbę (123.456) lub wartość numeryczną (lub zmienną typu
memory real). Wskazane jest, aby zmienna tekstowa była używana zamiast
zmiennej typu real w celu zagwarantowania odpowiedniej precyzji parametru.
Jednakże, jeżeli Wartość musi być zmiennoprzecinkowa (na przykład wartość
jest otrzymana z serwera komunikacyjnego), wtedy funkcja także będzie
działać poprawnie, natomiast nie będzie gwarancji utrzymania precyzji (ze
względu na naturę notacji tych liczb). Precision jest liczbą cyfr, a Scale jest
liczbą cyfr po kropce dziesiętnej.
SQLSetParamFloat(StatementId,
ParameterNumber, Value)
Ustawia parametr ParameterNumber związany z StatementId na wartość 64-
bitową, ze znakiem, typu zmiennoprzecinkowego.
SQLSetParamInt(StatementId,
ParameterNumber, Value)
Ustawia parametr ParameterNumber związany z StatementId na wartość 16-
bitową, ze znakiem, typu całkowitego.
SQLSetParamLong(StatementId,
ParameterNumber, Value)
Ustawia parametr ParameterNumber związany z StatementId na wartość 32-
bitową, ze znakiem, typu całkowitego.
SQLSetParamNull(StatementId,
ParameterNumber, Type, Precision, Scale)
Ustawia parametr ParameterNumber związany z StatementId na wartość
NULL.
Parametr Type może mieć następującą wartość:
0: tekst
1: data/czas
2: integer
3: float
4: decimal
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 33
Porównanie z wartością NULL jest dokonywane zgodnie z ustawieniem
ANSI_NULLS w MS SQL Serverze. Czas sprawdzania ustawienia tej opcji
zależy od bazy danych. W SQL Server 7.0, wartość tej opcji jest sprawdzana
w momencie tworzenia obiektu (nie w momencie wykonywania zapytania).
Gdy procedura zachowana jest tworzona w SQL Serverze 7.0, a opcja ta jest
domyślnie ustawiona na 1, zapytanie "WHERE MyField = NULL" zawsze
zwraca NULL (FALSE) i w rezultacie zapytanie nie zwraca żadnego rekordu.
Aby porównania = lub<> zwracały TRUE lub FALSE, konieczne jest
ustawienie tej opcji na 0 w trakcie tworzenia procedury zachowanej. Jeżeli
opcja ANSI_NULLS nie jest ustawiona na 0, funkcja SQLSetParamNull nie
będzie działała prawidłowo. W takim przypadku, porównanie z wartością
NULL powinno wykorzystywać składnię "WHERE MyField IS NULL" lub
"WHERE MyField IS NOT NULL".
Przykład
Użycie funkcji SQLSetParamNull, aby zwrócić wszystkie rekordy z tabeli
Products, dla których ProductName nie ma wartości NULL.
Przyjmijmy że tworzymy procedurę zachowaną w SQL Serverze
wnastępujący sposób.
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE sp_TestNotNull @ProductParam varchar(255)
AS SELECT * FROM Products WHERE ProductName <>
@ProductParam
GO
SET ANSI_NULLS ON
GO
InTouch może wykonać następujące skrypty.
ResultCode = SQLSetStatement(ConnectionId,
"sp_TestNotNull");
ResultCode = SQLPrepareStatement(ConnectionId,
StatementId);
ResultCode = SQLSetParamNull(StatementId, 1, 0, 0, 0);
ResultCode = SQLExecute(ConnectionId, BindList,
StatementId);
ResultCode = SQLFirst(ConnectionId);
ResultCode = SQLClearStatement(ConnectionId, StatementId);
SQLSetParamTime(StatementId,
ParameterNumber, Value)
Ustawia parametr ParameterNumber związany z StatementId na wartość typu
czas. Wraz z podanym czasem użyta jest także data systemowa.
SQLSetStatement(ConnectionId, SQLStatement)
Ustawia wyrażenie SQLStatement na domyślne wyrażenie SQL dla danego
ConnectionId.
Menedżer SQL Access Podręcznik użytkownika
34 Rozdział 4
SQLTransact(ConnectionId)
Rozpoczyna transakcję z bazą danych. Transakcje mogą być zagnieżdżone
w taki sposób, na jaki pozwala dostawca OLE DB dla danej bazy danych. Na
przykład, dostawca OLE DB dla Microsoft Jet umożliwia zagnieżdżanie
transakcji do 5 poziomów z pierwszą i ostatnią włącznie.
SQLUpdate(ConnectionId, TableName, BindList,
WhereExpr)
Powoduje pobranie bieżących wartości zmiennych InTouch i uaktualnienie
rekordów w tabeli o nazwie TableName spełniających kryterium podane
w wyrażeniu WhereExpr.
SQLUpdateCurrent(ConnectionId)
Uaktualnia bieżący rekord w tabeli logicznej używając wartości ze
zmapowanych zmiennych programu InTouch zgodnie z ich przypisaniem
wliście powiązań. Jeżeli istnieją rekordy identyczne z bieżącym, wszystkie
zostaną uaktualnione. Jeżeli istnieje zbyt dużo identycznych rekordów, po
uaktualnieniu pewnej liczby rekordów funkcja może zwrócić błąd. Komunikat
błędu może być np taki, "Microsoft Cursor Engine: Key column information is
insufficient or incorrect. Too many rows were affected by update."
Jednokrotnie można dokonywać jedynie zmiany 54 identycznych rekordów.
Aby uniknąć tej sytuacji, należy stworzyć unikalny klucz w tabeli tak, aby
żadne dwa rekordy nie były identyczne. Wskazane jest także, aby wszystkie
wykorzystywane tabele miały klucz unikalny. Aby funkcja SQLUpdateCurrent
modyfikowała jeden rekord, wskazane jest, aby dodawać do tabel MS Access
pola typu AutoNumber i definiować go jako klucz podstawowy (primary key).
Ten klucz podstawowy nie musi być definiowany w liście powiązań.
Parametry funkcji SQL
Poniżej opisano parametry wymagane przez każdą z funkcji SQL. Jeżeli
parametr wprowadzony w skrypcie ujęty jest w cudzysłów ("Parametr1"), jako
parametr użyty zostanie wprowadzony łańcuch znaków. Jeżeli znaki
cudzysłowów nie są używane, system przyjmuje, że Parameter1 jest zmienną,
po czym przeszukuje bazę danych programu InTouch w celu znalezienia
wartości zmiennej Parameter1.
Przykład
"c:\main\file" vs. Location
gdzie: location jest zmienną tekstową programu InTouch
"c:\main\file" jest łańcuchem znaków
Większość funkcji SQL wymaga podania co najmniej jednego spośród
przedstawionych poniżej parametrów:
BindList
Parametr ten odpowiada nazwie listy powiązań w pliku SQL.DEF.
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 35
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
przechowania numeru (ID) przypisywanego przez funkcję SQLConnect do
każdego połączenia z bazą danych.
ConnectString
Nazwa bazy danych oraz dodatkowe informacje potrzebne do nawiązania
połączenia przy pomocy funkcji SQLConnect().
ErrorMsg
Zmienna typu tekstowego zawierająca opis komunikatu o błędzie.
Aby dowiedzieć się więcej na temat opisów komunikatów błędów, zobacz
Rozdział 5, "Rozwiązywanie problemów."
FileName
Nazwa pliku zawierającego odczytywaną instrukcję.
MaxLen
Maksymalny rozmiar kolumny, z którą związany jest parametr. Opcja ta
wyznacza, czy parametr jest typu o różnej liczbie znaków, czy też typu
o znacznie różnej liczbie znaków. Jeżeli parametr MaxLen ma długość równą
lub mniejszą maksymalnej wartości dopuszczalnej w bazie danych, to
parametr jest typu zmiennego. Jeżeli jest dłuższy, jest typu LONG VARYING.
OrderByExpression
Definiuje kolumnę i kierunek sortowania. Kluczem do sortowania mogą być
wyłącznie nazwy kolumn. Wyrażenie musi być sformatowane:
ColumnName [ASC|DESC]
W celu posortowania zaznaczonej tabeli według nazwy kolumny (np. manager
w kolejności rosnącej):
"manager ASC"
W celu posortowania względem kilku kolumn, należy podać:
ColumnName [ASC|DESC],
ColumnName [ASC|DESC]
W celu posortowania zaznaczonej tabeli według jednej kolumny (np.
temperatura) w kolejności rosnącej oraz według drugiej kolumny (np. czas)
w kolejności malejącej.
" temperature ASC, time DESC"
Menedżer SQL Access Podręcznik użytkownika
36 Rozdział 4
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterType
Typ danych określonego parametru: Zakres dopuszczalnych wartości:
Typ Opis
Char Aańcuch znaków o stałej długości
wypełniony znakami pustymi
Var Char Aańcuch znaków o zmiennej
długości
Decimal Liczba dziesiętna w kodzie BCD
Integer 4-bajtowa liczba całkowita ze
znakiem
Small Integer 2-bajtowa liczba całkowita ze
znakiem
Float 4-bajtowa liczba
zmiennoprzecinkowa
Double Precision Float 8-bajtowa liczba
zmiennoprzecinkowa
DateTime 8-bajtowa reprezentacja daty
i czasu
Date 4-bajtowa reprezentacja daty
i czasu
Time 4-bajtowa reprezentacja daty
i czasu
No Type Brak typu danych
ParameterValue
Wartość parametru.
Precision
Dokładność wartości podawanych w systemie dziesiętnym, maksymalna
liczba znaków lub długość bajtów przeznaczonych do zapisu daty i czasu.
RecordNumber
Numer rekordu, który ma zostać odczytany.
ResultCode
Zmienna całkowita zwracana przez większość funkcji SQL. ResultCode
wynosi 0, jeśli funkcja została wykonana pomyślnie oraz jest ujemną liczbą
całkowitą, jeśli funkcja nie została wykonana poprawnie.
Aby dowiedzieć się więcej, zobacz Rozdział 5, "Rozwiązywanie problemów."
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 37
Scale
Wartość dziesiętna skali. Jest wymagana tylko w przypadku, gdy dotyczy
zerowanego parametru.
StatementId
StatementId jest wewnętrznym parametrem, wykorzystywanym przy
tworzeniu zaawansowanych instrukcji SQL.
SQLStatement
Bieżąca instrukcja, przykładowo:
ResultCode=SQLSetStatement(ConnectionID, Select LotNo,
LotName from LotInfo );
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja.
TemplateName
Nazwa zdefiniowanego szablonu tablicy, który ma zostać użyty przez funkcję.
WhereExpression
Warunek, który może być spełniony lub niespełniony dla każdego wiersza
tablicy. Funkcja wybiera z tablicy tylko te wiersze, dla których warunek jest
spełniony. Warunek musi mieć następujący format:
NazwaKolumny operator_porównania wyrażenie
Uwaga Jeśli w kolumnie znajdują się dane typu tekstowego, wyrażenie musi
zostać wpisane w apostrofach.
Poniższy przykład służy do wybrania wszystkich wierszy, w których
w kolumnie name występuje ciąg znaków EmployeeID:
name='EmployeeID'
Kolejny przykład służy do wybrania wszystkich wierszy, w których
w kolumnie Partno występuje liczba od 100 do 199:
partno>=100 and partno<200
Następny przykład służy do wybrania wszystkich wierszy, w których
w kolumnie Temperature występuje liczba większa od 350:
temperature>350
Menedżer SQL Access Podręcznik użytkownika
38 Rozdział 4
Korzystanie z funkcji SQL w skryptach
Funkcje SQL można automatycznie wstawiać do skryptów programu InTouch,
poprzez kliknięcie przycisku Dodatkowe w oknie dialogowym edytora
skryptów. Funkcja SQL zostanie wtedy automatycznie wstawiona do skryptu,
w miejscu, w którym znajduje się kursor.
Szczegółowe informacje na temat skryptów podano w Podręczniku
użytkownika, Rozdział 6 "Skrypty".
Zapytania złożone
Moduł SQL Access pozwala na wysyłanie złożonych zapytań i instrukcji SQL.
Zapytania te mogą być dynamicznie tworzone lub też mogą pochodzić
z zewnętrznego pliku. Dodatkowo, zapytania te mogą zawierać parametry,
przekazywane w zapytaniu w czasie pracy aplikacji. Po wywołaniu zapytania,
może ono wrócić zbiór wynikowy. API modułu SQL Access pozwala na
wywoływanie dowolnie złożonych instrukcji SQL, pod warunkiem, że obsłuży
je baza danych oraz pozwala na przeglądanie wyników zapytania. Dodatkowo
można także korzystać z procedur zachowanych. (Zachowane procedury nie są
w pełni obsługiwane).
Aby dowiedzieć się więcej na temat procedur zachowanych, zobacz rozdział
"Obsługa procedur zachowanych."
Dynamiczne budowanie zapytań
Dynamiczne budowanie zapytań umożliwiają dwie dodatkowe funkcje:
SQLSetStatement() i SQLAppendStatement(). SQLSetStatement()
rozpoczyna nową instrukcję SQL. Może to być dowolna, poprawna instrukcja
SQL, włączając w to nazwę procedury zachowanej. Ponieważ długość
zmiennych InTouch typu testowego nie może przekraczać 131 znaków,
stosowana jest funkcja SQLAppendStatement(), która dołącza dodatkowy
łańcuch znaków do instrukcji.
Uwaga Instrukcje języka SQL pisane są tekstem pogrubionym.
Przykład
ResultCode = SQLSetStatement (ConnectionID, "Select LotNo,
LotName, LotDescription, LotQuantity from LotInfo,
ProductionInfo");
ResultCode = SQLAppendStatement (ConnectionID, " where
LotInfo.LotNo = ProductionInfo.LotNo");
ResultCode = SQLAppendStatement (ConnectionID, " order by
LotNo,NotName,LotQuantity");
W tym momencie można wywołać instrukcję.
Uwaga Bardzo często w nazwach kolumn baz danych i tabel rozróżniana jest
wielkość liter. Warunkiem poprawnego wykonania podanego powyżej skryptu
jest dokładne wpisanie nazw kolumn i baz danych, tak jak zdefiniowano je
w tabelach baz danych.
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 39
Odczytywanie instrukcji SQL z pliku
Zapytanie może zostać utworzone przy pomocy innego programu, np. przy
pomocy bazy danych Microsoft Access, czy też bazy danych innego
producenta, po czym może one zostać wysłane przez moduł SQL Access. Do
odczytywania instrukcji SQL z pliku przeznaczona jest funkcja
SQLLoadStatement().
Przykład
ResultCode = SQLLoadStatement ( ConnectionID,
"c:\myappdir\lotquery.sql" );
W tym momencie można wywołać instrukcję.
Określanie parametrów instrukcji SQL w czasie
pracy aplikacji
W celu zapewnienia pełnej funkcjonalności SQL, moduł SQL Access pozwala
na wprowadzanie klauzuli where, zawierającej wartość zmiennej programu
InTouch. Parametry mogą być określane w trakcie pracy aplikacji
wnastępujących funkcjach:
" SQLPrepareStatement()
" SQLSetParamType()
" SQLClearStatement()
" SQLClearParam()
W instrukcji SQL, w której wartość parametru ma zostać określona
wpózniejszym czasie, należy wstawić "?". Instrukcja ta jest
"przygotowywana", następnie "przypisywana" jest wartość parametru, po
czym następuje wykonanie instrukcji.
SQLPrepareStatement() przygotowuje instrukcję do wykonania. Funkcja ta
nie powoduje wykonania instrukcji, a wyłącznie uaktywnia tę instrukcję, co
umożliwia przypisanie parametrom wartości. SQLSetParamType() to zbiór
funkcji, pozwalających na przypisanie wartości różnym parametrom instrukcji
SQL.
Przykład
ResultCode = SQLSetStatement (ConnectionID, "Select LotNo,
LotName, LotDescription, LotQuantity from LotInfo,
ProductionInfo");
ResultCode = SQLAppendStatement (ConnectionID, " where
LotInfo.LotNo = ?");
ResultCode = SQLAppendStatement (ConnectionID, " order by
LotNo,NotName,LotQuantity");
ResultCode = SQLPrepareStatement (ConnectionID,
StatementId);
{przypisz identyfikator instrukcji do zmiennej
''StatementId''}
ResultCode = SQLSetParamInt (StatementId, 1,
tagLotNumber);
{przypisz do parametru wartość zmiennej tagLotNumber}
Menedżer SQL Access Podręcznik użytkownika
40 Rozdział 4
Ponieważ instrukcja ta ma tylko jeden parametr, jest w tym momencie gotowa
do wykonania.
Po wykonaniu instrukcji oraz zakończeniu korzystania z niej, można wywołać
funkcję SQLClearStatement() w celu zwolnienia zasobów zajmowanych
przez tę instrukcję.
Uwaga Wywołanie funkcji SQLEnd() zwalania zasoby zajmowane przez
instrukcje SQL "bez nazwy" (wygenerowane przez istniejące funkcje języka
SQL oraz instrukcje utworzone przy pomocy funkcji SQLSetStatement()
i SQLLoadStatement(), a nie przygotowane funkcjami "Prepare".
Wykonywanie rozbudowanych instrukcji SQL
Jeżeli instrukcja została utworzona dynamicznie, albo odczytana z pliku oraz
opcjonalnie przygotowano ją lub zmodyfikowano, można przystąpić do
wykonywania jej. Moduł SQL Access korzysta w tym celu z funkcji
SQLExecute(). SQLExecute() powoduje albo wykonanie aktywnej w danym
momencie instrukcji (np. instrukcji przygotowanej za pomocą
SQLSetStatement() lub SQLLoadStatement() lub instrukcji uprzednio
przygotowanej, określonej przez identyfikator wewnętrznej instrukcji
(parametr SQLHandle).
Przykład 1
ResultCode = SQLLoadStatement ( ConnectionID,
"c:\myappdir\lotquery.sql" );
ResultCode = SQLExecute(ConnectionID, "BindList", 0);
{wyniki operacji selekcji należy przypisać do zmiennych
określonych za pomocą parametru BindList -
identyfikator przygotowanej instrukcji jest równy 0}
ResultCode = SQLNext ( ConnectionID );
{Pobierz wyniki zapytania SELECT}
Przykład 2
ResultCode = SQLSetStatement (ConnectionID, "Select LotNo,
LotName, LotDescription, LotQuantity from LotInfo,
ProductionInfo");
ResultCode = SQLAppendStatement (ConnectionID, " where
LotInfo.LotNo = ?");
{Znak zapytania oznacza, że wartość tego parametru zostanie
ustalona w pózniejszym czasie}
ResultCode = SQLAppendStatement (ConnectionID, " order by
LotNo,NotName,LotQuantity");
ResultCode = SQLPrepareStatement (ConnectionID,
StatementId);
{przypisz identyfikator instrukcji do zmiennej
''StatementId''}
ResultCode = SQLSetParamInt (StatementId, 1,
tagLotNumber);
{przypisz do parametru wartość zmiennej tagLotNumber}
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 41
ResultCode = SQLExecute (ConnectionID, "BindList",
StatementId); {wstaw wyniki zapytania Select do
zmiennych określonych w
liście powiązań, przygotowana instrukcja jest
identyfikowana przez StatementId}
ResultCode = SQLNext ( ConnectionID );
{Pobierz wyniki zapytania SELECT}
Przykład 3
SQLSetStatement - Instrukcja ta przeznaczona jest do budowania złożonych
zapytań i wyrażeń tekstowych o długości przekraczającej 131 znaków. Jeżeli
długość wyrażenia tekstowego przekracza 131 znaków, skorzystać z funkcji
SQLAppend.
SQLSetStatement(ConnectionID, Select Speed, Ser_No from
tablename where Ser_No = + Serial_input + );
SQLExecute(ConnectionID, "BindList", 0);
W zamieszczonym powyżej przykładzie, wartość StatementId ustawiona
zostaje na 0, dzięki czemu instrukcja nie wywołuje
SQLPrepare(Connection_Id,StatementId) przed wykonaniem instrukcji.
Ponieważ StatementId nie została utworzona przez SQLPrepare, w celu
poprawnego zakończenia tej selekcji, skorzystać z funkcji SQLEnd w miejsce
SQLClearStatement().
SQLSetStatement(Connection_Id, Select Speed, Ser_No from
tablename where Ser_No = + Serial_input + );
SQLPrepareStatement(Connection_Id, StatementId);
SQLExecute(Connection_Id, StatementId);
W zamieszczonym powyżej przykładzie, StatementId jest tworzona za pomocą
SQLPrepareStatement i wykorzystywana w funkcji SQLExecute. W celu
zakończenia tej instrukcji SELECT, a także w celu uwolnienia zasobów oraz
zwolnienia StatementId, skorzystać z funkcji SQLClearStatement.
Obsługa procedur zachowanych
Funkcja SQLExceute() pozwala na wykonywanie niektórych procedur
zachowanych. Przykładowo, załóżmy, że utworzona została procedura
zachowana na serwerze baz danych o nazwie "LotInfoProc", zawierająca
następujące instrukcje do selekcji: "Select LotNo, LotName from LotInfo."
W celu wykonania tej procedury i otrzymania wyników, należy napisać
następujący skrypt:
Dla bazy Microsoft SQL Server
ResultCode = SQLSetStatement ( ConnectionID,
"LotInfoProc" );
ResultCode = SQLExecute(ConnectionID, "BindList", 0);
ResultCode = SQLNext ( ConnectionID );
{Pobierz wyniki zapytania SELECT}
Menedżer SQL Access Podręcznik użytkownika
42 Rozdział 4
Dla bazy Oracle lub Microsoft Access
ResultCode = SQLSetStatement ( ConnectionID, "{CALL
LotInfoProc}" );
ResultCode = SQLExecute(ConnectionID, "BindList", 0);
ResultCode = SQLNext ( ConnectionID );
{Pobierz wyniki zapytania SELECT}
Wczytywanie wartości do zmiennych programu
InTouch
Do przemieszczania się między rekordami logicznej tabeli i pobierania
wartości z tych rekordów do zmiennych programu InTouch, służy pięć funkcji:
SQLFirst, SQLPrev, SQLNext, SQLLast oraz SQLGetRecord. Jeżeli pole ma
wartość NULL, wartość w zmiennej InTouch będzie 0 lub tekst zerowej
długości w zależności od typu zmiennej InTouch. Jeżeli tekst w bazie danych
będzie dłuższy niż 131 znaków, do zmiennej tekstowej InTouch zostanie
skopiowanych tylko pierwsze 131 znaków.
Zapisywanie wartości zmiennych InTouch do pól
bazy danych
Na zapisywanie i uaktualnianie rekordów w bazie danych pozwalają cztery
funkcje skryptowe SQLUpdate, SQLUpdateCurrent, SQLInsert oraz
SQLInsertExecute. Jeżeli zmienna programu InTouch jest dłuższa niż
zdefiniowane pole w tabeli, wykorzystana zostanie tylko ta ilość znaków, na
jaką pozwala długość pola. Ponieważ zmienne programu InTouch nie mogą
mieć wartości NULL, nie można wstawić lub uaktualnić pola bazy danych
wartością NULL. Aby wstawić do bazy danych wartość NULL, należy użyć
funkcji SQLExecute i wyrażenia SQL typu INSERT i w ten sposób
wprowadzić do pola wartość NULL.
Niebezpieczeństwa przy uaktualnianiu danych
Sposób modyfikowania danych przez program InTouch zarówno w zmiennych
jak i w polach tabel bazy danych, umożliwia pojawienie się pewnych
niepożądanych efektów.
Niepożądana konwersja wartości NULL na zero
lub pusty tekst
Wykonywanie poleceń nawigacyjnych powoduje przepisanie wartości NULL
do zmiennych programu InTouch jako zera lub puste teksty. Po uaktualnieniu
różnych zmiennych zdefiniowanych w liście powiązań, wykonanie funkcji
SQLUpdateCurrent spowoduje zapisanie zera lub pustego tekstu do pola
w tabeli powodując nadpisanie wartości NULL. Wykonanie funkcji
SQLUpdate spowoduje wprowadzenie wartości zero lub pustego tekstu
w miejsce wartości NULL.
Menedżer SQL Access Podręcznik użytkownika
Funkcje SQL 43
Niepożądane wprowadzanie wartości zero lub
pustego tekstu
Wykonywanie poleceń nawigacyjnych powoduje przepisanie wartości NULL
do zmiennych programu InTouch jako zera lub puste teksty. Po uaktualnieniu
różnych zmiennych zdefiniowanych w liście powiązań, wykonanie funkcji
SQLInsert lub SQLInsertExecute spowoduje zapisanie zera lub pustego tekstu
do pola w tabeli powodując nadpisanie wartości NULL.
Menedżer SQL Access Podręcznik użytkownika
44 Rozdział 4
Menedżer SQL Access Podręcznik użytkownika
Rozwiązywanie problemów 45
R O Z D Z I A A 5
Rozwiązywanie problemów
W niniejszym rozdziale opisano metody usuwania problemów występujących
w czasie korzystania z instrukcji SQL, przy pomocy parametru Resultcode,
zwracanego przez funkcje SQL. Pierwszy z punktów poświęcono funkcji
SQLErrorMsg(), zamieszczono w nim również zestawienie wartości
parametru ResultCode i odpowiadających im komunikatów o błędach.
W drugim punkcie zamieszczono tabele z komunikatami o błędach dla
poszczególnych baz danych.
Spis treści
" Usuwanie problemów z funkcjami
" Kody błędów dla poszczególnych baz danych
" Analizowanie pracy modułu InTouch SQL Access
Usuwanie problemów z funkcjami
Wszystkie funkcje SQL zwracają parametr ResultCode, który może zostać
wykorzystany przy usuwaniu problemów. Funkcja SQLErrorMsg() zwraca
komunikat o błędzie, dla zadanego kodu ResultCode.
Przykład
ErrorMsg=SQLErrorMsg(ResultCode);
gdzie:
ErrorMsg jest zmienną typu Memory Message.
ResultCode jest zmienną całkowitą, której wartość określa ostatnio
uruchamiana funkcja SQL.
Komunikaty o błędach
W niniejszym dokumencie nie omówiono znaczenia poszczególnych wartości
ResultCode, więcej informacji na temat tych wartości podano w dokumentacji
do bazy danych. Należy również pamiętać o sprawdzeniu informacji
wyświetlanych przez program diagnostyczny Wonderware Logger.
Menedżer SQL Access Podręcznik użytkownika
46 Rozdział 5
Funkcja SQLErrorMsg() przypisuje wartość zmiennej tekstowej ErrorMsg.
Poniżej zamieszczono zestawienie wybranych kodów błędów oraz
odpowiadające im komunikaty, wraz z ich opisem.
Kod błędu Komunikat Opis
0 No errors occurred Instrukcja została zakończona pomyślnie bez
wystąpienia błędu
-1
-2 An empty statement cannot SQLExecute(ConnectionId, BindList, 0) jest
be executed wykonane bez uprzedniego wykonania
SQLSetStatement lub SQLLoadStatement
z wyrażeniem, które nie jest puste.
-4 Value returned was Null Odczytana z bazy danych wartość całkowita lub
zmiennoprzecinkowa to null. Jest to jedynie
ostrzeżenie wysyłane do programu Wonderware
Logger.
-5 No more rows to fetch Odczytany został ostatni rekord bazy danych
-7 Invalid parameter ID SQLSetParamI{Type} zostało wywołane
z nieprawidłowym parametrem ID.
-8 Invalid parameter list Przykład nieprawidłowej listy parametrów: 1, 2, 3,
5 (brakuje 4).
-9 Invalid type for NULL SQLSetParamNull zostało wywołane
parameter z nieprawidłowym typem.
-10 Changing data type of SQLSetParam {Type} funkcja została wywołana
parameter is not allowed z nieprawidłowym typem istniejącego parametru.
-11 Adding parameter after the SQLSetParam {Type} funcja została wywołana dla
statement has been executed nowego ID parametru po tym, jak wyrażenie zostało
successfully is not allowed. pomyślnie wykonane.
-12 Invalid date time format Został wprowadzony nieprawidłowy czas lub data,
na przykład, uruchamiając jedną z funkcji
SQLSetParamTime, SQLInsertExecute lub
SQLUpdateCurrent.
-13 Invalid decimal format Została wprowadzona nieprawidłowa liczba, na
przykład, uruchamiając jedną z funkcji
SQLSetParamDecimal, SQLInsertExecute lub
SQLUpdateCurrent.
-14 Invalid currency format Została wprowadzona nieprawidłowa wartość
walutowa, na przykład, uruchamiając jedną
z funkcji SQLInsertExecute lub
SQLUpdateCurrent.
-15 Invalid statement type for Funkcja SQLInsertEnd jest uruchamiana dla
this operation wyrażenia utworzonego przez funkcję
SQLPrepareStatement lub funkcja
SQLClearStatement jest uruchamiana dla wyrażenia
utworzonego przez funkcję SQLInsertPrepare.
-1001 No memory Brak wolnej pamięci na zakończenie instrukcji.
-1002 Invalid connection Niepoprawny parametr ConnectionID przekazany
do funkcji.
Menedżer SQL Access Podręcznik użytkownika
Rozwiązywanie problemów 47
Kod błędu Komunikat Opis
-1003 No bind list found Lista powiązań o zadanej nazwie nie istnieje.
-1004 No template found Szablon o zadanej nazwie nie istnieje
-1005 Internal Error Wystąpił błąd wewnętrzny. Skontaktować się
z serwisem.
-1006 String is null Ostrzeżenie - z bazy danych odczytano pusty
łańcuch znaków Jest to jedynie ostrzeżenie
wysyłane do programu Wonderware Logger.
-1007 String is truncated Ostrzeżenie - łańcuch znaków odczytany z bazy
danych ma więcej niż 131 znaków i został on
obcięty. Do programu Wonderware Logger
wysyłane jest ostrzeżenie.
-1008 No Where clause Brak klauzuli Where dla Delete.
-1009 Connection failed Błąd w komunikacji, szczegółowy opis problemu
podany jest w programie diagnostycznym
Wonderware Logger
-1010 The database specified on the Określona baza danych nie istnieje.
DB= portion of the connect
string does not exist
-1011 No rows were selected Podjęto próbę wykonania polecenia
SQLNumRows(), SQLFirst(), SQLNext(),SQLLast
lub SQLPrev(), bez uprzedniego wykonania
polecenia SQLSelect() lub SQLExecute().
-1013 Unable to find file to load Funkcja SQLLoadStatement została wywołana
z plikiem, który nie istnieje.
Kody błędów dla poszczególnych baz danych
Oracle
Więcej informacji na temat błędów charakterystycznych dla serwera Oracle
można znalezć w dokumentacji Oracle.
Menedżer SQL Access Podręcznik użytkownika
48 Rozdział 5
Microsoft SQL Server
Komunikat Rozwiązanie
You cannot have more than one Próba wykonania polecenia SQL po
statement active at a time wykonaniu SQLSelect(). Wywołać
polecenie SQLEnd() w celu zwolnienia
zasobów systemu po wywołaniu
SQLSelect() lub też przeznaczyć dla
drugiej instrukcji oddzielny parametr
ConnectionID.
There is not enough memory Spróbować ponownie uruchomić stację
available to process the command kliencką
Invalid object name table name Nazwa tablicy nie istnieje w używanej
bazie danych. Spróbować skorzystać
z instrukcji DB=nazwa bazy danych.
Więcej informacji na temat błędów charakterystycznych dla serwera Microsoft
SQL Server można znalezć w dokumentacji firmy Microsoft.
Analizowanie pracy modułu InTouch SQL
Access
Aby dokonać dokładnej analizy skryptów SQL, w sekcji [InTouch] pliku
win.ini należy wprowadzić linię SQLTrace=1. Nowy moduł SQL Access nie
używa pliku sqltrace.txt.
Menedżer SQL Access Podręcznik użytkownika
Zarezerwowane słowa kluczowe 49
Z A A C Z N I K A
Zarezerwowane słowa
kluczowe
SQL Access oraz ODBC
Poniżej zestawiono słowa kluczowe, z których nie można korzystać w liście
powiązań modułu SQL Access oraz w interfejsie Open Database Connectivity
(ODBC). Jeżeli zarezerwowane słowo kluczowe zostanie wprowadzone w polu
Column Name (Nazwa kolumny) w oknie edycyjnym listy powiązań lub szablonów
tabel, program Wonderware Logger wygeneruje komunikat o błędzie. Rodzaj
wygenerowanego błędu zależy od wersji wykorzystywanego sterownika ODBC
oraz od miejsca, w którym słowo kluczowe zostało wprowadzone. Przykładowo,
jednym z najczęściej spotykanych błędów jest użycie słów DATE i TIME jako
nazw kolumn w czasie definiowania listy powiązań lub szablonu tabel. W celu
uniknięcia tego błędu, należy wprowadzić nieznacznie zmodyfikowaną nazwę, np.
"aDate", czy "aTime". Słowa kluczowe stanowią część języka SQL (Structured
Query Langugage), wykorzystywanego przez pakiet InTouch. Słowa kluczowe są
również rozpoznawane przez sterowniki ODBC. Moduł SQL Access przesyła
polecenie SQL, zawierające jedno lub więcej zarezerwowanych słów do pliku
ODBC.DLL. Jeżeli polecenie SQL nie może zostać poprawnie zinterpretowane,
Moduł SQL Access przesyła komunikat o błędzie do programu Wonderware
Logger.
Poniżej wymieniono w kolejności alfabetycznej zarezerwowane słowa kluczowe:
ABSOLUTE BY CONSTRAINT
ADA CASCADE CONSTRAINTS
ADD CASCADED CONTINUE
ALL CASE CONVERT
ALLOCATE CAST CORRESPONDING
ALTER CATALOG COUNT
AND CHAR CREATE
ANY CHAR_LENGTH CURRENT
ARE CHARACTER CURRENT_DATE
AS CHARACTER_LENGTH CURRENT_TIME
ASC CHECK CURRENT_TIMESTAMP
ASSERTION CLOSE COALESCE CURSOR
AT COBOL DATE
AUTHORIZATION COLLATE DAY
AVG COLLATION DEALLOCATE
BEGIN COLUMN DEC
BETWEEN COMMIT DECIMAL
BIT CONNECT DECLARE
BIT_LENGTH CONNECTION DEFERRABLE
Menedżer SQL Access Podręcznik użytkownika
50 Dodatek A
DEFERRED IS RIGHT
ENTF ISOLATION ROLLBACK
DESC JOIN ROWS
DESCRIBE KEY SCHEMA
DESCRIPTOR LANGUAGE SCROLL
DIAGNOSTICS LAST SECOND
DICTIONARY LEFT SECTION
DISCONNECT LEVEL SELECT
DISPLACEMENT LIKE SEQUENCE
DISTINCT LOCAL SET
DOMAIN LOWER SIZE
DOUBLE MATCH SMALLINT
DROP MAX SOME
ELSE MIN SQL
ENDEESC MINUTE SQLCA
EXCEPT MODULE SQLCODE
EXCEPTION MONTH SQLERROR
EXEC MUMPS SQLSTATE
EXECUTE NAMES SQLWARNING
EXISTS NATIONAL SUBSTRING
EXTERNAL NCHAR SUM
EXTRACT NEXT SYSTEM
FALSE NONE TABLE
FETCH NOT TEMPORARY
FIRST NULL THEN
FLOAT NULLIF TIME
FOR FOREIGN NUMERIC TIMESTAMP
FORTRAN OCTET_LENGTH TIMEZONE_HOUR
FOUND OF TIMEZONE_MINU
FROM FULL OFF TO
GET ON TRANSACTION
GLOBAL ONLY TRANSLATE
GO OPEN TRANSLATION
GOTO OPRN TRUE
GRANT OPTION UNION
GROUP OR UNIQUE
HAVING ORDER UNKNOWN
HOUR OUTER UPDATE
IDENTITY OUTPUT UPPER
IGNORE OVERLAPS USAGE
IMMEDIATE PARTIAL USING
IN PASCAL WERT
INCLUDE PLI VALUES
INDEX POSITION VARCHAR
INDICATOR PRECISION VARING
INITIALLY PREPARE VIEW
INNER PRESERVE WHEN
INPUT PRIMARY WHENEVER
INSENSITIVE PRIOR WHERE
EINFGEN PRIVILEGES WITH
INTEGER PROCEDURE WORK
INTERSECT PUBLIC YEAR
INTERVALL RESTRICT
INTO REVOKE
Menedżer SQL Access Podręcznik użytkownika
Zarezerwowane słowa kluczowe 51
InTouch
Następujące słowa są zarezerwowane dla programu InTouch:
As
Call
Dim
Discrete
Integer
Message
Real
Return
RetVal
Menedżer SQL Access Podręcznik użytkownika
52 Dodatek A
Menedżer SQL Access Podręcznik użytkownika
53
Indeks
SQLSetParamFloat 32
A
SQLSetParamInt 32
SQLSetParamLong 32
Administrator ODBC 8
SQLSetParamNull 32
SQLSetParamTime 33
B
SQLSetStatement 33
SQLTransact 34
Baza danych 5
SQLUpdate 34
BindListName 24, 34
SQLUpdateCurrent 34
Wykorzystywanie 25
C
Funkcje SQL 25
Column Name (Nazwa kolumny) 18
I
ConnectionID 35
ConnectString 35
Informacje o podręczniku użytkownika 6
CSV 6, 24
K
D
Kompatybilność z ODBC 8
Dla bazy Microsoft SQL Server 11
Komunikaty błędów dla poszczególnych baz danych
Dynamiczne budowanie zapytań 38
Microsoft SQL Server 48
Komunikaty o błędach 45
E
Konfigurowanie listy powiązań 16
Konfigurowanie modułu SQL Access 15
ErrorMsg 35
Konfigurowanie szablonu tabeli 21
F Korzystanie z funkcji SQL w skryptach 38
L
FileName 35
Format funkcji SQL 25
Lista powiązań 16
Funkcja Delim 20
modyfikowanie 19
Funkcje
Przeglądarka zmiennych 17
SQLAppendStatement 26
tworzenie nowej 16
SQLClearParam 26
usuwanie 19
SQLClearStatement 26
SQLClearTable 26
M
SQLCommit 26
SQLConnect 11
MaxLen 35
SQLCreateTable 27
Microsoft Access 12
SQLDelete 28
Obsługiwane typy danych 13
SQLDisconnect 28
Wymogi do nawiązania połączenia 12
SQLDropTable 28
Microsoft SQL Server
SQLEnd 28
Obsługiwane typy danych 12
SQLErrorMsg 28
Wymogi do nawiązania połączenia 11
SQLExecute 28
Mircrosoft SQL Server
SQLFirst 28
Obsługiwane typy danych 13
SQLGetRecord 28
Modyfikacja rozszerzonych wyrażeń SQL 39
SQLInsert 29
modyfikowanie listy powiązań 19
SQLInsertEnd 29
modyfikowanie szablonu tabeli 23
SQLInsertExecute 29
SQLInsertPrepare 29
O
SQLLast 29
SQLLoadStatement 29
Obsługa procedur zachowanych 41
SQLManageDSN 30
Obsługiwane bazy danych 11
SQLNumRows 30
Microsoft Access 12
SQLPrepareStatement 30
Microsoft SQL Server 11
SQLPrev 30
Obsługiwane typy danych 13
SQLRollback 31
ODBC.INI 8
SQLSelect 31
Odczytywanie instrukcji SQL z pliku 39
SQLSetParamChar 31
Oracle
SQLSetParamDate 31
Obsługiwane typy danych 13
SQLSetParamDecimal 32
Menedżer SQL Access Podręcznik użytkownika
54
OrderByExpression 35 tworzenie nowej 21
usuwanie 23
P
T
ParameterNumber 36
Parameters 34 Table Template Name (Nazwa szablonu tabeli) 22,
ParameterType 36 24
ParameterValue 36 TableName 37
Parametr Tagname.FieldName (Zmienna.Pole) 18
BindListName 34 TemplateName 37
ConnectionID 35
U
ConnectString 35
ErrorMsg 35
usuwanie listy powiązań 19
FileName 35
Usuwanie problemów 45
MaxLen 35
usuwanie szablonu tabeli 23
OrderByExpression 35
ParameterNumber 36
W
ParameterType 36
ParameterValue 36
WhereExpression 37
Precision 36
Wprowadzenie do modułu SQL Access 5
RecordNumber 36
Wykonywanie rozbudowanych instrukcji SQL 40
ResultCode 36
Scale 37
Z
SQLStatement 37
StatementId 37
Zapisywanie daty i czasu do pól bazy danych
TableName 37
Oracle 10
TemplateName 37
Zapytania
WhereExpression 37
Dynamiczne budowanie 38
Parametry funkcji SQL 34
Złożone 38
Podręczniki Online 7
Zapytania złożone 38
Polecenia
Znaki rozdzielające 20
Szablon tabeli 23
Polecenie Table Template (Szablon tabeli) 23
Pomoc techniczna Wonderware 7
Precision 36
Przegląd modułu SQL Access 15
Przeglądarka zmiennych 17
R
RecordNumber 36
ResultCode 36, 45
Rozwiązywanie problemów z funkcjami SQL 45
S
Słowa kluczowe 49
Scale 37
Separatory specjalne 20
Skrypty QuickScripts 38
SQL.DEF 6, 24
SQLConnect 11
SQLErrorMsg 45
SQLInsert 20
SQLSelect 31
SQLStatement 37
SQLUpdate 20, 34
StatementId 37
Structured Query Language 5
Szablon tabeli 21
modyfikowanie 23
Menedżer SQL Access Podręcznik użytkownika
Wyszukiwarka
Podobne podstrony:
LI ASK SA IT800
LI ASK NF IT900
LI ASK MR IT800
LI ASK PK IT700
czym sa przeciwutleniacze
Kobiety są gorące Norbi
Sa atka z burak w Nieznany
Polacy są kochliwi jak Latynosi
Cieniasy i debeściaki Polacy są najlepsi
02 ASK
WIRUSY SA?RDZO MALE
1 Wybrane skonsolidowane dane finansowe Grupy Kapitałowej PZU SA
więcej podobnych podstron