Procedura-TreePosition

Parametry:

NázevPopisDatový typ
RECORD_IDChar(10)
TABLE_NAMEChar(31)
PRIMARY_KEY_NAMEChar(31)
PARENT_FIELD_NAMEChar(31)
ORDER_FIELD_NAMEChar(31)
IS_INTEGERSmallInt

Návratové hodnoty:

NázevPopisDatový typ
RECORD_POSITIONVarChar(300)

Závislosti:

NázevPopisTřída
ib_String_LeftVrací prvních n znaků.Procedures

Tělo:

BEGIN
  IF (
    (:TABLE_NAME IS NOT NULL) AND
    (:RECORD_ID IS NOT NULL) AND
    (:PARENT_FIELD_NAME IS NOT NULL))
  THEN
  BEGIN
    -- ZKONTROLUJEME, ZDA MA VUBEC CENU NECO RESIT
    SELECT_STATEMENT = 'SELECT COUNT ('||:PRIMARY_KEY_NAME||') FROM '||:TABLE_NAME||' WHERE '||:PRIMARY_KEY_NAME||' = '''||:RECORD_ID||'''';
    EXECUTE STATEMENT SELECT_STATEMENT INTO :RECORD_COUNT;
    IF (:RECORD_COUNT > 0) THEN
    BEGIN
      -- NASTAVIME PROMENNE
      RECORD_POSITION = '';
      TMP_REC_POS = '';
      PARENT_ID = '0';
      -- CYKLEM PROJEDEME VSECHNY VETVE OD VYBRANEHO ZAZNAMU AZ KE KORENI
      WHILE (NULLIF (:PARENT_ID, '') IS NOT NULL) DO
      BEGIN
        ORDER_FIELD_NAME = COALESCE (NULLIF (:ORDER_FIELD_NAME, ''), 'NULL');
        PARENT_FIELD_NAME = COALESCE (NULLIF (:PARENT_FIELD_NAME, ''), 'NULL');
        SELECT_STATEMENT = 'SELECT CAST ('||:ORDER_FIELD_NAME||' AS VARCHAR (30)), '||:PARENT_FIELD_NAME||' FROM '||:TABLE_NAME||' WHERE '||:PRIMARY_KEY_NAME||' = '''||:RECORD_ID||'''';
        EXECUTE STATEMENT SELECT_STATEMENT INTO :ORDER_CH_VALUE, :PARENT_ID;
        IF (:IS_INTEGER = 1) THEN
          ORDER_CH_VALUE = IB_LPAD (:ORDER_CH_VALUE, 30, '0');
        ELSE
        BEGIN
          LN = IB_STRING_LENGTH (:ORDER_CH_VALUE);
          WHILE (LN < 30) DO
          BEGIN
            ORDER_CH_VALUE = :ORDER_CH_VALUE || ' ';
            LN = :LN + 1;
          END
        END
        PARENT_ID = NULLIF (:PARENT_ID, ' ');
        RECORD_ID = :PARENT_ID;
        TMP_REC_POS = IB_STRING_LEFT (:ORDER_CH_VALUE || :TMP_REC_POS, 3000);
      END
      IF (NULLIF (TMP_REC_POS, '') IS NOT NULL) THEN
      BEGIN
        RECORD_POSITION = IB_STRING_LEFT (:TMP_REC_POS, 300);
        SUSPEND;
      END
    END
  END
END

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