получение значения переменной из программы

отредактировано 14:42 Раздел: FastReport .NET
Есть SQL запрос, который возвращает числа 1,2,6. Нужно вместо них вывести на бэнде данных "один", "два", "много".
Т.е. сделать join с некоторой виртуальной таблицой, которая строиться в программе. Идеальным вариантом был бы вызов функции на каждую строку выборки, куда следует передать значение (1,2,6), а вернуть желаемые результаты для отображения.

Пока использую длиннющий select с case when ..., но ИМХО, это совсем не правильно и не красиво.
Вариант с деланьем своего массива или датасета, в котором уже будет заменённые строки выборки и передача его через report.RegisterData тоже что-то не вдохновляет.

Как-нибудь это можно проще сделать? Есть какое-нибудь событие, в котором можно заменить значение параметра - эдакий SetParameterValue для каждой строки выборки?

Комментарии

  • отредактировано 14:42
    Здравствуйте,

    Добавьте в источник данных вычисляемое поле (окно "Данные", выберите источник, в контекстном меню выберите создание нового поля). В св-ве Expression поля укажите вызов ф-и из скрипта, которая будет выполнять преобразование.
  • отредактировано 14:42
    Можно при этом вызвать функцию, которая выполняется в моём c# коде и работает с моими классами? Пример-то утрированный и в реальном приложении идёт обращение к виртуальной таблице, где значения из БД являются ключами данной таблицы. Т.е. что-то вроде VTable.ById( DBValue ).Name
    AlexTZ написал: »
    Здравствуйте,

    Добавьте в источник данных вычисляемое поле (окно "Данные", выберите источник, в контекстном меню выберите создание нового поля). В св-ве Expression поля укажите вызов ф-и из скрипта, которая будет выполнять преобразование.
  • отредактировано 14:42
    Можно. Сделайте следующее:
    - в меню Отчет/Свойства, закладка Скрипт - добавьте ссылку на свой модуль с функцией (обычно - .ехе);
    - ф-я должна быть статическим методом любого класса, объявленного как public;
    - вызвать ее можно так:
    MyNamespace.MyClass.MyFunction()
  • отредактировано 14:42
    AlexTZ написал: »
    Можно. Сделайте следующее:
    - в меню Отчет/Свойства, закладка Скрипт - добавьте ссылку на свой модуль с функцией (обычно - .ехе);
    - ф-я должна быть статическим методом любого класса, объявленного как public;
    - вызвать ее можно так:
    MyNamespace.MyClass.MyFunction()

    прописывать, как я понял, полный путь exe-шника надо? а в релизе заменять что ли этот путь на текущий exe-шник при создании объекта отчёта?
  • отредактировано 14:42
    AlexTZ написал: »
    Можно. Сделайте следующее:
    - в меню Отчет/Свойства, закладка Скрипт - добавьте ссылку на свой модуль с функцией (обычно - .ехе);
    - ф-я должна быть статическим методом любого класса, объявленного как public;
    - вызвать ее можно так:
    MyNamespace.MyClass.MyFunction()
    Добрый день!

    Я если моя сборка для .NET 3.5/4.0 и запускается все это та такой же платформе, то такое тоже можно сделать? Или все равно надо отдельно создавать сборки под .NET 2?
  • отредактировано 14:42
    Полный путь прописывать не надо, только имя файла + расширение. При этом .exe и .dll FastReport'а должны лежать в одной папке.
    Если сборка под .Net 4 - значит, использовать надо FastReport.Net для .Net 4.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.