Instrukcja administratora > Funkcje API > Interfejs użytkownika > Interakcja z interfejsem bazy danych

Drukuj

Interakcja z interfejsem bazy danych

Każde okno aplikacji podstawowej ma przypisaną jakąś tabelę, która generuje zestaw zdarzeń, które można przechwycić w aplikacji API funkcją GetMessage i tym samym mieć wpływ na zachowanie się interfejsu bazy danych. Można odczytywać i modyfikować pola z poszczególnych rekordów tabeli - zarówno te oryginalne z aplikacji, a także nowe pola użytkownika. Nalezy odróżnić poniższe funkcje od funkcji operacji na bazie danych. Tutaj odczytujemy i zapisujemy wartości pól z tabel aplikacji R2Płatnik działającej równolegle z aplikacją API, zaś przy operacjach na bazie danych otwieramy własne tabele i to do nich odnoszą się funkcje odczytu i zapisu rekordów

procedure GetFieldAsString(TableName,Name,Value:PChar);stdcall;

Odczytuje wartość tekstową z pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola w tabeli

Value - zmienna typu string na wartość tekstową pola

Zwracane wartości
Brak

Poniższe procedury służą do przekazywania do aplikacji API wartości pól rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej. Lista tabel i pól aplikacji jest dostępna w załączniku. Odczytać wartość pola można w dowolnym momencie, aczkolwiek pomocne może być tutaj przechwycenie zdarzenia Change o numerze 1020, które mówi nam jakie pole zostało zmienione w danej chwili przez użytkownika.

 

function GetFieldAsInt(TableName,Name:PChar):Integer;stdcall;

Odczytuje wartość liczbową z pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Zwracane wartości
Zwraca wartość liczbową pola tabeli z rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej.

Lista tabel i pól aplikacji jest dostępna w załączniku

 

function GetFieldAsBool(TableName,Name:PChar):Boolean;stdcall;

Odczytuje wartość logiczną z pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Zwracane wartości
Zwraca wartość logiczną pola tabeli z rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej.

Lista tabel i pól aplikacji jest dostępna w załączniku

 

function GetFieldAsFloat(TableName,Name:PChar):Double;stdcall;

Odczytuje wartość zmiennoprzecinkową z pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Zwracane wartości
Zwraca wartość zmiennoprzecinkową pola tabeli z rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej.

Lista tabel i pól aplikacji jest dostępna w załączniku

 

function GetFieldAsDateTime(TableName,Name:PChar):Double;stdcall;

Odczytuje wartość typu data/czas z pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Zwracane wartości
Zwraca wartość typu data/czas pola tabeli z rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej. Część całkowita to liczba dni od 31-12-1899, zaś część ułamkowa to czas w milisekundach jaki upłynął od godz. 0:00.

Lista tabel i pól aplikacji jest dostępna w załączniku

 

procedure SetFieldBegin(TableName:PChar);stdcall;

Rozpoczyna procedurę modyfikacji pól w tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Zwracane wartości
Brak

Jeśli chcemy zmienić wartości jakichkolwiek pól w tabeli przypisanej do danego okna, najpierw należy zainicjować procedurę modyfikacji. Najlepiej to zrobić wywołując SetFieldBegin w aplikacji API w momencie przechwycenia zdarzenia AfterInsert lub AfterEdit tabeli (zdarzenia numer 1013 i 1014)

Przykład

if InitMessageQueue then begin

 repeat

   if GetMessage(Msg) then begin

     1013,1014:SetFieldBegin(JakisForm)

     1018:begin

       SetFieldAsString(JakisForm,'PoleX','NowaWartoscPola');

       SetFieldEnd(JakisForm)

     end;

   end;

 until False

 DestroyMessageQueue;

end;

 

procedure SetFieldAsString(TableName,Name,Value:PChar);stdcall;

Zapisuje wartość tekstową do pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Value - zmienna typu string na wartość tekstową pola

Zwracane wartości
Brak

Poniższe procedury służą do przekazywania z aplikacji API do aplikacji podstawowej, wartości pól rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej. Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin

 

procedure SetFieldAsInt(TableName,Name:PChar; Value:Integer);stdcall;

Zapisuje wartość liczbową do pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Value - wartość liczbowa pola

Zwracane wartości
Brak

Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin

 

procedure SetFieldAsBool(TableName,Name:PChar; Value:Boolean);stdcall;

Zapisuje wartość logiczną do pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Value - wartość logiczna pola

Zwracane wartości
Brak

Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin

 

procedure SetFieldAsFloat(TableName,Name:PChar; Value:Double);stdcall;

Zapisuje wartość zmiennoprzecinkową do pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Value - wartość zmiennoprzecinkowa pola

Zwracane wartości
Brak

Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin

 

procedure SetFieldAsDateTime(TableName,Name:PChar; Value:Double);stdcall;

Zapisuje wartość typu data/czas do pola tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Name - nazwa pola tabeli

Value - wartość typu data/czas pola (część całkowita, to liczba dni od 31-12-1899, zaś część ułamkowa to czas w milisekundach jaki upłynął od godz. 0:00)

Zwracane wartości

Brak

Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin

 

procedure SetFieldEnd(TableName:PChar);stdcall;

Kończy procedurę modyfikacji pól w tabeli działającej aplikacji R2Płatnik

Parametry

TableName - nazwa tabeli w aplikacji

Zwracane wartości
Brak

