153 lines
3.2 KiB
Markdown
153 lines
3.2 KiB
Markdown
# DATABASE
|
|
|
|
Baza danych w postaci tabeli — zbiór wierszy o jednolitym schemacie. Schemat definiuje powiązana zmienna [`STRUCT`](STRUCT.md): jej pole [`FIELDS`](STRUCT.md#fields) wyznacza kolumny tabeli oraz typy danych w poszczególnych kolumnach.
|
|
|
|
Dostęp do wierszy realizowany jest sekwencyjnie poprzez kursor. Bieżąca pozycja kursora jest zmieniana metodami [`SELECT`](#select) (bezpośrednio na indeks), [`NEXT`](#next) (kolejny wiersz) i [`FIND`](#find) (po wartości w kolumnie). Dane zapisywane są w plikach `.DTA` w formacie z separatorem `|` — można je ładować ([`LOAD`](#load)) i zapisywać ([`SAVE`](#save)).
|
|
|
|
## Pola
|
|
|
|
### MODEL
|
|
|
|
```
|
|
STRING MODEL
|
|
```
|
|
|
|
Nazwa zmiennej typu [`STRUCT`](STRUCT.md) definiującej schemat bazy. Pole obowiązkowe — metoda [`LOAD`](#load) wymaga, by schemat został wcześniej zsynchronizowany ze [`STRUCT`](STRUCT.md).
|
|
|
|
## Metody
|
|
|
|
### FIND
|
|
|
|
```
|
|
INTEGER FIND(STRING columnName, mixed columnValue, INTEGER defaultIndex)
|
|
```
|
|
|
|
Wyszukuje pierwszy wiersz, w którym kolumna o nazwie `columnName` ma wartość `columnValue`. Zwraca jego indeks lub `defaultIndex`, jeżeli żaden wiersz nie pasuje.
|
|
|
|
**Parametry**
|
|
|
|
- `columnName` — nazwa przeszukiwanej kolumny.
|
|
- `columnValue` — szukana wartość.
|
|
- `defaultIndex` — indeks zwracany, jeżeli nie znaleziono dopasowania.
|
|
|
|
**Zwraca**: [`INTEGER`](INTEGER.md) — indeks znalezionego wiersza lub `defaultIndex`.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
DBOBJECTS^FIND("IDNAME",VARSTAKENAME,0);
|
|
DBOBJECTS^FIND("TYPE",102,0);
|
|
DBDIALOGI^FIND("ID",SDIALOGNAME,IDIALOGINDEKS);
|
|
```
|
|
|
|
### GETROWSNO
|
|
|
|
```
|
|
INTEGER GETROWSNO()
|
|
```
|
|
|
|
Zwraca liczbę wierszy w bazie.
|
|
|
|
**Zwraca**: [`INTEGER`](INTEGER.md) — liczba wierszy.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
DBOBJECTS^GETROWSNO();
|
|
```
|
|
|
|
### LOAD
|
|
|
|
```
|
|
void LOAD(STRING dtaName)
|
|
```
|
|
|
|
Ładuje zawartość bazy z pliku `.DTA`. Każda linia pliku to jeden wiersz; kolumny w wierszu rozdzielone są znakiem `|`. Wywołanie metody bez wcześniej zdefiniowanego schematu ([`MODEL`](#model)) jest przerywane z komunikatem błędu.
|
|
|
|
**Parametry**
|
|
|
|
- `dtaName` — ścieżka do pliku `.DTA`.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
DBOBJECTS^LOAD(VARSCURRARCADE);
|
|
DBITEMS^LOAD("$COMMON\ITEMS0.DTA");
|
|
```
|
|
|
|
### NEXT
|
|
|
|
```
|
|
void NEXT()
|
|
```
|
|
|
|
Przesuwa kursor do kolejnego wiersza.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
DBSCENE^NEXT();
|
|
```
|
|
|
|
### REMOVEALL
|
|
|
|
```
|
|
void REMOVEALL()
|
|
```
|
|
|
|
Usuwa wszystkie wiersze z bazy. Schemat ([`MODEL`](#model)) pozostaje bez zmian.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
DBITEMS^REMOVEALL();
|
|
```
|
|
|
|
### SAVE
|
|
|
|
```
|
|
void SAVE(STRING dtaName)
|
|
```
|
|
|
|
Zapisuje aktualną zawartość bazy do pliku `.DTA` w tym samym formacie, którego oczekuje [`LOAD`](#load) (wiersze rozdzielone znakiem nowej linii, kolumny — znakiem `|`).
|
|
|
|
**Parametry**
|
|
|
|
- `dtaName` — ścieżka docelowego pliku `.DTA`.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
DBOBJECTS^SAVE(VARSCURRARCADE);
|
|
DBLEVEL^SAVE(["$COMMON\SAVE_BD\BD_CLEV"+VARIACTIVESLOT+".FLD"]);
|
|
```
|
|
|
|
### SELECT
|
|
|
|
```
|
|
void SELECT(INTEGER rowIndex)
|
|
```
|
|
|
|
Ustawia kursor na wiersz o podanym indeksie (liczonym od zera).
|
|
|
|
**Parametry**
|
|
|
|
- `rowIndex` — indeks docelowego wiersza.
|
|
|
|
**Przykłady**
|
|
|
|
```
|
|
DBOBJECTS^SELECT(0);
|
|
DBOBJECTS^SELECT(VARITER);
|
|
```
|
|
|
|
## Sygnały
|
|
|
|
### ONINIT
|
|
|
|
Wywoływany w momencie inicjalizacji obiektu.
|
|
|
|
### ONSIGNAL
|
|
|
|
Wywoływany po otrzymaniu sygnału (zobacz [Zdarzenia i sygnały](../engine/events.md#onsignal)).
|