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 ให้ด้วย เลิฟๆ ไม่งั้นกูคงปวดกบาลอีกพอสมควร

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: