получение значения переменной из программы
Есть SQL запрос, который возвращает числа 1,2,6. Нужно вместо них вывести на бэнде данных "один", "два", "много".
Т.е. сделать join с некоторой виртуальной таблицой, которая строиться в программе. Идеальным вариантом был бы вызов функции на каждую строку выборки, куда следует передать значение (1,2,6), а вернуть желаемые результаты для отображения.
Пока использую длиннющий select с case when ..., но ИМХО, это совсем не правильно и не красиво.
Вариант с деланьем своего массива или датасета, в котором уже будет заменённые строки выборки и передача его через report.RegisterData тоже что-то не вдохновляет.
Как-нибудь это можно проще сделать? Есть какое-нибудь событие, в котором можно заменить значение параметра - эдакий SetParameterValue для каждой строки выборки?
Т.е. сделать join с некоторой виртуальной таблицой, которая строиться в программе. Идеальным вариантом был бы вызов функции на каждую строку выборки, куда следует передать значение (1,2,6), а вернуть желаемые результаты для отображения.
Пока использую длиннющий select с case when ..., но ИМХО, это совсем не правильно и не красиво.
Вариант с деланьем своего массива или датасета, в котором уже будет заменённые строки выборки и передача его через report.RegisterData тоже что-то не вдохновляет.
Как-нибудь это можно проще сделать? Есть какое-нибудь событие, в котором можно заменить значение параметра - эдакий SetParameterValue для каждой строки выборки?
Комментарии
Добавьте в источник данных вычисляемое поле (окно "Данные", выберите источник, в контекстном меню выберите создание нового поля). В св-ве Expression поля укажите вызов ф-и из скрипта, которая будет выполнять преобразование.
- в меню Отчет/Свойства, закладка Скрипт - добавьте ссылку на свой модуль с функцией (обычно - .ехе);
- ф-я должна быть статическим методом любого класса, объявленного как public;
- вызвать ее можно так:
MyNamespace.MyClass.MyFunction()
прописывать, как я понял, полный путь exe-шника надо? а в релизе заменять что ли этот путь на текущий exe-шник при создании объекта отчёта?
Я если моя сборка для .NET 3.5/4.0 и запускается все это та такой же платформе, то такое тоже можно сделать? Или все равно надо отдельно создавать сборки под .NET 2?
Если сборка под .Net 4 - значит, использовать надо FastReport.Net для .Net 4.