2016-06-17 3 views
1

У меня есть требование, когда я конвертирую идентификатор (десятичный пример, 536879311820) и отображаюсь в таблице SSRS после преобразования с использованием построителя выражений, как показано на рисунке. enter image description hereПреобразование числа в SSRS

Правило преобразования, как это:

  • Преобразование числа в шестнадцатеричной и принимать правильные 8 цифр (536879311820 в 00802BCC)
  • Преобразование принятые 8 цифр в десятичную и принять правильное 5 цифр (00802BCC до 8399820)

так 536879311820 должны быть отображены в отчете, 99820. Я пытался до следующего выражения в редакторе выражений,

=Right(HEX(Fields!PersonId.Value), 8) 

Поскольку результат этого выражения является шестнадцатеричным числом как строкой, я не могу найти какую-либо функцию в категории общих функций в построителе выражений.

ответ

1

Вы должны отформатировать строку как гекс после получения последних 8 cahracters:

=CDec("&H" + Right(Hex(536879311820), 8)) 
+0

спасибо, я просто искал это. – RotatingWheel

+0

@ RotatingWheel, пожалуйста, отметьте это как ответ, если это вам помогло. – StevenWhite

0

Это проще сделать в SQL. Вот код, который сделает это за вас. Я включил две дополнительные колонки, так что вы можете увидеть, как была вычислена в последней колонке:

SELECT CAST(123456789 AS VARBINARY(8)) HexValue, CONVERT(VARCHAR(MAX), CAST(123456789 AS VARBINARY(8)),2) AS VARCHARHEX, RIGHT(CONVERT(VARCHAR(MAX), CAST(123456789 AS VARBINARY(8)),2),5) AS Last5Chars 
+0

Я здание отчет, так где я должен использовать код? В конструкторе запросов? Могу ли я сделать это так, как я нацелился? – RotatingWheel

+0

Добавьте этот код в свой набор данных - например. в вашем представлении или хранимой процедуре. Если SQL хранится в вашем отчете, я бы рекомендовал получить его в БД в любом случае для удобства обслуживания. – BIDeveloper

Смежные вопросы