ผู้เขียน หัวข้อ: ช่วยดูรายงานให้หน่อยครับ  (อ่าน 8280 ครั้ง)

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

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
ช่วยดูรายงานให้หน่อยครับ
« เมื่อ: ตุลาคม 11, 2010, 10:55:48 AM »
0
คือผมลองเขียนรายงานอยู่ตัวหนึ่ง ที่จะแสดงรายชื่อผู้ป่วยตามพร้อมกับวันที่ผู้ป่วยมารับบริการ  ภายใช้เงื่อนไข  ระหัสการวินิจฉัยโรค,แผนก,วันที่ต้องการค้นหา  แต่เมื่อผมลองทำแล้ว แล้วลองเรียกรายงานขึ้นมาดู ปรากฎว่า มันใช้เวลาในการประมวนผล นานมาก  ไม่รู้เกิดจากอะไร  รบกวน อ. ทุกท่านช่วยชี้แนะด้วยครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #1 เมื่อ: ตุลาคม 11, 2010, 12:47:14 PM »
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

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #2 เมื่อ: ตุลาคม 11, 2010, 13:36:58 PM »
0

... ลองดูแล้วมีหลายจุดเลยครับที่ทำให้ช้า  เดี๋ยวพักทานข้าวก่อน แล้วจะมาอธิบายให้สักนิดนะครับ ...  :D ...
แล้วที่ถูกต้อง ต้องทำอย่างไร ครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ เกื้อกูล ครับ..

  • Hero Member
  • *****
  • กระทู้: 12,611
  • Respect: +169
    • ดูรายละเอียด
    • โรงพยาบาลปากท่อ
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #3 เมื่อ: ตุลาคม 11, 2010, 13:42:24 PM »
0
โอกาสพลาดสูง เพราะว่าต้องกรอก ICD10 เอง...กรอกรหัสผิด  รายงานก็เอ๋อแล้วครับ..น่าจะ getlist
Implement  HOSxP  Start 2548 ---> NOW!
Station : 130 Client   V.3 Version  3.67.1.XX
Server  : CENTOS  +MySQL maria 10.x.x

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #4 เมื่อ: ตุลาคม 11, 2010, 13:49:18 PM »
0
โอกาสพลาดสูง เพราะว่าต้องกรอก ICD10 เอง...กรอกรหัสผิด  รายงานก็เอ๋อแล้วครับ..น่าจะ getlist
อ๋อครับ  เดียวผมจะกลับไปแก้ไข  แต่ทำไมมันถึงประมวนผลช้ามากครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #5 เมื่อ: ตุลาคม 11, 2010, 14:32:23 PM »
0

... อันดับแรกเลย ตรง Script หลัก ของรายงาน ตรงส่วนของเงื่อนไขการดึงข้อมูล

' where o.an is null and o.main_dep="'+copy(hospcode_list,1,3)+'" and v.pdx between"'+diag1+'"and"'+diag2+'"and v.vstdate between"'+ds1+'"and"'+ds2+'" '+

   ให้แก้ไขโดยเอาเงื่อนไขของวันที่มาเป็นอันดับแรก จะทำให้ดึงข้อมูลได้เร็วขึ้น เพราะไม่ต้องไปไล่ค้นข้อมูลที่มากเกินความจำเป็นครับ
    ลองแก้เป็น

