Search Results for

    Show / Hide Table of Contents

    Обращение к источникам данных

    Для обращения к полям источников данных используется следующая форма записи:

    [Имя источника.Имя поля]
    

    Имя источника отделяется от имени поля точкой, например:

    [Employees.FirstName]
    

    Имя источника может быть составным в случае, если мы обращаемся к источнику данных, используя связь (relation). Подробнее о связях рассказано в главе "Данные". Например, так можно обратиться к полю связанного источника данных:

    [Products.Categories.CategoryName]
    

    Рассмотрим следующий пример использования полей в выражении:

    [Employees.FirstName] + " " + [Employees.LastName]
    

    Здесь надо сделать важное замечание. Каждое поле имеет определенный тип данных - он задается в свойстве DataType поля (его можно увидеть в окне "Свойства", если предварительно выбрать поле данных в окне "Данные"). От того, какой тип имеет поле, зависит, каким образом его можно использовать в выражении. Так, в примере выше, оба поля (имя и фамилия) имеют строковый тип и поэтому их допустимо использовать таким образом. В следующем примере мы попробуем использовать поле Employees.Age числового типа, что приведет к ошибке:

    [Employees.FirstName] + " " + [Employees.Age]
    

    Ошибка происходит потому, что нельзя напрямую складывать строку и число. Для этого число надо явным образом преобразовать в строку:

    [Employees.FirstName] + " " + [Employees.Age].ToString()
    

    В данном случае мы обращаемся с полем Employees.Age так, будто это целочисленная переменная. Так оно и есть. Мы уже знаем, что все выражения компилируются в исполняемый код. Все нестандартные с точки зрения компилятора вещи (вроде обращения к системным переменным и полям данных) конвертируются в другой вид, понятный компилятору. Так, последнее выражение будет преобразовано в следующий вид:

    (string)(Report.GetColumnValue("Employees.FirstName")) + " " + 
    (int)(Report.GetColumnValue("Employees.Age")).ToString()
    

    Как видно, FastReport при компиляции выражений заменяет обращения к полям данных следующим образом:

    [Employees.FirstName] --> (string)(Report.GetColumnValue("Employees.FirstName"))

    [Employees.Age] --> (int)(Report.GetColumnValue("Employees.Age"))

    То есть, мы можем использовать поле БД в выражениях, как будто это переменная, имеющая определенный тип. Например, следующее выражение вернет первый символ имени сотрудника:

    [Employees.FirstName].Substring(0, 1)
    
    Back to top © 1998-2025 Copyright ООО «Быстрые отчеты»