Заказ звонка

Закрыть

*
*
*

Функция в качестве значения

Страницы: 1 2 След.
RSS
Функция в качестве значения
У меня есть источник данных в новом репортере - запрос, который в кратце представляет собой перечень номенклатуры и серийных номеров. Мне необходимо, чтобы выводился этот перечень номенклатуры, а серийные номера в пределах одной номенклатуры обрабатывались VBA функцией. Дело в том, что в нашей организации принята такая нумеровка: "AAAA.nn", где AAAA - префикс серийного номера, а nn - двухзначное число, мне надо вывести номера в таком формате: AAAA.01-23; BBBB.05-07, 09; CCCC.01-10, 12-30.
SQL с такой штукой не справится, думаю написать собственную функцию на VBA. Вот только как в нее передать запрос? Не могли бы вы сделать какой-нибудь пример, от которого я могу оттолкнуться, скажем, пример функции, которая на основании SQL-запроса - источника данных вернет через запятую все значения колонок? И вообще, это возможно?
Основная проблема, которую мне надо решить - возможность передачи в пользовательскую функцию источника данных в виде ADODB.RecordSet. Это возможно?
Цитата
Станислав Белоусов пишет:
Не могли бы вы сделать какой-нибудь пример, от которого я могу оттолкнуться, скажем, пример функции, которая на основании SQL-запроса - источника данных вернет через запятую все значения колонок?


Посмотрите вот это (вдруг поможет)
Код
SEL ECT (V_NOMENCLATURE.NAME + ', ') as [*]
FROM V_NOMENCLATURE
FOR XML PATH ('')
Это мне не интересно, так как у меня задача сложная и средствами SQL ее не решить, хочу написать VBA функцию и ее использовать. Есть ли такие примеры?
Прямо такого конкретного примера нет. Как-то обходились без таких заморочек.
А в чём, собственно, сложности?
Добавляете запрос как приведен выше, только с условием по ID номенклатуры.
Делаете область CalculatedValue1, в которую пишете вызов запроса, с присвоением конкретного значения параметра, который берется из основного источника данных.
Пользовательскую функцию, допустим используете уже непосредственно в реквизитах. Вызов делаете с параметром типа 7, т.е. CalculatedValue1.
Функцию по обработке такой строки, думаю, легко напишите сами.
У меня задача по сложнее, смотрите выше. Думаете через SQL ее можно решить?
Я пока не понимаю в каком месте у Вас сложности. После чего такого Вы пришли к выводу, что Вам нужна VBA-функция, причём, которой обязательно ADODB.RecordSet на вход?
прочитайте самое первое сообщение, там вся моя проблема расписана. Я решил что через SQL ее не реализовать, поэтому решил использовать VBA. Может вы чего посоветуете?
Я насколько понял, настолько и посоветовал smile:D (см. пост №3 и №5)
В вашем случае результат будет таким: AAAA.01, AAAA.02, AAAA.03 и т.д, а мне надо еще короче(((
AAAA.01-23; BBBB.05-07, 09; CCCC.01-10, 12-30
Страницы: 1 2 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)