' where v.vstdate between"'+ds1+'"and"'+ds2+'" and o.main_dep="'+copy(hospcode_list,1,3)+'" and v.pdx between"'+diag1+'"and"'+diag2+'" and o.an is null  '+


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

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #6 เมื่อ: ตุลาคม 11, 2010, 14:33:26 PM »
0
... ต่อมาตอนเข้ามาที่ตัวรายงานแล้วจะมีการใช้ SubReport ที่ใช้ข้อมูลจาก DBPipeLineLink1
   
    ซึ่งพอดูเงื่อนไขที่จะต้องเชื่อมโยง DBPipeLineLink1 กับตัวรายงานจะเห็นว่าต้องใช้เงื่อนไขเยอะมากทำให้การเชื่อมข้อมูลในแต่ละคนต้องใช้เวลา
    ยิ่งมีจำนวนคนในรายงานเยอะมากเท่าไรก็ยิ่งช้ามากเท่านั้น เพราะต้องมีการ run คำสั่งเพื่อดึงข้อมูลใหม่ในทุกๆ คนที่อยู่ในรายงาน

    ส่วนการแก้ไข คือไม่รู้ว่ารายงานต้องการแบบไหนบ้างน่ะครับ
    แต่น่าจะลองหาวิธีทำรายงานในรูปแบบอื่นดู เช่น ในคำสั่งหลักของรายงานเรียกแสดงตามราย vn ไม่ต้อง group by hn แต่ใช้การจัดกรุ๊ป ที่มีในตัวออกแบบรายงาน เพื่อจะได้ไม่ต้องใช้ SubReport ก็น่าจะทำให้รายงานประมวลผลเร็วขึ้นครับ  ....  :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

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #7 เมื่อ: ตุลาคม 11, 2010, 14:36:08 PM »
0

... อีกส่วนคือการใช้ การใช้ฟังค์ชั่น GetPatientAddress เพื่อดึงที่อยู่มาแสดงในรายงานครับ จะทำให้การประมวลผลของรายงานช้าลง ยิ่งถ้ามีจำนวนคนเยอะมากเท่าไร ก็จะเห็นได้ชัดเจนเลยครับ

    การแก้ไข ก็ควรจะเพิ่มคำสั่งดึงที่อยู่ของผู้ป่วยไว้ในคำสั่งหลักของรายงาน เพื่อเอามาใช้ในรายงานเลยครับ เพื่อจะได้ไม่ต้องไปใช้ ฟังค์ชั่น GetPatientAddress จะทำให้รายงานแสดงผลได้เร็วขึ้น ...  :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

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #8 เมื่อ: ตุลาคม 11, 2010, 14:54:19 PM »
0

... อีกส่วนคือการใช้ การใช้ฟังค์ชั่น GetPatientAddress เพื่อดึงที่อยู่มาแสดงในรายงานครับ จะทำให้การประมวลผลของรายงานช้าลง ยิ่งถ้ามีจำนวนคนเยอะมากเท่าไร ก็จะเห็นได้ชัดเจนเลยครับ

    การแก้ไข ก็ควรจะเพิ่มคำสั่งดึงที่อยู่ของผู้ป่วยไว้ในคำสั่งหลักของรายงาน เพื่อเอามาใช้ในรายงานเลยครับ เพื่อจะได้ไม่ต้องไปใช้ ฟังค์ชั่น GetPatientAddress จะทำให้รายงานแสดงผลได้เร็วขึ้น ...  :D ...

ถ้าอย่างงั้น ผมเอา ฟังค์ชั่น GetPatientAddress  ออก ก็จะไว้ขึ้นไหม ครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #9 เมื่อ: ตุลาคม 11, 2010, 15:00:21 PM »
0

ถ้าอย่างงั้น ผมเอา ฟังค์ชั่น GetPatientAddress  ออก ก็จะไว้ขึ้นไหม ครับ


... นิดนึงครับ  ;D   ตามจำนวนคนครับถ้ายิ่งมากยิ่งเห็นชัดครับ ....

... ตรงคำสั่งของ DBPipeLineLink1 เอาเงื่อนไขวันที่ขึ้นก่อนด้วยนะครับ
    และต้องแก้คำสั่งให้ถูกจุดด้วยนะครับ ...  :D ..
« แก้ไขครั้งสุดท้าย: ตุลาคม 11, 2010, 16:00:22 PM โดย Khuad »
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.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

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #10 เมื่อ: ตุลาคม 11, 2010, 15:29:53 PM »
0

ถ้าอย่างงั้น ผมเอา ฟังค์ชั่น GetPatientAddress  ออก ก็จะไว้ขึ้นไหม ครับ


... นิดนึงครับ  ;D ....

