BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: 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+'" ');
แก้ไขอย่างไรคับรบกวนด้วยคับ
-
ผมทำรายงานนับ workload ทันตแพทย์แล้วติดปัญหาคือ ต้องการสั่งให้รายงานรู้ว่าถ้าไม่เลือกชื่อแพทย์คือเป็นค่าว่างแล้วให้นับจำนวนรวมทั้งหมดของทันตแพทย์ทุกคน แต่ถ้าเลือกชื่อทันตแพทย์โดยใช้ getpickuplist ให้นับจำนวนเฉพาะทันตแพทย์ที่ต้องการ
ลองศึกษาจากตัวอย่างนี้นะครับ
-
... ลองแบบนี้ดูนะครับ
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 ....