1. Połączenie i otwarcie tabeli bazodanowej
Podłączeniem do bazy danych jest podłączona baza danych określona w konfiguratorze "
Baza danych (plik, folder, źródło danych)". Do bazy danych można można się podłączyć po uruchomieniu aplikacji (konfigurator "
Podczas startu" jest ustawiony na
"Podłącz bazę danych i otwórz tabelę (tak samo jak metoda Open)" lub
"Podłącz bazę danych i NIE otwieraj tabeli (tak samo jak metoda Connect)") lub kiedykolwiek później przez wywołanie metody
PmaDatabase.Connect. Operacja ta jest szybsza niż otwarcie tabeli.
Otwarciem tabeli jest wykonane wyżej opisane podłączenie do bazy danych i w dodatku zostaje otwarta tabela określona w konfiguratorze "
Tabela (plik)". Otworzyć tabelę można po uruchomieniu aplikacji (konfigurator "
Podczas startu" jest ustawiony na opcję 'podłączyć do bazy danych i otworzyć tabelę) lub kiedykolwiek później przez wywołanie metody
PmaDatabase.Open. Operacja ta jest wolniejsza niż podłączenie do bazy danych. Tabelę można otworzyć w trybie umożliwiającym "do odczytu i zapisu", "tylko do odczytu", itd., patrz na przykład konfigurator "
Sposoby otwarcia tabeli" (ustawienie to także wpływa na szybkość otwarcia).
Przy pomocy konfiguratorów karty "
Baza danych" można określić tabelę i sposób jej otwarcia. Konfigurator "
Otwórz tabelkę przy pomocy polecenie SQL SELECT" określa, czy tabela jest otworzona według wpisanego polecenia SQL typu
SELECT, w innym przypadku jest otworzona według konfiguratora "
Tabela (plik)".
Sposób wprowadzania
poleceń SQL zależy od ustawienia konfiguratora "
Technologia":
- jeżeli jest ustawiony na
Dostęp przez ODBC, wtedy ewentualne
polecenia SQL wprowadza się w składni języka SQL tej bazy danych, do której jest podłączony obiekt
PmaDatabase.
- jeżeli jest ustawiony na Bezpośredni dostęp do tabeli - DAO, wtedy jest konieczne określić poleceń SQL w składni Microsoft wspieranej w systemie PROMOTIC; różnice są jednak minimalne - patrz dalej.
Uwaga!!! - wspierana implementacja SQL różni się od ANSI SQL w składni polecenia Like następująco:
ANSI SQL |
wspierana implementacja SQL |
_ |
? |
% |
* |
oraz w składni polecenia WHERE w określaniu daty i czasu następująco:
ANSI SQL |
wspierana implementacja SQL |
WHERE ... '25 10 2002 12:22:30' ... |
WHERE ... #10 25 2002 12:22:30# ... |
Przykład1:
(składnia Microsoft w systemie PROMOTIC) wybór wszystkich kolumn w tabeli o nazwie "Table", gdzie wartości w kolumnie "column1" znajdują się w zakresie 10 - 100.
SELECT * FROM Table WHERE column1 BETWEEN 10 AND 100
Przykład2:
(składnia Microsoft w systemie PROMOTIC) wybór kolumn "column1" oraz "column2" w tabeli o nazwie "Table", gdzie wartości w kolumnie "column1" są większe niż 10.
SELECT column1, column2 FROM Table WHERE column1 > 10
Przykład3:
(składnia Microsoft w systemie PROMOTIC) wybór wszystkich kolumn w tabeli o nazwie "Table", gdzie wartości w kolumnie "Time" znajdują się w określonym przedziale. Czas jest wprowadzony w formacie: #miesiąc dzień rok godzina:minuta:sekunda#.
SELECT * FROM Table WHERE Time BETWEEN #12 25 2025 23:53:30# AND #12 25 2025 23:55:30#
Przykład4:
(składnia Microsoft w systemie PROMOTIC) wybór kolumn "column1" oraz "column2" w tabeli o nazwie "Table", gdzie wartości w kolumnie "column1", która jest typu String, mają na początku (rozpoczynają się) znaki od "A" do "D".
SELECT column1, column2 FROM Table WHERE column1 LIKE '[A-D]*'
Przykład5:
(składnia Microsoft w systemie PROMOTIC) wybór wszystkich kolumn w tabeli o nazwie "Table", gdzie wartości w kolumnie "Time" znajdują się w określonym przedziale i są usortowane według tej kolumny. Czas jest wprowadzony w formacie: #miesiąc dzień rok godzina:minuta:sekunda#.
SELECT * FROM Table WHERE Time BETWEEN #12 25 2025 23:53:30# AND #12 25 2025 23:55:30# ORDER BY Time
2. Praca z tabelą
Jeżeli baza danych jest podłączona, wtedy można z nią pracować przy pomocy poleceń języka SQL (metody
PmaDatabase.Execute,
PmaDatabase.ExecuteSQL) i można zastosować metody
ExistTable,
DeleteTable,
Create,
CreateField,
CreateIndex,
CreateEnd. Pozostałe metody nie działają, ponieważ tabela nie jest otwarta.
Jeżeli tabela jest otwarta, wtedy można z podlączoną bazą danych pracować przy pomocy poleceń SQL a w dodatku działają wszystkie pozostałe metody.
Wskaźnik (pozycja bieżąca) jednoznacznie określa rekord tabeli, z którym będą pracować metody obiektu
PmaDatabase.
Jeżeli nie jest ustawione, wtedy metody pracujące z rekordem tabeli zakończą się błędem.
Jeżeli na przykład jest konieczny zapis wartości do pewnego rekordu, wtedy jest konieczne najpierw przesunięcie wskaźnika na dany rekord i dopiero potem wykonaź zapis do rekordu.
Uwaga! - po otwarciu tabeli wskaźnik nie jest zinicjalizowany (jeżeli wskaźnik nie jest ważny, wtedy metody do odczytu i zapisu danych nie powiodą się).
Wskażnik rekordu tabeli jest przesuwany przez wywołanie metody
PmaDatabase.Move,
PmaDatabase.MoveTo, itd. lub
PmaDatabase.FindFirst, itd.
Testy, czy wskaźnik znajduje się na początku lub na końcu tabeli można wykonać przy pomocy metod
PmaDatabase.IsBOF,
PmaDatabase.IsEOF.
Odczytać wartość z tabeli można przy pomocy metody
ReadFieldValue. Zapis wartości do tabeli można wykonać przy pomocy metody
WriteFieldValue lub przy pomocy metody
PmaDatabase.SetRecordValueNull. Jeżeli jest konieczne zapis wyłączznie jednej wartości do rekordu, wtedy wykorzystuje się bezpośrednio metoda
PmaDatabase.WriteFieldValue (
PmaDatabase.SetRecordValueNull). Jeżeli jest konieczne zapis większej ilości wartości do rekordu, wtedy jest lepszym i szybszym następujący sposób:
2. powtórnie volat metoda
PmaDatabase.WriteFieldValue (tym sposobem jest przygotowany bufor, lecz dane w tabeli nie są jeszcze zmienione).
Dodanie pustego rekordu jest możliwe przy pomocy metody
PmaDatabase.AddNew. Do dodania zinicjalizowanego rekordu można zastosować metodę
PmaDatabase.Add:
2. powtórnie ustawić metoda
PmaDatabase.WriteFieldValue (tym sposobem jest przygotowany bufor, lecz dane w tabeli nie są jeszcze zmienione).
Do usunięcia rekordu można zastosować metodę
PmaDatabase.Delete. Do wyszukiwania rekordu w tabeli można zastosować metodę
PmaDatabase.FindFirst, … (powyższe metody nie funkcjonują, jeżeli konfigurator "
Technologia" jest ustawiony na
Dostęp przez ODBC).
Z tabelą można pracować również przy pomocy
przetwarzania transakcyjnego. Przetwarzanie transakcyjne jest przetwarzaniem wsadowym (zadanie wsadowe albo jest wykonane w całości lub nie jest wykonane w ogóle).
Zasada jest następująca. Najpierw jest konieczne wołanie metody
PmaDatabase.BeginTrans. Od tej chwili wszystkie operacje, które zmieniają daną bazę danych czy tabelę są obserwowane. Dopiero po wywołaniu metody
PmaDatabase.Commit wszystkie zmiany, wykonane od poprzedniego wywołania metody
PmaDatabase.BeginTrans, pozostaną w mocy. Jeżeli nie dojdzie do wywołania metody
PmaDatabase.Commit (np. z powodu zakończenia uruchomionej aplikacji, braku zasilania - reset lub też wywołania metody
PmaDatabase.Close), wtedy wszystkie zmiany wykonane od uprzedniego
PmaDatabase.BeginTrans nie zostaną wykonane. Przy przetwarzaniu transakcyjnym można zastosować metodę
PmaDatabase.RollBack. Metoda ta zwraca wszystkie zmiany w tabeli do stanu podczas uprzedniego wywołania metody
PmaDatabase.BeginTrans. Jeżeli więc zostanie wywołana metoda
PmaDatabase.BeginTrans przetwarzania transakcjynego, następnie będą wykonywane dowolne zmiany (które zostały by w mocy dopiero po wywołaniu metody
PmaDatabase.Commit) i zostanie wywołana metoda
PmaDatabase.RollBack, wtedy nie dojdzie do żadnej zmiany tabeli bazodanowej.
Uwaga: Przetwarzanie transakcyjne nie musi być wspierane przez niektóre bazy danych, na przykład bazy danych
Excel,
dBase,
PARADOX, podstawowa wersja bazy danych
MySQL, itd.
Do masowej pracy z tabelami można zastosować metody
PmaDatabase.Execute oraz
PmaDatabase.ExecuteSQL.
Do stwierdzenia informacji o strukturze tabeli można zastosować metody
PmaDatabase.GetFieldCount oraz
PmaDatabase.GetFieldInfo.