Ошибка не в функции это точно
откуда такая уверенность? Может эта функция просто не предназначена для использования так, как Вы хотите? Для начала надо хотя бы понимать что вообще функция возвращает и в каком виде, а уже потом пробовать применять.
программа которая успешно её использует
Видимо, она правильно её использует, передает правильные параметры и возможно, вообще не через Recordset это делает.
Вы кроме этого текста "Функция, возвращающая множество, вызвана в контексте, где ему нет места" никаких дополнительных данных об ошибке не получаете? И на какой строке? Сразу на Open?
Я бы вообще посоветовал на более профильный форум обратиться(по SQL). Хотя без текста функции вероятность получения ответа стремится к нулю.