BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: yokyai ที่ กุมภาพันธ์ 11, 2010, 10:28:24 AM
-
คือถ้าเราเรียกรายการมาใส่ใน pickuplistแล้ว เช่น สมมตินะคับ
getpickuplist('select name from doctor') ก็จะได้ชื่อคนทั้งหมดในตาราง doctor มา
แต่ผมอยากให้รายงานมันมีเงื่อนไขเพิ่มที่ว่าถ้าไม่เลือกรายการไหนเลย ก็ให้หมายถึงทุกคนรวมกันในตาราง doctor หรือว่าเพิ่มตัวเลือกไปว่า All อะไรประมาณนี้หน่ะคับ ทำอย่างไร
-
;D ;D ;D กรณีที่ 1 เพิ่ม All ใน list
getpickuplist( select "All" union select name from doctor)
-
;D ;D กรณี 2 แบบไม่เลือกอะไรแล้วให้เป็น All
gl1:=getpickuplist('select name from doctor')
if gl1 ='' then
begin
gl1:='All';
end;
-
ผมลอง select "ALL" มาแล้วคับ แล้วตรง All เนี่ยผมต้องให้มันรับค่าอะไรหรือเปล่า คือลองใส่ select "ALL" ไว้แล้วเลือกเลยเนี่ยมันไม่มาคับ
-
;D ;D ;D สร้างตัวแปรมารับค่า GetPickupList 1 ตัว ชื่อ gl1 ครับ Test Showmessage ก็ได้ครับ
gl1:=getpickuplist( select "All" union select name from doctor)
showmessage(gl1);
-
แสดงว่า select "ALL" เนี่ย โปรแกรมฉลาดพอที่จะรู้ว่าคำว่า ALL มันหมายถึงอะไรใช่ไหมคับ คือเคยทำแบบนี้แล้ว รายงานมันออกมาเป็น 0 เลยคับ
-
;D ;D เราต้องเขียน เงือนไขให้มันด้วยครับ เช่น
If gl1='All' then
begin
ChangeReportSQL('select * from vn_stat where vstdate between "2009-12-01" and "2009-12-31"');
end
else
begin
ChangeReportSQL('select * from vn_stat where vstdate between "2009-12-01" and "2009-12-31" and dx_doctor="'+gl1+'"')
end;
-
;D ;D เราต้องเขียน เงือนไขให้มันด้วยครับ เช่น
If gl1='All' then
begin
ChangeReportSQL('select * from vn_stat where vstdate between "2009-12-01" and "2009-12-31"');
end
else
begin
ChangeReportSQL('select * from vn_stat where vstdate between "2009-12-01" and "2009-12-31" and dx_doctor="'+gl1+'"')
end;
นิดนึงครับถ้าไม่ใช่ all gl1 มีค่า = ชื่อหมอ
ต้องประกาศตัวแปรมาเก็บ code ก่อนอ่ะครับ
doctor_code := GetSQLStringData('select code from doctor where name="'+gl1+'"');
แล้วก็เอา doctor_code ไปใส่ใน sql
-
ผมเคย post ไว้หลายรายงานแล้วที่ใช้ลักษณะนี้
เช่น
ปรับปรุงใหม่ - ค้นหาประชากรกลุ่มเป้าหมาย (หากไม่เลือกหมู่บ้าน จะแสดงทุกหมู่)
หากไม่เลือกหมู่บ้าน จะแสดงทุกหมู่บ้าน (แสดงแยกรายหมู่บ้าน จะได้ไม่ต้องมาเลือกทีละหมู่ให้เสียเวลา)
หากไม่เลือกเพศ จะแสดงทั้งข้อมูลทุกคน
หากไม่ใส่อายุ จะใช้อายุต่ำสุด = 0 อายุสูงสุด = 124
ไปดูที่ http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=6700.msg96049#msg96049 ครับ