2555-11-09

Parameter type datetime

เวลาเราส่ง parameter เข้า reporting service นั้นจากที่เราเลือกวันที่ในหน้า report เหมือนมันจะ text แต่จริงมันส่ง object type เป็น datetime นะจ๊ะ



ประเด็นที่ทำให้เราสับสนคือ
New ReportParameter(objitem.paraName, objitem.paraValue.ToString())

มันรับแต่ value ที่เป็น string คือมันรับ value อย่างเดียวจริงๆ อะไม่ได้ดู object type
สิ่งที่ต้อง concern คือ ถ้าใน store procedure เรารับ parameter เป็น datetime แล้วไซร้
ไอ้ตรงที่เราส่ง parameter จาก code behind นั้นมึงต้องคำนึงว่า store procedure สามารถ convert
ค่านั้นไปเป็น datetime object ได้หรือไม่

แต่ถ้าเลือกจากหน้า web report server ก็ชิวๆ เพราะเหมือน string ก็จริงแต่มันให้ค่า object type เป็น
datetime


ไม่ต้องงง ประเด็นเลยทำไม microsoft ไม่ทำให้ ReportParameter สามารถระบุไปได้เลยว่า ค่าที่จะส่งนั้น Object Type เป็นอะไร เพราะใน reporting service แม่งเสือกระบุได้ไง ตามภาพเลย



ที่เครื่อง setting region date เป็น United Kingdom และ custom format เป็น dd-MM-yyyy ด้วย
แต่ในโปรแกรมบังคับ format ไว้ เป็น dd/MM/yyyy และเป็น th-TH
หน้าเว็บเลยได้แบบนี้
 แอบฉลาดนะนิรับ parameter ตาม culture นั้นเลยถ้าใส่เป็น 2012 แบบนี้ error ด้วยนะ


ที่นี้มาดูบน report server บ้าง
เห็นไหมว่าเราสามารถใส่ได้ตาม culture บน server เลย 


เป็นการยืนยันว่ามันส่ง parameter แบบมี object type จริงๆ นะเธออออ

ปล. เพราะใน object datetime มันจะเก็บ culture ไว้ให้ด้วยว่ามี culture เป็นอะไรที่มันฉลาดอีกนิดคือถ้าไม่ใช่ ค.ศ. มัน convert ให้ด้วย เลิฟๆ ไม่งั้นกูคงปวดกบาลอีกพอสมควร

ไม่มีความคิดเห็น:

แสดงความคิดเห็น