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