แชร์ผ่าน


รหัสที่กําหนดเองในนิพจน์ในรายงานที่มีการแบ่งหน้าในตัวสร้างรายงาน Power BI

นําไปใช้กับ: Power BI Report Builder Power BI Desktop

คุณสามารถเพิ่มรหัสที่กําหนดเองที่ฝังในรายงานได้ ใช้โค้ดฝังตัวสําหรับค่าคงที่แบบกําหนดเอง ฟังก์ชันที่ซับซ้อน หรือฟังก์ชันที่ใช้หลายครั้งในรายงานเดียว รหัสที่กําหนดเองสามารถรวมถึงค่าคงที่แบบกําหนดเองใหม่ ตัวแปร ฟังก์ชัน หรือ subroutines คุณสามารถรวมการอ้างอิงแบบอ่านอย่างเดียวไปยังคอลเลกชันภายในเช่น คอลเลกชันพารามิเตอร์ อย่างไรก็ตาม คุณไม่สามารถส่งผ่านชุดของค่าข้อมูลรายงานไปยังฟังก์ชันแบบกําหนดเองได้ โดยเฉพาะ การรวมแบบกําหนดเองจะไม่ได้รับการสนับสนุน

หมายเหตุ

แอสเซมบลีแบบกําหนดเองไม่ได้รับการสนับสนุนในรายงานที่มีการแบ่งหน้าบน Power BI พิจารณาการแปลงตรรกะจากแอสเซมบลีแบบกําหนดเองเป็นโค้ดฝังตัว สําหรับตัวอย่างของทางเลือกในการพิจารณา ตรวจสอบ ทางเลือกของแอสเซมบลี

สำคัญ

สําหรับการคํานวณที่คํานึงถึงเวลาซึ่งจะประเมินครั้งเดียวในขณะทํางาน และคุณต้องการคงค่าเดิมไว้ตลอดการประมวลผลรายงาน ให้พิจารณาว่าจะใช้ตัวแปรรายงานหรือตัวแปรกลุ่มหรือไม่ สําหรับข้อมูลเพิ่มเติม ดูการอ้างอิงคอลเลกชันของคอลเลกชันของตัวแปรรายงานและกลุ่ม (ตัวสร้างรายงานใน Power BI)

รวมการอ้างอิงไปยังฟังก์ชันที่ใช้กันทั่วไป

ใช้กล่องโต้ตอบนิพจน์เพื่อดูรายการแบบจัดหมวดหมู่ของฟังก์ชันทั่วไปที่มีอยู่ภายในตัวสร้างรายงาน เมื่อคุณขยาย ฟังก์ชัน ทั่วไป และเลือกประเภท บานหน้าต่าง รายการ จะแสดงรายการของฟังก์ชันที่คุณรวมไว้ในนิพจน์ ฟังก์ชันทั่วไปรวมถึงคลาสจาก .NET Framework Math และ Convert namespaces และฟังก์ชันไลบรารีเวลาเรียกใช้งานของ Visual Basic เพื่อความสะดวกคุณสามารถดูฟังก์ชัน ที่ใช้บ่อยที่สุดในกล่องโต้ตอบนิพจน์ ซึ่งจะแสดงรายการตามหมวดหมู่: ข้อความวันที่และเวลาคณิตศาสตร์การตรวจสอบลําดับโปรแกรมการรวมการเงินการแปลงและเบ็ดเตล็ด ฟังก์ชันที่ใช้กันน้อยกว่าจะไม่ปรากฏในรายการ แต่ยังคงสามารถใช้ในนิพจน์ได้

