ник: Vik
Навскидку - очень не советую использовать DLookup.
Для единичного выполнения еще терпимо, а в запросах к большим таблицам (или рекурсия, как в Вашем случае) может сильно тормозить..
Попробуйте функцию построить на рекордсете без рекурсии.
Внутри фугкции цыклично ищете по рекордсету, пока находите, при этом собирая необходимую строку