2016-06-17 17 views
1

我有一個要求,在轉換後使用表達式構建器轉換ID(十進制例子,536879311820)並顯示在SSRS表中,如圖所示。 enter image description hereSSRS中的數字轉換

轉換的規則是這樣的:

  • 轉換數爲十六進制,並採取合適的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