Procedura-StringValueOfFieldWithDefNEm

Popis:
Procedura vrátí z tabulky historických dat údaj platný k zadanému datu. Pokud k danému datu údaj neexistuje, vrátí údaj z věty s nejnižším datem platnosti od. Pokud se v historii nenalezne vůbec žádný údaj, vrátí defaultní hodnotu.

Parametry:

NázevPopisDatový typ
AIDChar(10)
ACLSIDChar(26)
AFieldCodeInteger
ADateFloat(0, 0)
ADefaultVarChar(100)

Návratové hodnoty:

NázevPopisDatový typ
SValueVarChar(100)

Tělo:

BEGIN
  /* HistoryData - ostatní */
  SValue = '';
  mExist = 0;
  for
    SELECT B.StringFieldValue FROM HistoryData B
    WHERE B.ID=:AID AND B.CLSID=:ACLSID
      AND B.FieldCode=:AFieldCode AND B.ValidFrom$DATE = (
      SELECT MAX(C.ValidFrom$DATE) FROM HistoryData C
      WHERE C.ID=:AID AND C.CLSID = :ACLSID
        AND C.FieldCode=:AFieldCode AND C.ValidFrom$DATE <= :ADate)
    INTO SValue
  do begin
    mExist = 1;
  end
  /* Pokud se nenašel záznam k danému datu, tak se vezme hodnota ze záznamu s nejmenším datem. */
  if (mExist = 0) then begin
    mExist = 0;
    for
      SELECT B.StringFieldValue FROM HistoryData B
      WHERE B.ID=:AID AND B.CLSID=:ACLSID
        AND B.FieldCode=:AFieldCode AND B.ValidFrom$DATE = (
        SELECT MIN(C.ValidFrom$DATE) FROM HistoryData C
        WHERE C.ID=:AID AND C.CLSID = :ACLSID
          AND C.FieldCode=:AFieldCode)
      INTO SValue
    do begin
      mExist = 1;
    end
    /* Pokud se nenajde žádná hodnota v historii, tak se vrátí defaultní hodnota*/
    if (mExist = 0) then begin
      SValue = ADefault;
    end
  end
  Suspend;
END;

Generated by ABRA Software a.s. 27.10.2021 16:34:18