Interakcja z interfejsem bazy danych - Instrukcja obsługi programu R2środki, R2środkiPRO, R2środkiSBO RESET2 Oprogramowanie
Strona używa plików cookies (tzw. ciasteczka) do przechowywania i uzyskiwania dostępu do tej informacji w celach funkcjonalnych, statystycznych i reklamowych.
Użytkownik wyraża zgodę oraz określa warunki przechowywania lub uzyskiwania dostępu do informacji zawartej w plikach cookies za pomocą ustawień przeglądarki.
Dowiedz się więcej odwiedzając strony:

Polityka Prywatności    Regulamin sklepu      Jak wyłączyć cookies?

Przejdź do serwisu

Instrukcja obsługi R2środki



Interakcja z interfejsem bazy danych

Interakcja z interfejsem bazy danych

Funkcje API

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.

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

Odczytuje wartość tekstową z pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • Name - nazwa pola w tabeli

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

Zwracane wartości

Brak

Uwagi

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(Form,Name:PChar):integer;stdcall;

Odczytuje wartość liczbową z pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • 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.

Uwagi

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


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

Odczytuje wartość logiczną z pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • 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.

Uwagi

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


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

Odczytuje wartość zmiennoprzecinkową z pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • 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.

Uwagi

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


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

Odczytuje wartość typu data/czas z pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • 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.

Uwagi

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


procedure SetFieldBegin(Form:PChar);stdcall;

Rozpoczyna procedurę modyfikacji pól w tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

Zwracane wartości

Brak

Uwagi

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(Form,Name,Value:PChar);stdcall;

Zapisuje wartość tekstową do pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • Name - nazwa pola tabeli

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

Zwracane wartości

Brak

Uwagi

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(Form,Name:PChar; Value:integer);stdcall;

Zapisuje wartość liczbową do pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • Name - nazwa pola tabeli

  • Value - wartość liczbowa pola

Zwracane wartości

Brak

Uwagi

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


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

Zapisuje wartość logiczną do pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • Name - nazwa pola tabeli

  • Value - wartość logiczna pola

Zwracane wartości

Brak

Uwagi

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


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

Zapisuje wartość zmiennoprzecinkową do pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • Name - nazwa pola tabeli

  • Value - wartość zmiennoprzecinkowa pola

Zwracane wartości

Brak

Uwagi

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


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

Zapisuje wartość typu data/czas do pola tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

  • 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

Uwagi

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


procedure SetFieldEnd(Form:PChar);stdcall;

Kończy procedurę modyfikacji pól w tabeli przypisanej do danego okna

Parametry

  • Form - nazwa okna, do którego jest przypisana tabela

Zwracane wartości

Brak

Uwagi

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

Parametry

  • TableName - nazwa tabeli

  • FieldName - nazwa pola w bazie danych

  • DisplayLabel - nazwa pola w aplikacji podstawowej

  • FieldType - typ pola:

    • 0 - String (łańcuch znaków)
    • 1 - Integer (liczba całkowita na 4 bajtach)
    • 2 - SmallInt (liczba całkowita na 1 bajcie)
    • 3 - Currency (liczba na 4 bajtach z czterema miejscami po przecinku)
    • 4 - Float (liczba zmiennoprzecinkowa)
    • 5 - Date (data)
    • 6 - Time (czas)
    • 7 - DateTime (data i czas)
    • 8 - Boolean (logiczna)
    • 9 - Text (memo - BLOB)
    • 10 - 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

Uwagi

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

  • FieldName - nazwa pola

  • DisplayLabel - nazwa pola w aplikacji podstawowej

  • FieldType - typ pola:

    • 0 - String (łańcuch znaków)
    • 1 - Integer (liczba całkowita na 4 bajtach)
    • 2 - SmallInt (liczba całkowita na 1 bajcie)
    • 3 - Currency (liczba na 4 bajtach z czterema miejscami po przecinku)
    • 4 - Float (liczba zmiennoprzecinkowa)
    • 5 - Date (data)
    • 6 - Time (czas)
    • 7 - DateTime (data i czas)
    • 8 - Boolean (logiczna)
    • 9 - Text (memo - BLOB)
    • 10 - 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

Uwagi

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

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:

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

    • 1 - 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

Uwagi

Brak