Jeśli chcemy zatwierdzić zmiany wartości jakichkolwiek pól w tabeli przypisanej do danego okna, najpierw należy zakończyć procedurę modyfikacji. Należy to zrobić wywołując SetFieldEnd w aplikacji API w momencie przechwycenia zdarzenia AfterPostAddon tabeli (zdarzenie numer 1018)

 

procedure AddUserField(TableName,FieldName,DisplayLabel:PChar; FieldType:Byte; Size:Integer; Visible,ReadOnly:Boolean);stdcall;

Dodaje pole użytkownika do dowolnej tabeli aplikacji

Parametry

TableName - nazwa tabeli w aplikacji

FieldName - nazwa pola w bazie danych

DisplayLabel - nazwa pola w aplikacji podstawowej

FieldType - typ pola:

o0 - String (łańcuch znaków)

o1 - Integer (liczba całkowita na 4 bajtach)

o2 - SmallInt (liczba całkowita na 1 bajcie)

o3 - Currency (liczba na 4 bajtach z czterema miejscami po przecinku)

o4 - Float (liczba zmiennoprzecinkowa)

o5 - Date (data)

o6 - Time (czas)

o7 - DateTime (data i czas)

o8 - Boolean (logiczna)

o9 - Text (memo - BLOB)

o10 - Graphic (obrazek - BLOB)

Size - rozmiar pola w bazie (odnosi się tylko do pól typu "string" i "text")

Visible - czy pole ma być widoczne w oknie aplikacji podstawowej

ReadOnly - czy pole ma mieć atrybut "tylko do odczytu"

Zwracane wartości
Brak

 

procedure AddUserLookupField(TableName,FieldName,DisplayLabel:PChar; FieldType:Byte; Size:Integer; Visible,ReadOnly:Boolean; LookupTable,KeyField,LookupKeyField,LookupResultField:PChar);stdcall;

Dodaje pole użytkownika typu "wgląd do innej tabeli" (lookup)

Parametry

TableName - nazwa tabeli w aplikacji

FieldName - nazwa pola

DisplayLabel - nazwa pola w aplikacji podstawowej

FieldType - typ pola:

o0 - String (łańcuch znaków)

o1 - Integer (liczba całkowita na 4 bajtach)

o2 - SmallInt (liczba całkowita na 1 bajcie)

o3 - Currency (liczba na 4 bajtach z czterema miejscami po przecinku)

o4 - Float (liczba zmiennoprzecinkowa)

o5 - Date (data)

o6 - Time (czas)

o7 - DateTime (data i czas)

o8 - Boolean (logiczna)

o9 - Text (memo - BLOB)

o10 - Graphic (obrazek - BLOB)

Size - rozmiar pola w bazie (odnosi się tylko do pól typu "string" i "text")

Visible - czy pole ma być widoczne w oknie aplikacji podstawowej

ReadOnly - czy pole ma mieć atrybut "tylko do odczytu"

LookupTable - tabela, do której ma wgląd pole ('tabela lookup')

KeyField - nazwa pola w tabeli, wg którego następuje wgląd do 'tabeli lookup' (klucz obcy - z reguły należy wcześniej utworzyć takie pole typu Integer np."X_IDowolnejBiblioteki")

LookupKeyField - nazwa pola w 'tabeli lookup', wg którego następuje do niej wgląd (klucz podstawowy - z reguły będzie to pole "X_I")

LookupResultField - nazwa pola w 'tabeli lookup', które ma być rezultatem wglądu

Zwracane wartości
Brak

Lista tabel aplikacji jest dostępna w załączniku

 

procedure CreateUserTable(Name,TableName, MasterTable:PChar; Kind:Byte; Bin, LPR, Visible, Auto:Boolean);stdcall;

Tworzy nową tabelę użytkownika do aplikacji

Parametry

Name - nazwa tabeli w aplikacji

TableName - nazwa tabeli w bazie danych

MasterTable - nazwa tabeli nadrzędnej (master) - tylko jeśli parametr Kind=4; w pozostałych przypadkach pusta

Kind - rodzaj tabeli:

o0 - Biblioteka (tabela niezależna - pojawi się w Menu-Okna-biblioteki użytkownika)

o1 - Dane podstawowe (tabela zależna od tabeli 'PRACOWNICY' - pojawi się w oknie głównym na pasku 'Dane podstawowe')

o2 - Zatrudnienie (tabela zależna od tabeli 'PRACOWNICY' - pojawi się w oknie głównym na pasku 'Zatrudnienie')

o3 - Rozliczenie pracy (tabela zależna od tabeli 'AKTUALNE ZATRUDNIENIE' - pojawi się w oknie głównym na pasku 'Rozliczenie pracy')

o4 - Do tabeli (tabela zależna od tabeli nadrzędnej MasterTable)

Bin - czy tabela ma być umieszczona w bazie danych 'Bin' (wspólnej dla firm)

LPR - czy do tabeli ma zostać utworzone okno typu 'Lista-Pozycja-Razem'

Visible - czy tabela ma być widoczna w aplikacji jako pozycja w Menu-Biblioteki użytkownika (jeśli parametr Kind=4) lub na paskach okna głównego, czy tylko w bazie danych

Auto - czy tabela ma być typu "AutoTransact", tzn. jeśli będzie posiadać tabelę podrzędną (detail), to jej edycja wprowadzi tabelę nadrzędną (master) również w tryb edycji. Rezygnacja ze zmian wprowadzonych w tabeli nadrzędnej (master) spowoduje także rezygnację ze zmian w tabeli podrzędnej (detail)

Zwracane wartości
Brak