powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Использование внедренного кода в Reporting Services
12 сообщений из 12, страница 1 из 1
Использование внедренного кода в Reporting Services
    #38018123
EvgenOrel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
При построении отчета используется множество вычисляемых полей использующих одинаковые условия и одинаковый код
Чтобы не плодить практически идентичные функции можно ли их вычислить в пользовательском коде (Отчет-свойства отчета-код) и как запустить их расчет
Т.е. использовать что то наподобие
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Dim var1 as Double
Public Dim var2 as Double
....
Public Dim varN as Double
Public sub setData (f as microsoft.reportingservices.reportprocessing.reportobjectmodel.fields)
 if f!field0.value=0 then
     var1=f!field1
     var2=f!field2
else 
     var1=-f!field2
     var2=0
end if
varN=var1+var2
varN-1=var1-var2
End Sub


В итоге в поля отчета должны вставлятся
=Code.var1
....
= Code.varN

И откуда можно запустить выполнение этого кода(Code.setData(Fields))
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018171
Andrews25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018244
EvgenOrel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тут все понятно, приблизительно так же как и написал, только переменная задается в другом месте.

Весь вопрос в том откуда делать вызов:
Код: sql
1.
Code.setData(Fields)


Для одной переменной все просто - одна функция - одна переменная. Но когда таких переменных много? И, как писал выше - для нескольких переменных используются одни и теже условия - получится много одинаковых функций
Я пробовал делать так
Public Dim v as Integer
Publict Function setD()
v=20
return 0
End Function

В отчет добавлял textbox = Code.setD()
и textbox =Code.v который выводит значение 0.
как вывести 20?
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018304
Andrews25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgenOrel,

не поняла, почему это функций должно быть много??
Одна функция может обслужить много переменных, поскольку внутри тела функции никак не используется имя переменной. Переменная же по ссылке передается.
в примере так
Код: vbnet
1.
2.
3.
4.
Public Function SetVariableValue(val as Microsoft.ReportingServices.ReportProcessing.OnDemandReportObjectModel.Variable, newval As Integer) as Integer
val.Value = val.Value + newval
Return Val.Value
End Function




ее можно передать так
Код: vbnet
1.
=Code.SetVariableValue(Variables!v1, 2)

или
так
Код: vbnet
1.
=Code.SetVariableValue(Variables("v1"), 2)



или вообще так
Код: vbnet
1.
=Code.SetVariableValue(Variables(Fields!VariableName.Value), Fields!ParameterToCalcVariable.Value)



тогда если сделать tablix, основанный на dataset с полем, в котором содержатся имена переменных (VariableName) и другим полем, в котором содержатся соответствующие значения (ParameterToCalcVariable), то ниже этого tablix все значения переменных будут рассчитаны

проверила - работает


Но если вдруг в dataset в поле VariableName будут имена переменные, которые в отчете не определены , то все повалится:)


P.S. Это все в предположении, что я правильно поняла, что Вам требуется
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018311
Andrews25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgenOrel,

когда я говорю про переменные, я имею в виду переменные, определенные в ReportProperties Variables, а не внутри сегмента Code. даже не пробовала с такими (из сегмента Code) работать в теле отчета
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018372
EvgenOrel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrews25,

Дело в том что не одной переменной нужно опеределить значение, а несколько переменных, которые вычисляются в зависимости друг от друга:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public sub setData (f as microsoft.reportingservices.reportprocessing.reportobjectmodel.fields)
 if f!field0.value=0 then
     var1=f!field1
     var2=f!field2
else 
     var1=-f!field2
     var2=0
end if
varN=var1+var2
varN-1=var1-var2
End Sub


все переменные var1,var2,...,varN выводятся в теле отчета, то есть в одном поле мне нужно вывести var1 а в другом varN
Можно все это сделать функцией, где указывать параметр какую переменную возвращать
Код: sql
1.
2.
3.
4.
5.
select par
  case 1 return var1
....
  case N return varN
end select


но опять таки - функция будет вызываться в каждом месте, вместо того чтобы выполнить ее один раз
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018458
Andrews25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgenOrel,

если переменных конечное количество, то передайте их каждую своим отдельным параметром. Измените значение переменных в коде функции. Как передать туда коллекцию полей - пока не знаю :)


Код: vbnet
1.
2.
3.
Public Function SetVariableValue2(val as Microsoft.ReportingServices.ReportProcessing.OnDemandReportObjectModel.Variable, val2 as Microsoft.ReportingServices.ReportProcessing.OnDemandReportObjectModel.Variable)
val2.Value = val.Value + 15
End Function



в expression для textbox ПЕРЕД место , где должны использоваться переменные v1 и v2 - пишу


Код: vbnet
1.
=Code.SetVariableValue2(Variables!v1,Variables!v2)
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018507
EvgenOrel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrews25, принцип я понял, хотя хотелось все таки немного другого - в коде описать все переменные и использовать их оттуда.Но все равно спасибо )
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018682
Andrews25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgenOrel,

кстати
можно передать всю коллекцию Variables одни махом
синтаксис обращения к конкретной переменной обычный

Код: vbnet
1.
2.
3.
Public Function SetVariableValue3(vars as Microsoft.ReportingServices.ReportProcessing.OnDemandReportObjectModel.Variables)
vars("v1").Value = 88
End Function



а с коллекцией Fields все еще непонятно
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38018753
Andrews25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgenOrel,

ну параметр Fields определенный вообще без Namespace понимает!!!


Код: vbnet
1.
2.
3.
Public Function SetVariableValue4(falls as Fields)
RETURN Cstr(falls("какое-то имя поля").Value)
End Function



вызов
Код: vbnet
1.
=Code.SetVariableValue4(Fields)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Использование внедренного кода в Reporting Services
    #38630059
philips
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как получить коллекцию Fields если более 1 DataSet?
...
Рейтинг: 0 / 0
Использование внедренного кода в Reporting Services
    #38630317
Andrews25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм

Для этого надо вызывать функцию из той части отчета, в которой ВИДИМ нужный вам dataset
Т.е. добавить tablix или chart, который берет данный из этого dataset

Может что-то более хитрое есть - но я не в курсе
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Использование внедренного кода в Reporting Services
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]