... ตรงคำสั่งของ DBPipeLineLink1 เอาเงื่อนไขวันที่ขึ้นก่อนด้วยนะครับ
    และต้องแก้คำสั่งให้ถูกจุดด้วยนะครับ ...  :D ..
เหมือนว่า เงื่อนไขวันที่ใน subreport  มันไม่ทำงานอ่ะ ครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #11 เมื่อ: ตุลาคม 11, 2010, 15:48:15 PM »
0
เหมือนว่า เงื่อนไขวันที่ใน subreport  มันไม่ทำงานอ่ะ ครับ

... จุดที่แก้ไขดูตามรูปนะครับ 
     แล้วก็หน้าของรายงานต้องอยู่ที่ Main ด้วยครับ ..  :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

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #12 เมื่อ: ตุลาคม 11, 2010, 16:37:19 PM »
0
เหมือนว่า เงื่อนไขวันที่ใน subreport  มันไม่ทำงานอ่ะ ครับ

... จุดที่แก้ไขดูตามรูปนะครับ 
     แล้วก็หน้าของรายงานต้องอยู่ที่ Main ด้วยครับ ..  :D ...

รบกวน อ. ช่วยแก้ ให้ผมหน่อยนะครับ ผมทำแล้ว ไม่ออก ครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

doramon

  • บุคคลทั่วไป
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #13 เมื่อ: ตุลาคม 11, 2010, 16:53:08 PM »
0
เหมือนว่า เงื่อนไขวันที่ใน subreport  มันไม่ทำงานอ่ะ ครับ

... จุดที่แก้ไขดูตามรูปนะครับ 
     แล้วก็หน้าของรายงานต้องอยู่ที่ Main ด้วยครับ ..  :D ...

รบกวน อ. ช่วยแก้ ให้ผมหน่อยนะครับ ผมทำแล้ว ไม่ออก ครับ

script   pascal    ตรวจสอบหรือยังครับ