หากต้องการใช้ฟังก์ชันที่มีอยู่แล้วภายใน ให้ดับเบิลคลิกที่ชื่อฟังก์ชันในบานหน้าต่าง รายการ คําอธิบายของฟังก์ชันจะปรากฏขึ้นในบานหน้าต่าง คําอธิบาย และตัวอย่างของการเรียกฟังก์ชันจะปรากฏขึ้นในบานหน้าต่าง ตัวอย่าง ในบานหน้าต่างโค้ด เมื่อคุณพิมพ์ชื่อฟังก์ชัน ตามด้วยวงเล็บ ซ้าย (ตัวช่วย IntelliSense จะแสดงไวยากรณ์ที่ถูกต้องแต่ละตัวสําหรับการเรียกใช้ฟังก์ชัน ตัวอย่างเช่น เมื่อต้องการคํานวณค่าสูงสุดสําหรับเขตข้อมูลที่ Quantity ชื่อในตาราง ให้เพิ่มนิพจน์ =Max( อย่างง่ายไปยังบานหน้าต่าง โค้ด จากนั้นใช้สมาร์ทแท็ก เพื่อดูไวยากรณ์ที่ถูกต้องที่เป็นไปได้ทั้งหมดสําหรับการเรียกใช้ฟังก์ชัน เมื่อต้องการทําตัวอย่างนี้ให้เสร็จสมบูรณ์ ให้พิมพ์=Max(Fields!Quantity.Value)

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับแต่ละฟังก์ชัน ดูMathConvertสมาชิกไลบรารีรันไทม์ Visual Basic และ Visual Basic บน MSDN

รวมการอ้างอิงไปยังฟังก์ชันที่ใช้บ่อยน้อยกว่า

เมื่อต้องการรวมการอ้างอิงไปยังเนมสเปซ CLR ที่ใช้น้อยกว่า คุณต้องใช้การอ้างอิงแบบครบถ้วน ตัวอย่างเช่น StringBuilder IntelliSense ไม่ได้รับการสนับสนุนในบานหน้าต่างโค้ดของ กล่องโต้ตอบนิพจน์ สําหรับฟังก์ชันที่ใช้น้อยกว่านี้

สําหรับข้อมูลเพิ่มเติม ให้ดู สมาชิก ไลบรารีเวลาเรียกใช้งาน Visual Basic บน MSDN

รวมโค้ดฝังตัว

หากต้องการเพิ่มโค้ดฝังตัวไปยังรายงาน ให้ใช้แท็บ โค้ด ของ กล่องโต้ตอบ คุณสมบัติของ รายงาน บล็อกรหัสที่คุณสร้างสามารถมีหลายวิธี ต้องเขียนวิธีการในโค้ดแบบฝังตัวใน Microsoft Visual Basic และต้องเป็นตามอินสแตนซ์ ตัวประมวลผลรายงานจะเพิ่มการอ้างอิงสําหรับ Namespace System.Convert และ System.Math โดยอัตโนมัติ

วิธีการในโค้ดแบบฝังตัวจะพร้อมใช้งานผ่านสมาชิกโค้ดที่กําหนดไว้ทั่วโลก คุณสามารถเข้าถึงข้อมูลเหล่านี้ได้โดยอ้างอิงถึง สมาชิกโค้ด และชื่อเมธอด ตัวอย่างต่อไปนี้เรียกเมธอด ToUSD ซึ่งแปลงค่าใน StandardCost เขตข้อมูลเป็นค่าดอลลาร์:

=Code.ToUSD(Fields!StandardCost.Value)

เพื่ออ้างอิงคอลเลกชันที่มีอยู่แล้วภายในในโค้ดแบบกําหนดเองของคุณ ให้รวมการอ้างอิงไปยังวัตถุรายงานที่มีอยู่ภายใน:

=Report.Parameters!Param1.Value

ตัวอย่างต่อไปนี้แสดงวิธีการกําหนดค่าคงที่และตัวแปรที่กําหนดเองบางอย่าง

Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim  MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456

แม้ว่าค่าคงที่แบบกําหนดเองจะไม่ปรากฏในประเภทค่าคงที่ในกล่องโต้ตอบนิพจน์ (ซึ่งแสดงเฉพาะค่าคงที่ที่มีอยู่ภายใน) แต่คุณสามารถเพิ่มการอ้างอิงจากนิพจน์ใด ๆ ได้ ดังที่แสดงในตัวอย่างต่อไปนี้ ในนิพจน์ ค่าคงที่แบบกําหนดเองจะถือว่าเป็นตัวแปร

=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion

ตัวอย่างต่อไปนี้รวมถึงทั้งการอ้างอิงโค้ดและการใช้งานโค้ดของฟังก์ชัน FixSpelling ซึ่งแทนที่ข้อความ "Bicycle" สําหรับการปรากฏทั้งหมดของข้อความ "จักรยาน" ใน SubCategory เขตข้อมูล

=Code.FixSpelling(Fields!SubCategory.Value)

โค้ดต่อไปนี้เมื่อฝังในบล็อกรหัสข้อกําหนดของรายงาน จะแสดงการใช้งานวิธีการ FixSpelling ตัวอย่างนี้แสดงวิธีใช้การอ้างอิงแบบครบถ้วนไปยังคลาส Microsoft .NET Framework StringBuilder

Public Function FixSpelling(ByVal s As String) As String
   Dim strBuilder As New System.Text.StringBuilder(s)
   If s.Contains("Bike") Then
      strBuilder.Replace("Bike", "Bicycle")
      Return strBuilder.ToString()
      Else : Return s
   End If
End Function

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคอลเลกชันวัตถุที่มีอยู่ภายใน ให้ดู ส่วนกลางที่มีอยู่แล้วภายในและการอ้างอิงผู้ใช้ (ตัวสร้างรายงาน Power BI)

รวมการอ้างอิงถึงพารามิเตอร์จากรหัส

คุณสามารถอ้างอิงคอลเลกชันพารามิเตอร์ส่วนกลางผ่านรหัสที่กําหนดเองในบล็อกโค้ดของข้อกําหนดของรายงาน คอลเลกชันพารามิเตอร์เป็นแบบอ่านอย่างเดียวและไม่มีตัวทําซ้ําสาธารณะ คุณไม่สามารถใช้ Visual Basic สําหรับแต่ละ คอนสตรัคชันเพื่อดําเนินการผ่านคอลเลกชันได้ คุณจําเป็นต้องทราบชื่อของพารามิเตอร์ที่กําหนดไว้ในข้อกําหนดของรายงานก่อนที่คุณจะสามารถอ้างอิงในโค้ดของคุณได้ อย่างไรก็ตาม คุณสามารถทําซ้ําผ่านค่าทั้งหมดของพารามิเตอร์แบบหลายค่าได้

ตารางต่อไปนี้รวมถึงตัวอย่างของการอ้างอิงคอลเลกชัน Parameters ภายในจากโค้ดที่กําหนดเอง:

ส่งผ่านคอลเลกชันพารามิเตอร์ส่วนกลางทั้งหมดไปยังรหัสที่กําหนดเอง

ฟังก์ชันนี้ส่งกลับค่าของพารามิเตอร์รายงานเฉพาะ MyParameter

การอ้างอิงในนิพจน์ =Code.DisplayAParameterValue(Parameters)

ข้อกําหนดรหัสแบบกําหนดเอง

Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object
Return parameters("MyParameter").Value
End Function

การส่งผ่านแต่ละพารามิเตอร์ไปยังรหัสที่กําหนดเอง

การอ้างอิงในนิพจน์ =Code.ShowParametersValues(Parameters!DayOfTheWeek)

ตัวอย่างนี้ส่งกลับค่าของพารามิเตอร์ที่ส่งผ่าน ถ้าพารามิเตอร์เป็นพารามิเตอร์แบบหลายค่า สตริงที่ส่งกลับจะเป็นการเรียงต่อกันของค่าทั้งหมด

ข้อกําหนดรหัสแบบกําหนดเอง

Public Function ShowParameterValues(ByVal parameter as Parameter)
 as String
   Dim s as String
   If parameter.IsMultiValue then
      s = "Multivalue: "
      For i as integer = 0 to parameter.Count-1
         s = s + CStr(parameter.Value(i)) + " "
      Next
   Else
      s = "Single value: " + CStr(parameter.Value)
   End If
   Return s
End Function

ขั้นตอนถัดไป