ผู้เขียน หัวข้อ: นับ workload ทันตแพทย์แล้วติดปัญหาคับ  (อ่าน 4389 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ yokyai

  • Hero Member
  • *****
  • กระทู้: 1,462
  • Respect: +9
    • ดูรายละเอียด
นับ workload ทันตแพทย์แล้วติดปัญหาคับ
« เมื่อ: พฤศจิกายน 11, 2010, 10:21:36 AM »
0
ผมทำรายงานนับ workload ทันตแพทย์แล้วติดปัญหาคือ ต้องการสั่งให้รายงานรู้ว่าถ้าไม่เลือกชื่อแพทย์คือเป็นค่าว่างแล้วให้นับจำนวนรวมทั้งหมดของทันตแพทย์ทุกคน แต่ถ้าเลือกชื่อทันตแพทย์โดยใช้ getpickuplist ให้นับจำนวนเฉพาะทันตแพทย์ที่ต้องการแล้วตัวแปรที่รับไป pipeline ใน variable เพื่อนับจำนวน แต่ยอดออกมาเป็น 0 คับ

procedure GlobalOnCreate;
 begin
 GetDateRangeDialog(date1,date2);
 ds1:= Formatdatetime('yyyy-mm-dd',date1);
 ds2:= Formatdatetime('yyyy-mm-dd',date2);
 doc1:=getpickuplist('select name from doctor  where name LIKE "%·¾­.%" OR name LIKE "%·À.%" ORDER BY code ');
 doc3:=getsqlstringdata('select code from doctor where name ="'+doc1+'" ');

 if doc1='' then begin
 doc2:=getsqlstringdata('select code from doctor where name LIKE "%·¾­.%" OR name LIKE "%·À.%" ');
 end else
 doc2:=getsqlstringdata('select code from doctor where name ="'+doc3+'" ');
 end;
 end;


ใน variable ใส่ไว้ว่า
 Value :=getsqlintegerdata('SELECT COUNT(DISTINCT(dm.hn)) '
+' FROM dtmain dm '
+' LEFT OUTER JOIN dt_list dl on dl.vn=dm.vn '
+' WHERE dl.count_in_year <> "0" '
+' AND dm.doctor ="'+doc2+'" '
+' AND dm.vstdate between "'+ds1+'" and "'+ds2+'" ');

แก้ไขอย่างไรคับรบกวนด้วยคับ
Sakaowrat Choocherd(Administrator) Information Technologist
Bangyai Hospital(30 beds)
HOSxP = 16_May_2008
Master and Slave : DELL-R730 Server Intel Xeon 8Core(2Units)
,Ram64 GB,HDD600(10k)x4,Raid5,CentOS 7.0 64 bit
,MySQL 10.1.10-MariaDB
(3 March 2016) With BMSxTraBackupGUI

ออฟไลน์ udomchok

  • Hero Member
  • *****
  • กระทู้: 8,358
  • Respect: +589
    • ดูรายละเอียด
    • ร.พ.สมเด็จพระสังฆราช องค์ที่ 17
Re: นับ workload ทันตแพทย์แล้วติดปัญหาคับ
« ตอบกลับ #1 เมื่อ: พฤศจิกายน 11, 2010, 20:21:05 PM »
0
ผมทำรายงานนับ workload ทันตแพทย์แล้วติดปัญหาคือ ต้องการสั่งให้รายงานรู้ว่าถ้าไม่เลือกชื่อแพทย์คือเป็นค่าว่างแล้วให้นับจำนวนรวมทั้งหมดของทันตแพทย์ทุกคน แต่ถ้าเลือกชื่อทันตแพทย์โดยใช้ getpickuplist ให้นับจำนวนเฉพาะทันตแพทย์ที่ต้องการ
ลองศึกษาจากตัวอย่างนี้นะครับ
ทำด้วยหัวใจร.พ.สมเด็จพระสังฆราช องค์ที่ 17 อ.สองพี่น้อง จ.สุพรรณบุรี
อบรมโดย BMS Team เมื่อ พ.ย. 49 ขึ้นระบบห้องบัตรเมื่อ X'Mas 2007
2008 : X-Ray กายภาพบำบัด แพทย์แผนไทย กิจกรรมบำบัด OPD ตา
2009 : ทันตกรรม ห้องตรวจตา OPD (พยาบาลและห้องตรวจแพทย์บางห้อง)

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: นับ workload ทันตแพทย์แล้วติดปัญหาคับ
« ตอบกลับ #2 เมื่อ: พฤศจิกายน 12, 2010, 00:23:58 AM »
0

... ลองแบบนี้ดูนะครับ

procedure GlobalOnCreate;
begin

  GetDateRangeDialog(date1,date2);
  ds1:= Formatdatetime('yyyy-mm-dd',date1);
  ds2:= Formatdatetime('yyyy-mm-dd',date2);

  doc1:=GetPickupList('select name from doctor where name like "ทพ.%" or name like "ทพญ.%" order by code ');

  if doc1 = '' then
  doc2 := ' in ('+GetSQLSubQueryData('select code from doctor where name like "ทพ.%" or name like "ทพญ.%" ')+') '
  else
  doc2 := ' = "'+GetSQLStringData('select code from doctor where name = "'+doc1+'" ')+'" ';

end;



  ส่วนใน variable ใช้คำสั่งเป็น

  Value :=GetSQLIntegerData('select count(distinct(dm.hn)) '
  +'from dtmain dm '
  +'left outer join dt_list dl on dl.vn = dm.vn '
  +'where dm.vstdate between "'+ds1+'" and "'+ds2+'" '
  +'and dm.doctor '+doc2+' and dl.count_in_year <> "0" ');



....  :D ....
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549