Obsługa baz danych > BaseError - polecenie

Drukuj

BaseError - 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 udostępnia kod błędu ostatniej wykonanej operacji na bazie danych. Umożliwia opcjonalnie wyświetlenie standardowego komunikatu o błędzie oraz przerwanie wykonania raportu.

 

Składnia

Int BaseError ( String  nazwa  [, Int  action ] )

lub

Int BaseError ( Int  base  [, Int  action ] )

 

Argumenty

Typ

Nazwa

Opis

String

nazwa

Nazwa bazy danych lub dowolny tekst umieszczany w oknie komunikatu o błędzie. Nazwę stosuje się przy obsłudze błędów otwarcia bazy, gdy zwrócony zostanie numer bazy (zero nie identyfikuje żadnej bazy).

Int

base

Numer identyfikujący otwartą bazę danych.

Int

action

Ten argument jest opcjonalny (może nie być podany, wówczas przyjmowana jest wartość 0). Określa jakie działanie powinno być podjęte, gdy status operacji na bazie danych jest różny od zera:

0

zostanie tylko zwrócony kod błędu operacji

1

w przypadku błędu obsługi bazy danych zostanie wyświetlone dodatkowo okno komunikatu o błędzie. Jako błędy nie zostaną potraktowane kody: 4 - klucz nie znaleziony oraz 9 - koniec pliku

2

w przypadku błędu obsługi bazy danych zostanie wyświetlone dodatkowo okno komunikatu o błędzie. Każdy kod błędu różny od zera powoduje wyświetlenie komunikatu o błędzie

3

obsługa jest taka sama, jak dla wartości 1, ale dodatkowo po wyświetleniu komunikatu o błędzie zostanie przerwane wykonanie raportu

4

obsługa jest taka sama, jak dla wartości 2, ale dodatkowo po wyświetleniu komunikatu o błędzie zostanie przerwane wykonanie raportu

 

Wartość zwracana

Numer błędu ostatnio wykonanej operacji na bazie danych.

 

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