Instrukcja administratora > Funkcje API > Interfejs użytkownika > Interakcja z interfejsem bazy danych | | Drukuj |
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 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 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 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 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 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 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 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 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 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 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 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
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 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 |