BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: panus_t ที่ สิงหาคม 24, 2011, 14:07:37 PM

หัวข้อ: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: panus_t ที่ สิงหาคม 24, 2011, 14:07:37 PM
where vstdate between "'+formatdatetime('yyyy-mm-dd',rxdate1)+'" and "'+formatdatetime('yyyy-mm-dd',rxdate2)+'"
ค่าตรงนี้จะทราบได้อย่างไรว่าจะเป็นตัวไหน ขอคำชี้แนะวิธีการดูด้วยครับเพราะรายงานแต่ละตัวกำหนดตัวแปรไม่เหมือนกัน
ผมแนบไฟล์มาให้ช่วยดูด้วยครับตรง Variable2
หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: udomchok ที่ สิงหาคม 24, 2011, 19:30:29 PM
แนบรูปมาผิดมั้งครับ key violation เป็นของกระทู้ก่อนหน้า 5555+
HOSxP_Attachment_key-violation.png
หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: Bordin ที่ สิงหาคม 24, 2011, 21:49:04 PM
 ;D ;D ;D ;D
หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ สิงหาคม 24, 2011, 22:40:46 PM
จริง ๆ มันคือ sql  ที่เป็น string ธรรมดานี่แหละครับ
แต่เราต้องการแทนที่ค่าที่อยู่ใน String  ด้วยวันที่  ที่เราได้รับมา

 เช่น  วันที่่ที่ดึงมาจาก GetDateRangeDialog(date1,date2)    เราจะได้วันที่่มาอยู่ในตัวแปร date1  และ date2

จึงต้องใช้  FormatDateTime('yyyy-mm-dd',date1)   เพื่อแปลงวันที่ให้เป็นรูปแบบ string
parameter ที่ใส่ให้กับ FormatDateTime()  ก็จะมี Format  แล้วก็วันที่

Formate  ที่เราใช้กับคำสั่ง sql  ก็จะเป็น  'yyyy-mm-dd'
ส่วนวันที่  ก็จะอยู่ในตัวแปร  date1,date2   หรืออื่น ๆ ขึ้นอยู่กับตอนที่เราประกาศ  และเรียกใช้ใน GetDateRangeDialog() ครับ


เมื่อ report  ทำงาน  ค่าในส่วนที่จะได้มากจากตอนที่ user  เลือกวันที่ครับ


หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: LDHP ที่ สิงหาคม 25, 2011, 09:50:46 AM
GetUserParameter( X );  ค่าที่ได้มาจะเป็น string อยู่แล้วค่ะ 
และถ้าตัวแปรเป็นวันที่ ก็จะได้string ที่มีรูปแบบเป็น  yyyy-mm-dd อยู่แล้วค่ะ ไม่ใช่ datetime
จึงไม่จำเป็นต้องใช้   ISO2Date(d, f);  ค่ะ

ส่วน  FormatDateTime(Format, aDateTime); แปลงค่าวันที่ให้อยู่รูปแบบ string ตามFormat ที่กำหนด
datetime  >  string

แต่ถ้าจะแปลงจาก string > datetime ก็ได้ 
ใช้  StrToDate( str ); แต่ว่ารูปแบบ str ที่เป็น 'yyyy-mm-dd' จะใช้ไม่ได้ ต้องเป็น 'dd/mm/yyyy'ค่ะ
ลองเอาไปทดสอบแบบนี้ดู
Value := formatdatetime('yyyy-mm-dd',StrToDate('01/02/2011'));
หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: panus_t ที่ สิงหาคม 25, 2011, 10:17:16 AM
แนบรูปมาผิดมั้งครับ key violation เป็นของกระทู้ก่อนหน้า 5555+
HOSxP_Attachment_key-violation.png

ใช้ครับแนบรูปผิด ทำทีละหลายอย่างเลยวันนั้น...
หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: panus_t ที่ สิงหาคม 25, 2011, 10:55:47 AM
แก้ไขรายงานที่แนบมาให้หน่อยได้หรือเปล่าครับ  เพราะไม่ทราบว่าจะนำตัวแปรวันที่ไหนมาใส่ใน variable2 ครับ   ;D
หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: nahos ที่ สิงหาคม 25, 2011, 11:48:49 AM
จากรายงานน่าจะใช้
DBcalcเฉย  ๆ ก็น่าจะได้นะครับ เพราะดูจาก variable2
เหมือนกับ  code mysql  ตั้งต้นมีวันที่กำกับไว้อยุ่แล้ว

Value := GetSQLIntegerData('select count(v.vn) as num '+
' from vn_stat v '+
' left outer join doctor d on  d.code=v.dx_doctor '+
' left outer join ovst o on o.vn=v.vn '+
' left outer join holiday h on h.holiday_date=v.vstdate '+
' left outer join patient p on p.hn=v.hn '+
' where v.vstdate between "'+ISO2Date(GetUserParameter(0),'dd mmmm eeee')+'" and "'+ISO2Date(GetUserParameter(1),'dd mmmm eeee')+'" '+
' and o.cur_dep_time between "08:00:00" and "16:00:00" '+
' and v.dx_doctor in ("139") and o.main_dep="010" '+
' and v.vstdate not in (select holiday_date from holiday) ');



หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: panus_t ที่ สิงหาคม 26, 2011, 09:24:03 AM
ถ้าใช้ DBcalc count ในตำแหน่ง Header จะได้แค่ 1 ครับ

ต้องการทราบว่าตรงตัวหนังสือสีแดงความเป็นนะไร หรือ copy มาจากส่วนไหนของตัวรายงานครับ
Value := GetSQLIntegerData('select count(v.vn) as num '+
' from vn_stat v '+
' left outer join doctor d on  d.code=v.dx_doctor '+
' left outer join ovst o on o.vn=v.vn '+
' left outer join holiday h on h.holiday_date=v.vstdate '+
' left outer join patient p on p.hn=v.hn '+
' where v.vstdate between "'+ISO2Date(GetUserParameter(0),'dd mmmm eeee')+'" and "'+ISO2Date(GetUserParameter(1),'dd mmmm eeee')+'" '+
' and o.cur_dep_time between "08:00:00" and "16:00:00" '+
' and v.dx_doctor in ("139") and o.main_dep="010" '+
' and v.vstdate not in (select holiday_date from holiday) ');
หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: woravet ที่ สิงหาคม 26, 2011, 11:33:51 AM
Value := GetSQLIntegerData('select count(v.vn) as num '+
' from vn_stat v '+
' left outer join doctor d on  d.code=v.dx_doctor '+
' left outer join ovst o on o.vn=v.vn '+
' left outer join holiday h on h.holiday_date=v.vstdate '+
' left outer join patient p on p.hn=v.hn '+
' where v.vstdate between "'+GetUserParameter(0)+'" and "'+GetUserParameter(1)+'" '+
' and o.cur_dep_time between "08:00:00" and "16:00:00" '+
' and v.dx_doctor in ("139") and o.main_dep="010" '+
' and v.vstdate not in (select holiday_date from holiday) ');

ไม่ต้องใช้ฟังก์ชัน ISO2Date()
หัวข้อ: Re: ขอคำแนะนำเรื่องตัวแปรวันที่ใน Report ครับ
เริ่มหัวข้อโดย: yutbit ที่ สิงหาคม 26, 2011, 13:56:16 PM
ใช่ครับไม่ต้องใช้ฟังก์ชั้น ISO2Date
ถูกต้องแล้วครับ