BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: yokyai ที่ พฤศจิกายน 11, 2010, 10:21:36 AM

หัวข้อ: นับ workload ทันตแพทย์แล้วติดปัญหาคับ
เริ่มหัวข้อโดย: yokyai ที่ พฤศจิกายน 11, 2010, 10:21:36 AM
ผมทำรายงานนับ 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+'" ');

แก้ไขอย่างไรคับรบกวนด้วยคับ
หัวข้อ: Re: นับ workload ทันตแพทย์แล้วติดปัญหาคับ
เริ่มหัวข้อโดย: udomchok ที่ พฤศจิกายน 11, 2010, 20:21:05 PM
ผมทำรายงานนับ workload ทันตแพทย์แล้วติดปัญหาคือ ต้องการสั่งให้รายงานรู้ว่าถ้าไม่เลือกชื่อแพทย์คือเป็นค่าว่างแล้วให้นับจำนวนรวมทั้งหมดของทันตแพทย์ทุกคน แต่ถ้าเลือกชื่อทันตแพทย์โดยใช้ getpickuplist ให้นับจำนวนเฉพาะทันตแพทย์ที่ต้องการ
ลองศึกษาจากตัวอย่างนี้นะครับ
หัวข้อ: Re: นับ workload ทันตแพทย์แล้วติดปัญหาคับ
เริ่มหัวข้อโดย: Khuad ที่ พฤศจิกายน 12, 2010, 00:23:58 AM

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

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 ....