ฉันประสบปัญหาคล้ายกัน เช่น การเลือกฉลากที่จะพิมพ์ แต่ยังต้องพิมพ์มากกว่า 1 ฉลากต่อลูกค้าหนึ่งราย ปัญหาของฉันคือฉันไม่สามารถเข้าถึง SQL ได้ (เราใช้คิวบ์) ฉันใช้ SSRS 2012 กับ SharePoint มันไม่สวย แต่มันได้ผล
ฉันมีชุดข้อมูล 1 ชุดในรายงานของฉัน ฉันมีป้ายกำกับ 14 ป้าย - ด้านล่าง 7 อันและแนวขวาง 2 อัน แต่ละป้ายกำกับได้รับการตั้งค่าเป็น tablix ของตัวเอง
tablix จะมีหมายเลข 1 ถึง 14 เริ่มจากซ้ายบน ดังนั้น 1-7 ลงมาทาง "คอลัมน์" ทางซ้าย และ 8-14 จากด้านบนของ "คอลัมน์" ทางขวา
น่ารำคาญที่ค่าพารามิเตอร์เริ่มต้นจาก 0 ดังนั้นจึงมีหมายเลข 0-13 แต่ละ tablix ถูกตั้งค่าให้พอดีกับค่าพารามิเตอร์เฉพาะ เช่น tablix 1 ถูกตั้งค่าให้กรองด้วยค่าพารามิเตอร์ 0, tablix 2 ถูกกรองด้วยค่าพารามิเตอร์ 1, tablix 3 ถูกกรองด้วยค่าพารามิเตอร์ 2, tablix 4 ถูกกรองด้วยค่าพารามิเตอร์ 3 เป็นต้น
ฉันต้องพิมพ์ข้อมูลสองครั้งในฉลาก ดังนั้นฉันจึงใช้กล่องข้อความ 2 กล่องภายใน tablix ของฉัน
สร้างพารามิเตอร์
ผู้ใช้จะใช้รหัสลูกค้า (ตัวเลข 6 หลัก) เป็นค่าพารามิเตอร์ ฉันสร้างพารามิเตอร์ชื่อ ClientID สำหรับข้อความแจ้ง ฉันใส่ "แทนที่ 000000 สำหรับแต่ละป้ายกำกับที่ต้องการ 000000 = ป้ายกำกับว่างเปล่า"
ภายใต้ตัวเลือกทั่วไป ฉัน:
- changed Data type to Text
- เปิดใช้งาน อนุญาตให้มีค่าว่าง ("")
- เปิดใช้งาน อนุญาตให้มีหลายค่า
- ตั้งค่าเลือกการมองเห็นพารามิเตอร์เป็นมองเห็นได้
ค่าที่มีอยู่
- Default Values
- selected Specify values
- คลิกเพิ่มและตั้งค่าเป็น 00000 ฉันทำสิ่งนี้ 14 ครั้ง (ดังนั้นฉันจึงมีค่าเริ่มต้น 000000 สำหรับแต่ละป้ายกำกับ)
สร้าง tablix
จากนั้นฉันก็สร้าง tablix สำหรับแต่ละป้ายกำกับ พวกเขาทั้งหมดชี้ไปที่ชุดข้อมูลของฉัน (เรียกว่า "DataSet1" ในจินตนาการ) ประกอบด้วยเซลล์เดียว ซึ่งตรงกับความสูงและความกว้างของพื้นที่พิมพ์ฉลากของฉัน
สร้างกล่องข้อความ
ฉันเพิ่มกล่องข้อความแรกในเซลล์ tablix ฉันทำให้มันเล็กลงเล็กน้อยตามความกว้างของ tablix และลดลงจากด้านบนของ tablix
สร้างกล่องข้อความที่สองและย้ายลงจนกว่าจะตรงกับความต้องการของฉัน ใช้สูตรเดียวกันกับกล่องข้อความแรก (จำไว้ว่าฉันต้องพิมพ์ชื่อลูกค้าสองครั้ง)
ฉันใช้การค้นหาชุดข้อมูลในรายงานของฉัน ใช่ แม้ว่า tablix จะใช้ชุดข้อมูลนี้อยู่แล้วก็ตาม
สำหรับป้ายกำกับแรก สูตรสำหรับกล่องข้อความทั้งสองคือ:
=lookup(Parameters!ClientID.Value(0),
Fields!ID.Value,
UCase(Fields!Surname.Value),
"DataSet1")
& ", " &
lookup(Parameters!ClientID.Value(0),
Fields!ID.Value,
Fields!Given.Value,
"DataSet1")
สร้างตัวกรองสำหรับ tablix
ฉันยังต้องใช้ตัวกรองกับแต่ละ tablix ด้วย ดังนั้นมันจะพิมพ์ข้อมูลไคลเอนต์ที่เลือกผ่านพารามิเตอร์
ในคุณสมบัติ Tablix ภายใต้ตัวเลือกตัวกรอง + คลิกเพิ่ม + จากนิพจน์ ฉันเลือก ClientID ของฉัน + จากตัวดำเนินการ ฉันเลือก In + ในค่า ฉันคลิกปุ่ม Fx เพื่อสร้างสูตร =Parameters!ClientID.Value(0 )
ไม่แสดงค่าพารามิเตอร์เริ่มต้น
แน่นอนถ้าคุณปล่อยให้ค่าพารามิเตอร์เป็นค่าเริ่มต้น (000000) มันจะพิมพ์สิ่งนี้
วิธีเดียวที่ฉันสามารถป้องกันสิ่งนี้ได้คือการใช้สีแบบอักษร (ฉันไม่สามารถทำให้การมองเห็นทำงานได้) + คลิกขวาที่กล่องข้อความ + เลือกคุณสมบัติของกล่องข้อความ + คลิกที่ตัวเลือกแบบอักษร + ใต้สี คลิกปุ่ม Fx + ใช้สูตรนี้:
=iif(Parameters!ClientID.Value(0)="000000", "White", "Black")
สำหรับป้ายกำกับถัดไป
สำหรับป้ายกำกับที่สอง ฉันจัดทำดัชนีค่าในวงเล็บ เช่น (0) ถึง (1) สำหรับทั้งสูตรกล่องข้อความและสำหรับตัวกรองด้วย เช่น
=lookup(Parameters!ClientID.Value(1),
Fields!ID.Value,
UCase(Fields!Surname.Value),
"DataSet1")
& ", " &
lookup(Parameters!ClientID.Value(1),
Fields!ID.Value,
Fields!Given.Value,
"DataSet1")
และในตัวกรองคุณสมบัติ Tablix
=Parameters!ClientID.Value(1)
และในสูตรแบบอักษรของกล่องข้อความ
=iif(Parameters!ClientID.Value(1)="000000", "White", "Black")
จากนั้น ฉันจัดทำดัชนีตัวเลขนี้สำหรับป้ายกำกับแต่ละรายการถัดไป ดังนั้นป้ายกำกับสุดท้าย (ป้ายกำกับ 14) ค่าคือ:
=lookup(Parameters!ClientID.Value(13) etc
และในตัวกรองคุณสมบัติ Tablix
=Parameters!ClientID.Value(13)
และในสูตรแบบอักษรของกล่องข้อความ =iif(Parameters!ClientID.Value(13)="000000", "White", "Black")
ดังนั้น เมื่อผู้ใช้เรียกใช้รายงาน ผู้ใช้จะแทนที่ 000000, 000000, 000000 ฯลฯ ด้วยรหัสลูกค้าที่เหมาะสม
person
Adrift
schedule
05.10.2017