โค๊ด: Delphi
  1.  
  2.  unit MyIPDReport;
  3.  
  4. function getsqlsubquerydatax(sql:string):string;
  5. begin
  6.   result:='';
  7.   zquery.close;
  8.   zquery.sql.text:=sql;
  9.   zquery.open;
  10.   zquery.first;
  11.     while not zquery.eof do
  12.     begin
  13.        if result='' then result:=''''+zquery.fields[0].asstring+'''' else
  14.        result:=result+','''+zquery.fields[0].asstring+'''';
  15.  
  16.        zquery.next;
  17.     end;
  18.   zquery.close;
  19.     if result='' then result:='''''';
  20.  
  21. end;
  22.  
  23. procedure main;
  24. var d1,d2:tdatetime;
  25. people_distinct_count1 : integer;
  26. people_count1 : integer;
  27. ds1,ds2:string;
  28. pttype_list1 : string;
  29. pttype,pttype_name:string;
  30. hospcode_list,sex_list:string;
  31. pcode_show:string;
  32. money1,inc_limit:currency;    
  33. i:integer;
  34. s1,s2:integer;
  35. diag1,diag2,drug,moo: string;
  36. dd1 : BLOB;
  37.  
  38. begin
  39.    //showmessage('???????????????'+#13+'Custom OPD-NK2');
  40.  
  41.    //pttype:= getpickuplist('select name from pttype where isuse="Y" order by name');
  42.    //showmessage('use name = '+pttype);
  43.    //if pttype='' then exit;
  44.  
  45.    //pttype_name:=pttype;
  46.  
  47.    //pttype:=getsqldata('select pcode from pttype where name="'+pttype+'"');
  48.    //if pttype='UA' then pttype:='UC';
  49.    //if pttype='UB' then pttype:='UC';
  50.  
  51.    //if pttype='UC' then pttype_name:=getsqlsubquerydata('select name from pttype where pcode in ("UC","UA","UB")') else
  52.    // pttype_name := getsqlsubquerydata('select name from pttype where pcode="'+pttype+'"');
  53.  
  54.    
  55.    //showmessage('dd1  = '+dd1);
  56.  
  57.    //if not getdaterange() then exit;
  58.    //d1:=date_result1();
  59.    //d2:=date_result2();
  60.  
  61.   // showmessage(formatdatetime('yyyy-mm-dd',d1)+' - '+
  62.    //  formatdatetime('yyyy-mm-dd',d2));
  63.  
  64.   // ds1:=formatdatetime('yyyy-mm-dd',d1);
  65.   // ds2:=formatdatetime('yyyy-mm-dd',d2);
  66.    
  67.  
  68.     //hospcode_list:=getsqlsubquerydata('select distinct hospmain from vn_stat where  vstdate between "'+ds1+'" and "'+ds2+'" '); // pcode = "'+pttype+'" and
  69.    //if dd1='' then
  70.    hospcode_list := getpickuplist('select concat(depcode,":",department) from kskdepartment') ;
  71.    //else
  72.    //begin
  73.    //person_id := getsqldata('select village_id from person where person_id="'+copy(dd1,1,5)+'" ');
  74.    //hospcode_list := getpickuplist('select concat(village_id,":",village_moo," ",village_name) as name from  village where village_id="'++'" ');
  75.    //end;
  76.  
  77.    
  78.     if preset_value(1)='' then
  79.    begin
  80.      if not inputquery('ãÊèÃËÑÊ¡ÒÃÇÔ¹Ô¨©ÑÂàÃÔèÁµé¹','diag',diag1) then exit;
  81.   end else
  82.    begin
  83.      diag1:='');
  84.    end;
  85.    if preset_value(2)='' then
  86.    begin
  87.      if not inputquery('ãÊèÃËÑÊ¡ÒÃÇÔ¹Ô¨©ÑÂÊÔé¹ÊØ´','diag',diag2) then exit;
  88.   end else
  89.    begin
  90.      diag2:='');
  91.    end;
  92.    
  93.    if not getdaterange() then exit;
  94.   d1 := date_result1();
  95.   d2 := date_result2();
  96.  // fonlineid := report_value(2);
  97.   ds1 := formatdatetime('yyyy-mm-dd', d1);
  98.   ds2 := formatdatetime('yyyy-mm-dd', d2);
  99.    
  100.    //showmessage('????1 = '+age1+' ????2 ?'+age2);
  101.   // sex_list := getpickuplist('select concat(code,":",name) as name from  sex ');
  102.    // in ('+  hospcode_list+') ');
  103.    
  104.  
  105.    zquery.sql.text:='delete from tempreport where id = "CUSTOM-opd-arr1" ';
  106.    zquery.execsql;
  107.    fcds.close;
  108.    fcds.datarequest('select * from tempreport where id = "CUSTOM-opd-arr1" ');
  109.    fcds.open;
  110.  
  111.    fcds2.close;
  112.    //showmessage('???????????? = '+copy(hospcode_list,1,2));
  113.    //if hospcode_list='' then
  114.    fcds2.datarequest('select v.hn,concat(p.pname,p.fname,"   ",p.lname)as name,count(distinct v.vn)as t1,max(v.vstdate)as vs,v.pdx,o.main_dep from vn_stat  v '+
  115. ' left outer join ovst o on o.vn=v.vn '+
  116. ' left outer join patient p on p.hn=v.hn '+
  117. ' where o.an is null and o.main_dep="'+copy(hospcode_list,1,3)+'" and v.pdx between"'+diag1+'"and"'+diag2+'"and v.vstdate between"'+ds1+'"and"'+ds2+'" '+
  118. ' group by v.hn  order by t1');  
  119.  
  120.  
  121.    
  122.  //  select r.hn,concat(p.pname,p.fname,"  ",p.lname) as ptname,  r.*, o.vstdate,o.vsttime,t.name as pttype_name ,o.pttype,ptda.pname '+
  123. // ' from rcpt_arrear r  left outer join ovst o on o.vn=r.vn left outer join patient p on p.hn=r.hn left outer join pttype t on t.pttype = o.pttype   '+
  124. // ' left outer join pttype_dsmain ptds on ptds.pttype=t.pttype '+
  125. // ' left outer join pttype_dansai ptda on ptda.fee_code=ptds.fee_code where r.arrear_date between "'+ds1+'" and "'+ds2+'" '+
  126. // '  and r.paid in ("Y","N") group by r.hn order by pttype_name ');
  127.    //else                                            
  128.    //fcds2.datarequest('select * from pttype inner join an_stat on pttype.pttype=an_stat.pttype inner join pttype_dansai on pttype.fee_code=pttype_dansai.fee_code where  an_stat.dchdate between "'+ds1+'" and "'+ds2+'" '+  // pcode = "'+pttype+'" and
  129.    //' and hospmain="'+copy(hospcode_list,1,5)+'" order by pttype '); // vn
  130.    fcds2.open;
  131.    setstatuslabel('Open result : '+inttostr(fcds2.recordcount)+' Records');
  132.    fcds2.first;
  133.    i:=0;
  134.    while not fcds2.eof do
  135.    begin
  136.     i:=i+1;
  137.     setprogressbar(i,fcds2.recordcount);
  138.      fcds.insert;
  139.    fcds['id']:='CUSTOM-opd-arr1';
  140.    fcds['reportname']:='CUSTOM-opd-arr11';
  141.    fcds['name']:=fcds2['name'];
  142.    fcds['num1']:=fcds2['t1'];
  143.    fcds['name2']:=fcds2['hn'];
  144.    fcds['name3']:=fcds2['vs'];
  145.    fcds['name4']:=ds1;
  146.    fcds['name5']:=ds2;
  147.    fcds['name6']:=fcds2['main_dep'];
  148.    fcds['name7']:=diag1;
  149.    fcds['name8']:=diag2;
  150.  
  151.  
  152.    //if fcds2['pttype_name']='' then
  153.    //fcds['name8']:=''
  154.    //else
  155.    //fcds['name8']:=fcds2['pttype_name'];
  156.      
  157.    //fcds['name1']:=getsqldata('select concat(pttype," ",name) as name from pttype where pttype="'+
  158.       //fcds2['pttype']+'"');
  159.      
  160.    //fcds['name2']:=getsqldata('select concat(pname,fname,"  ",lname) as name from patient where hn="'+
  161.    //   fcds2['hn']+'"');
  162.    //fcds['name3']:=fcds2['hn'];
  163.    //fcds['name4']:=fcds2['pttypeno'];
  164.    //fcds['date3']:=fcds2['pttype_expire'];
  165.   // fcds['name5']:=fcds2['an'];
  166.    //fcds['name5']:=getsqldata('select concat(name,", ",hosptype) as name from hospcode where hospcode="'+
  167.     // fcds2['hospmain']+'"');
  168.    //fcds['name6']:=fcds2['cid'];
  169.    //if fcds2['sex']='1' then
  170.    //  fcds['name7']:='?' else
  171.    //  fcds['name7']:='?';
  172.    //fcds['num1']:=fcds2['age_y'];
  173.    //fcds['name8']:=fcds2['pdx']+' '+fcds2['dx0'];
  174.   // fcds['name9']:=fcds2['op0']+' '+fcds2['op1'];
  175.   // fcds['name']:=getsqldata('select i_refer_number from ovst where vn="'+fcds2['vn']+'"');
  176.  
  177.    {
  178.    fcds['mon11']:=getsqldata('select sum(sum_price) as cc from opitemrece where an="'+fcds2['an']+'" and income="09" group by income');
  179.    //fcds2['inc06'];
  180.        //fcds2['inc00']+fcds2['inc18'];
  181.    fcds['mon18']:=getsqldata('select sum(sum_price) as cc from opitemrece where an="'+fcds2['an']+'"')+fcds2['inc17'];
  182.    //fcds2['income'];
  183.    s1:=getsqldata('select sum(rcptamt) as cc from rcpt_print_detail where vn="'+fcds2['an']+'" and paidst="04"');
  184.    s2:=getsqldata('select bill_amount from rcpt_print where vn="'+fcds2['an']+'" ');
  185.    fcds['mon20']:=s2;
  186.    fcds['mon19']:=s1;
  187.    }
  188.    //fcds['mon19']:=inc_limit;
  189.    //fcds['mon20']:=fcds2['rcpt_money'];
  190.    
  191.    //try
  192.    //   fcds['date1']:=ds1;
  193.    // except
  194.    // end;
  195.    //try
  196.    //   fcds['date2']:=ds2;
  197.    // except
  198.    // end;
  199.    //fcds['date4']:=fcds2['vstdate'];
  200.    
  201.      fcds2.next;
  202.    end;
  203.     fcds.post;
  204.    fcds.datarequest('select * from tempreport where id = "CUSTOM-opd-arr1" ');  
  205.    applyupdate_fcds();
  206.  
  207. end;
  208.  
  209. end.
  210.  
  211.  


« แก้ไขครั้งสุดท้าย: ตุลาคม 11, 2010, 17:00:58 PM โดย doraemon »

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #14 เมื่อ: ตุลาคม 12, 2010, 09:55:21 AM »
0
เหมือนว่า เงื่อนไขวันที่ใน subreport  มันไม่ทำงานอ่ะ ครับ

... จุดที่แก้ไขดูตามรูปนะครับ 
     แล้วก็หน้าของรายงานต้องอยู่ที่ Main ด้วยครับ ..  :D ...

รบกวน อ. ช่วยแก้ ให้ผมหน่อยนะครับ ผมทำแล้ว ไม่ออก ครับ
โค๊ด อ. ที่ให้มาอาจารย์ ได้แก้ไขตรงไหนมั่ง ครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #15 เมื่อ: ตุลาคม 12, 2010, 10:06:41 AM »
0

... จุดที่แก้ไขดูตามรูปนะครับ 
     แล้วก็หน้าของรายงานต้องอยู่ที่ Main ด้วยครับ ..  :D ...

โค๊ด อ. ที่ให้มาอาจารย์ ได้แก้ไขตรงไหนมั่ง ครับ


... ลองดูตามรูปที่แนบแหล่ะครับ ผมแก้ให้เงื่อนไขของวันที่ขึ้นก่อนครับ ...

... แต่ถึงยังงัยรายงานในรูปแบบนี้มันก็จะประมวลผลช้าอยู่ดีครับ
    เดี๋ยวพอมีเวลาว่างจะช่วยดูให้อีกแรงนะครับ ...  :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

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #16 เมื่อ: ตุลาคม 12, 2010, 10:52:13 AM »
0
เหมือนว่า เงื่อนไขวันที่ใน subreport  มันไม่ทำงานอ่ะ ครับ

... จุดที่แก้ไขดูตามรูปนะครับ 
     แล้วก็หน้าของรายงานต้องอยู่ที่ Main ด้วยครับ ..  :D ...
ทำตามที่ อ. บอกทุกอย่างแล้ว ข้อมูลมันออกมาแบบผิดปกติ อ่ะครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #17 เมื่อ: ตุลาคม 12, 2010, 11:00:43 AM »
0

... จุดที่แก้ไขดูตามรูปนะครับ 
     แล้วก็หน้าของรายงานต้องอยู่ที่ Main ด้วยครับ ..  :D ...

โค๊ด อ. ที่ให้มาอาจารย์ ได้แก้ไขตรงไหนมั่ง ครับ

ทำไมเงื่อนไขวันที่ใน subreport มันไม่ทำงานอ่ะครับ

... ลองดูตามรูปที่แนบแหล่ะครับ ผมแก้ให้เงื่อนไขของวันที่ขึ้นก่อนครับ ...

... แต่ถึงยังงัยรายงานในรูปแบบนี้มันก็จะประมวลผลช้าอยู่ดีครับ
    เดี๋ยวพอมีเวลาว่างจะช่วยดูให้อีกแรงนะครับ ...  :D ..
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #18 เมื่อ: ตุลาคม 12, 2010, 11:02:38 AM »
0

... จุดที่แก้ไขดูตามรูปนะครับ 
     แล้วก็หน้าของรายงานต้องอยู่ที่ Main ด้วยครับ ..  :D ...

โค๊ด อ. ที่ให้มาอาจารย์ ได้แก้ไขตรงไหนมั่ง ครับ

ทำไมเงื่อนไขวันที่ใน subreport มันไม่ทำงานอ่ะครับ

... ลองดูตามรูปที่แนบแหล่ะครับ ผมแก้ให้เงื่อนไขของวันที่ขึ้นก่อนครับ ...

... แต่ถึงยังงัยรายงานในรูปแบบนี้มันก็จะประมวลผลช้าอยู่ดีครับ
    เดี๋ยวพอมีเวลาว่างจะช่วยดูให้อีกแรงนะครับ ...  :D ..

ผมแนบไฟล์มาให้ดูด้วยครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #19 เมื่อ: ตุลาคม 12, 2010, 16:26:45 PM »
0
ขอดัน นะครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #20 เมื่อ: ตุลาคม 12, 2010, 17:32:53 PM »
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

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #21 เมื่อ: ตุลาคม 13, 2010, 12:52:47 PM »
0
ขอดัน นะครับ

... เลิกงานแล้ว เดี๋ยวลองดูให้ อาจใช้เวลาสักนิดนะครับ ...  :D ....
[/quote
ขอบพระคุณมากครับ]
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #22 เมื่อ: ตุลาคม 14, 2010, 16:36:45 PM »
0
... ผมลองแก้โดยยกเลิก ไม่ใช้  script pascal  ที่คำสั่งหลักของรายงานเดิม ที่จะนำข้อมูลไปไว้ที่ตาราง tempreport ก่อนที่จะนำมาออกเป็นรายงานครับ
    น่าจะเร็วกว่าเดิมบ้างครับ ขึ้นอยู่ว่าข้อมูลมากแค่ไหนด้วย
    ส่วนรหัสวินิจฉัยที่ใส่ จะตรวจสอบก่อนว่าเป็นรหัสที่มีอยู่ในตาราง icd101 หรือเปล่า ป้องกันใส่รหัสผิด

    อื่นๆ ลองปรับแก้ไขดูนะครับ ...  :D ....



   
« แก้ไขครั้งสุดท้าย: ตุลาคม 14, 2010, 16:53:15 PM โดย Khuad »
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.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

ออฟไลน์ arr_012

  • Sr. Member
  • ****
  • กระทู้: 307
  • ค่าของคน อยู่ที่ผลของงาน
  • Respect: 0
    • ดูรายละเอียด
Re: ช่วยดูรายงานให้หน่อยครับ
« ตอบกลับ #23 เมื่อ: ตุลาคม 15, 2010, 14:20:04 PM »
0
... ผมลองแก้โดยยกเลิก ไม่ใช้  script pascal  ที่คำสั่งหลักของรายงานเดิม ที่จะนำข้อมูลไปไว้ที่ตาราง tempreport ก่อนที่จะนำมาออกเป็นรายงานครับ
    น่าจะเร็วกว่าเดิมบ้างครับ ขึ้นอยู่ว่าข้อมูลมากแค่ไหนด้วย
    ส่วนรหัสวินิจฉัยที่ใส่ จะตรวจสอบก่อนว่าเป็นรหัสที่มีอยู่ในตาราง icd101 หรือเปล่า ป้องกันใส่รหัสผิด

    อื่นๆ ลองปรับแก้ไขดูนะครับ ...  :D ....



   
ขอบคุณ อ. มาก ครับ
นายอภิชัย  ฉิมวงษ์ขอม (อะ)
โรงพยาบาลมโนรมย์ อ.มโนรมย์ จ.ชัยนาท
Master:HP ProLiant ML150 G6 Intel Xeon E5504 2.00GHz ,12 GB PC3-10600R   FeeBSD 8.2  Percona 5.1.54