ปัญหานี้นำไปใช้กับ Microsoft SQL Server ๒๐๑๒ Reporting Services
อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณสร้างแอปพลิเคชัน Windows Forms หรือแอปพลิเคชัน Windows งานนำเสนอมูลฐาน (WPF) ที่ยึดตาม Microsoft .NET Framework ๔.๐
-
ในฟอร์ม Windows หรือแอปพลิเคชัน WPF คุณสามารถใช้ตัวควบคุม Microsoft Report Viewer ๒๐๑๐เพื่อแสดงรายงาน Microsoft SQL Server ๒๐๑๒ Reporting Services (SSRS ๒๐๑๒) ที่ทำงานในโหมดระยะไกล
-
รายงานมีพารามิเตอร์ชนิดDateTime ที่มีค่าเริ่มต้น
-
คุณเรียกใช้แอปพลิเคชันบนระบบปฏิบัติการที่มีการตั้งค่าภูมิภาคเป็นภาษาอิตาลี นอกจากนี้รูปแบบเวลาแบบยาว ถูกตั้งค่าเป็น "HH: mm: ss"
ในสถานการณ์สมมตินี้คุณอาจพบปัญหาต่อไปนี้อย่างใดอย่างหนึ่ง:
-
ค่าเริ่มต้นของพารามิเตอร์ชนิด DateTime จะไม่แสดงในพื้นที่พร้อมท์พารามิเตอร์
-
ถ้าคุณกำหนดค่าให้กับพารามิเตอร์ชนิด DateTimeและอัปเดตรายงานค่าจะสูญหายไปหลังจากที่รายงานถูกแสดงและจะไม่แสดงขึ้น
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากมีการเปลี่ยนแปลงใน .NET Framework ๔.๐ที่ป้องกันไม่ให้แอปพลิเคชันและ SSRS ๒๐๑๒ใช้ข้อมูลที่ถูกต้องโดยยึดตามการตั้งค่าภูมิภาคของระบบปฏิบัติการ แอปพลิเคชันที่ยึดตามการตั้งค่าของ. net Framework ๔.๐ใช้การตั้งค่าภูมิภาคที่ส่งกลับโดย Windows อย่างไรก็ตาม SSRS ๒๐๑๒ถูกสร้างขึ้นใน .NET Framework ๓.๕ service Pack 1 (SP1) ดังนั้น SSRS ๒๐๑๒ใช้การตั้งค่าภูมิภาคที่ฝังตัวอยู่ใน .NET Framework ๓.๕ SP1 เมื่อเซิร์ฟเวอร์ SSRS ๒๐๑๒เรียกใช้รายงานโดยใช้เครื่องหมาย "สัญลักษณ์" เป็นตัวคั่นเวลาพารามิเตอร์ชนิด DateTime จะถูกส่งกลับไปยังไคลเอ็นต์เป็นสตริงที่ ตัวควบคุมตัวแสดงรายงานจะเรียกใช้เมธ DateTimeOffset TryParse เพื่อตรวจสอบความถูกต้องของสตริงที่โดยใช้สัญลักษณ์ ":":"เป็นตัวคั่นเวลา สตริงที่มีการตรวจสอบความถูกต้องเป็น false และจะไม่แสดงอยู่ในพื้นที่พร้อมท์พารามิเตอร์บันทึกย่อ ปัญหานี้เกิดขึ้นถ้ารูปแบบ เวลาแบบยาว ถูกตั้งค่าเป็น "HH: mm: ss" การตั้งค่าเริ่มต้นสำหรับการตั้งค่าภูมิภาคภาษาอิตาลี การตั้งค่าเริ่มต้นสำหรับการตั้งค่าภูมิภาคภาษาอิตาลีจะขึ้นอยู่กับระบบปฏิบัติการของคุณ นอกจากนี้คุณยังสามารถกำหนดค่าการตั้งค่าเริ่มต้นของระบบปฏิบัติการของคุณได้โดยการเปลี่ยนรูปแบบเวลาแบบยาว
การแก้ไข
ข้อมูลโปรแกรมอัปเดตสะสม
การอัปเดตที่สะสม2สำหรับ SQL Server ๒๐๑๒ Service Pack 1 (SP1)
การแก้ไขสำหรับปัญหานี้ถูกนำออกใช้ครั้งแรกใน2การปรับปรุงที่สะสม สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับแพคเกจโปรแกรมปรับปรุงที่สะสมนี้สำหรับ SQL Server ๒๐๑๒ Service Pack 1 ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
๒๗๙๐๙๔๗ แพคเกจโปรแกรมปรับปรุงที่สะสม2สำหรับ SQL Server ๒๐๑๒ Service Pack 1หมายเหตุ เนื่องจาก builds สะสมแต่ละรุ่นของการแก้ไขใหม่มีโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในเวอร์ชันก่อนหน้าของ SQL Server ๒๐๑๒ Service Pack 1 แก้ไข เราขอแนะนำให้คุณพิจารณาใช้การแก้ไขการแก้ไขล่าสุดที่มีโปรแกรมแก้ไขด่วนนี้ สำหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:
๒๗๗๒๘๕๘ SQL Server ๒๐๑๒รุ่นที่เผยแพร่หลังจาก SQL Server ๒๐๑๒ Service Pack 1 ได้รับการเผยแพร่แล้ว
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการแก้ไขปัญหานี้ให้ใช้หนึ่งในวิธีการแก้ไขปัญหาต่อไปนี้:
-
ตั้งค่าการตั้งค่าภูมิภาคบนแอปพลิเคชันและระบบปฏิบัติการเพื่อให้ตรงกับการตั้งค่าภูมิภาคที่อยู่บนไคลเอ็นต์
-
สร้างเขตข้อมูลการป้อนค่าสตริงสำหรับผู้ใช้เพื่อใส่ข้อความ จากนั้นในรายงานให้แปลงสตริงในวันที่
-
สร้างพารามิเตอร์ที่ซ่อนอยู่หรือไม่มีพร้อมท์ที่ได้รับการเติมข้อมูลจากเขตข้อมูลป้อนเข้าสตริงที่เมื่อคุณเรียกใช้รายงาน
-
สร้างพารามิเตอร์ชนิด DateTimeที่ไม่สามารถมองเห็นได้และตัวควบคุม DateTimePicker ที่อยู่ภายนอกตัวควบคุมตัวแสดงรายงาน คลิกดูรายงานแล้วใส่ค่าสตริงในพารามิเตอร์ชนิดDateTimeในตัวจัดการเหตุการณ์SubmittingParameterValues
ข้อมูลเพิ่มเติม
แพคเกจการเผยแพร่ต่อ microsoft Report Viewer ๒๐๑๐จะพร้อมใช้งานเมื่อต้องการดาวน์โหลดจากเว็บไซต์ศูนย์ดาวน์โหลดของไมโครซอฟท์ต่อไปนี้:
แพคเกจ Microsoft Report Viewer ๒๐๑๐ SP1 สามารถเผยแพร่ต่อเมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธี TryParseExact และDateTimeOffset DateTimeOffsetแวะไปที่เว็บไซต์ MSDN ต่อไปนี้:
DateTimeOffset (สตริง, สตริง, IFormatProvider, DateTimeStyles, DateTimeOffset%)DateTimeOffset(สตริง, TryParse%)