Obsługa baz danych > GetKey - polecenie

Drukuj

GetKey - polecenie symp

Polecenie przeznaczone jest do stosowania tylko w programach linii Symfonia 2.0. W programach linii Symfonia ERP, w celu uzyskania dostępu do bazy danych, należy stosować polecenie GetADOConnection.

 

Polecenie umożliwia sprawdzenie, czy w bazie danych znajduje się rekord odpowiadający ustawionym wartościom domyślnego klucza, ustawionego poleceniem SetKey.

 

Składnia

Int GetKey (Int  numerBazy,   operacja)

 

Argumenty

Typ

Nazwa

Opis

Int

numerBazy

Numer identyfikujący otwartą bazę danych.

 

operacja

Wartość symboliczna określająca sposób pobrania rekordu.

 

Sposoby pobrania rekordu niezależne od ustawionych wartości domyślnego klucza:

FS

(first) pierwszy rekord

LS

(last) ostatni rekord

 

Sposoby pobrania rekordu zależące od wartości segmentów klucza:

LT

(less than) mniejszy od

LE

(less or equal) mniejszy lub równy

EQ

(equal) równy

GE

(greater or equal) większy lub równy

GT

(greater than) większy od

 

Sposoby pobrania kolejnych rekordów, w stosunku do ostatnio pobranego:

NX

(next) następny rekord

PR

(previous) poprzedni rekord

 

Wartość zwracana

Zero, gdy klucz istnieje i został znaleziony.

Wartość różna od zera, gdy operacja pobrania klucza nie powiodła się. Wartość zwrócona to numer błędu obsługi bazy danych. Błędy te są opisane w oddzielnym pliku pomocy instalowanym wraz z programem.

 

Przykład

//Utworzenie struktury definicji bazy danych
BaseDef bDef
//Utworzenie nowej definicja tabeli typu "osoby"
bDef.New("Osoby")
//Zdefiniowanie pól tabeli
bDef.Field(15, 4, "ID")
bDef.Field(11, 40, "Nazwisko")
bDef.Field(11, 20, "Imie")
//Zdefiniowanie klucza podstawowego "ID", automatyczna numeracja
bDef.Key(0x0100, "ID")
//Określenie pola klucza podstawowego
bDef.KeyField(15, 4, "ID")
//Utworzenie i udostępnienie definicji
bDef.Create()
//Określenie położenia pliku bazy
String sciezka=KatalogFirmy() + "NOWABAZA.DAT"
//Utworzenie pliku bazy danych
Create sciezka For Base "Osoby"
//Ustalenie sposobu obsługi błędu tworzenia bazy
BaseError (sciezka, 4)
//Otworzenie bazy danych
Int nrBazy=Open sciezka For Base "Osoby"
BaseError (sciezka, 4)
//Wpisanie do bazy rekordu
SetKey (nrBazy, "ID")
SetKeySeg (nrBazy, "ID", 0)
SetField (nrBazy, "Nazwisko", "Nazwisko1")
SetField (nrBazy, "Imie", "Imię1")
InsRec (nrBazy)
baseError (nrBazy, 4)
//Zamknięcie pliku bazy danych
Close nrBazy
//Powtórne otworzenie pliku bazy danych
Int nrBazy1=Open sciezka For Base "Osoby"
baseError (nrBazy1, 4)
//Ustawienie rekordu bazy do odczytu
SetKey (nrBazy1, "ID")
SetKeySeg (nrBazy1, "ID", 1)
//Odczytanie rekordu bazy
GetRec (nrBazy1, EQ)
baseError (nrBazy1, 4)
//Sprawdzenie zapisanych w rekordzie informacji
String p1=GetField (nrBazy1, "Nazwisko")
String p2=GetField (nrBazy1, "Imie")
String wpis="Zawartość rekordu odczytana z bazy: "+" "+p1+" "+p2
Print wpis;LF
//Zmiana zawartości rekordu
SetField (nrBazy1, "Nazwisko", "NoweNazwisko1")
SetField (nrBazy1, "Imie", "NoweImię1")
PutRec (nrBazy)
//Ponowne ustawienie rekordu bazy do odczytu
SetKey (nrBazy1, "ID")
SetKeySeg (nrBazy1, "ID", 1)
//Sprawdzenie istnienia ustawianego rekordu
Int jest=GetKey (nrBazy1, EQ)
If jest then
Print "W bazie brak ustawianego rekordu"; LF
else
Print "W bazie istnieje ustawiony rekord"; LF
EndIf
//Sprawdzenie zawartości wybranego segmantu klucza ustawionego rekordu
Int Seg=GetKeySeg (nrBazy1, "ID")
Print "Segment ID klucza wybranego rekordu ma wartość: ", Seg; LF
//Odczyt nowej zawartości rekordu
GetRec(nrBazy1, EQ)
//Sprawdzenie zapisanych w rekordzie nowych informacji
String p1n=GetField (nrBazy1, "Nazwisko")
String p2n=GetField (nrBazy1, "Imie")
String wpisn="Zmieniona zawartość rekordu odczytana z bazy: "+" "+p1n+" "+p2n
Print wpisn;LF
//Usunięcie rekordu
SetKey (nrBazy1, "ID")
SetKeySeg (nrBazy1, "ID", 1)
DelRec (nrBazy1)
//Ponowne ustawienie rekordu bazy do odczytu usuniętego rekordu
SetKey (nrBazy1, "ID")
SetKeySeg (nrBazy1, "ID", 1)
//Sprawdzenie istnienia ustawianego rekordu
Int jest1=GetKey (nrBazy1, EQ)
If jest1 then
Print "Sprawdzenie usunięcia rekordu - rekord został usunięty"; LF
else
Print "Sprawdzenie usunięcia rekordu - rekord istnieje"; LF
EndIf
//Zamknięcie pliku bazy danych
Close nrBazy1
//Usunięcie pliku bazy danych
Delete File sciezka
//Sprawdzenie usunięcia pliku bazy danych
Int nrBazy2=Open sciezka For Base "Osoby"
If nrBazy2>0 then
Print "Sprawdzenie usunięcia pliku bazy - baza istnieje"; LF
Close nrBazy2
else
Print "Sprawdzenie usunięcia pliku bazy - baza została usunięta"; LF
EndIf