BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: James011 ที่ กรกฎาคม 28, 2009, 09:32:55 AM

หัวข้อ: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 28, 2009, 09:32:55 AM
 ;D ;D ;D เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ

1.เป็นรายงาน Doctor review พิมพ์ตอนจำหน่ายผู้ป่วยจากตึกผู้ป่วยใน
2.พิมพ์เสร็จ นำไปเก็บไว้ใน OPDCARD ด้านหลัง ไว้ให้หมอดูประวัติการ Admit เวลาคนไข้มาตรวจผู้ป่วยนอก

3.ติดปัญหาผมต้องการทำ Subreport ที่ Diag โรคให้มันออกทุกโรค ตามรูปครับ เทพReport ช่วยชี้แนะหน่อยครับ

   *******************Code***************************
select concat(pt.pname,pt.fname," ",pt.lname) as ptname,i.an,i.hn,i.admdoctor,i.dchdate,
i.dchstts,ds.name as ds_name,i.dchtime,i.dchtype,dt.name as dt_name,
i.regdate,i.regtime,i.ward,w.name as w_name,
d.name as drugname,d.strength,o.qty,du.shortlist,o.unitprice,o.sum_price,
ig.diagtype,ig.doctor,dc.name as dc_name,ig.icd10,icd.name as icd_name,
im.admday,im.bedno,tr.name as addr,tr.name1 as age,tr.name3 as pttype_n
from ipt i
left outer join opitemrece o on i.an=o.an
left outer join drugitems d on o.icode=d.icode
left outer join drugusage du on o.drugusage=du.drugusage
left outer join dchstts ds on i.dchstts=ds.dchstts
left outer join dchtype dt on i.dchtype=dt.dchtype
left outer join ward w on i.ward=w.ward
left outer join iptdiag ig on i.an=ig.an
left outer join doctor dc on ig.doctor=dc.code
left outer join icd101 icd on ig.icd10=icd.code
left outer join iptadm im on i.an=im.an
left outer join tempreport tr on i.an=tr.reportname and i.an=tr.id
left outer join patient pt on i.hn=pt.hn
where i.an="000000647" and item_type="H"
group by o.icode
order by ig.diagtype asc

******************************************************************


หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: yokyai ที่ กรกฎาคม 28, 2009, 09:53:13 AM
เป็นคำแนะนำนะคับ มือใหม่เหมือนกัน  ไม่ต้องทำเป็น sub report ก็ได้นะคับ  ลองเพิ่ม script  จากตารางของผู้ป่วยใน (ลองหาดูก่อน) ที่เก็บข้อมูลการ diag แล้วที่ report designer ก็ใช้ DbText แทน ทำเผื่อตาม field ในตาราง คาดว่า 1 คนก็ไม่น่าเกิน 5 diag ไหมคับ ไม่ทราบว่าตรงประเด็นหรือเปล่า เพราะว่าในใบสั่งยาของที่ รพ. ก็ใช้วิธีการแบบนี้อ่ะคับ หมอต้องการเห็น diag อย่างน้อย 3 โรค   ตารางน่าจะอยู่ใน an_stat นะคับที่เก็บข้อมูลทุกอย่าง  ลองดูนะคับผิดถูกยังไงก็ลองดู แบบนี้ไม่น่าจะซับซ้อน
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 28, 2009, 10:58:47 AM
 ;D ;D ;D มีคู่มือการเพิ่ม Script ป่าวครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 28, 2009, 12:13:01 PM
 ;D ;D  ผมลองใช้ Variable เพื่อดึงข้อมูล แต่มันดึงได้ครั้งละ 1 ค่า ตัวใช้ Variable 5 ตัวในการดึง ข้อมูลการวินิจฉัยทั้งหมด 5 ตัวครับ มีวิธีอื่นที่ ดึงครั้งเดียวมาทั้งหมดป่าวครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: bannok ที่ กรกฎาคม 28, 2009, 13:01:44 PM
รอเก็บด้วยคนนะครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 28, 2009, 15:47:00 PM
 ;D ;D ;D ทำเสร็จ Up ให้ครับ ไม่นานเกินรอครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: pongsa ที่ กรกฎาคม 28, 2009, 18:20:44 PM
พอดีอยากให้ได้รายงานยากลับบ้านให้คนไข้ถือด้วยครับ  ฝ่ายเภสัชเขาขอมา  เพิ่มวิธีรับประทานด้วยน่ะครับ
   
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 29, 2009, 07:58:10 AM
 ;D ;D ;D เสร็จแล้วครับ Up เลยครับ  diag โรค ใช้ Variable ครับ  ;D
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: Khuad ที่ กรกฎาคม 29, 2009, 11:05:09 AM

... ตรงส่วนของการ diag บางครั้ง  บาง diagtype  อาจมีมากกว่า 1 รายการก็ได้ครับ  ทำให้การใช้ function GetSQLStringData ใน variable แสดงข้อมูลได้ไม่ครบครับ(ได้แค่รายการเดียว) ...

... ท่าน  เจมส์@ศูนย์อนามัยที่ 11  ลองใช้การวาง Memo ขึ้นมาใหม่ 1 ตัว   แล้วใช้ variable ไปดึงข้อมูลจาก iptdiag โดยใช้  function  GetListFromQuery  แล้วจึงส่งค่าที่ได้นี้ ไปแสดงผลที่  Memo  ที่เราสร้างไว้แทน   ลองๆ ทดลองทำดูครับ ...  :D ....
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 29, 2009, 15:19:00 PM
 ;D ;D แจ่มครับ ขอบคุณครับ ขอลองก่อนนะครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ กรกฎาคม 29, 2009, 16:10:14 PM
เกือบเสร็จแล้วสิครับ  สู้ ๆ คับ  ^_^
มาแนะนำเผื่อยังทำไม่เสร็จ   แต่ถ้าทำเสร็จแล้วก็ข้ามไปได้เลยคับ

สร้าง Memo  และ Variable  ขึ้นมาอย่างละตัวครับ
สมมุติว่า  Memo  ชื่อ Memo1   สร้างแล้วให้กำหนดขนาดตามต้องการ

ใน Variable ใส่โค้ดเป็น
Memo1.text := GetListFromQuery('select concat(ic.code,"  ",ic.name) from iptdiag ip,icd101 ic '+
'where ip.icd10=ic.code and ip.an="'+DBPipeLine['an']+'"');

ปล.  คอมไพล์ code ดูก่อนนะคับไม่รู้จะ error หรือเปล่า

===========================================================
แต่ถ้าอยากใช้ subreport
1. เพิ่ม code ใน event oncreate
ChangeDBPipeLineLink1SQL('select  ic.code,ic.name from iptdiag ip,icd101 ic '+
'where ip.icd10=ic.code and ip.an="'+DBPipeLine['an']+'"');
ก็จะได้ข้อมูลการวินิจฉัยอยู่ใน DBPipeLineLink1

2.  สร้าง subreport  จัดตำแหน่งให้เรียบร้อยแล้วเปลี่ยน  ตรง DataPipeLine  ให้เปลี่ยนเป็น  DBPipeLineLink1

3.  ใน Subreport  ก็เอา DBText  ดึงข้อมูลเหมือนปกติครับ


ผลลัพธ์ใกล้เคียงกันครับ   แต่ sub report  สามารถจัดรหัสโรค  กับชื่อโรคให้ตรงกันได้
อาจจะมีวิธีใช้ Memo  ที่แสดงรหัสโรคและชื่อโรคตรงกัน  แต่ผมไม่เคยทำคับ  ^_^
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: pongsa ที่ กรกฎาคม 29, 2009, 17:09:07 PM
ลองทำไฟล์ตัวอย่างได้ไหมครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 29, 2009, 20:18:33 PM
เกือบเสร็จแล้วสิครับ  สู้ ๆ คับ  ^_^
มาแนะนำเผื่อยังทำไม่เสร็จ   แต่ถ้าทำเสร็จแล้วก็ข้ามไปได้เลยคับ

สร้าง Memo  และ Variable  ขึ้นมาอย่างละตัวครับ
สมมุติว่า  Memo  ชื่อ Memo1   สร้างแล้วให้กำหนดขนาดตามต้องการ

ใน Variable ใส่โค้ดเป็น
Memo1.text := GetListFromQuery('select concat(ic.code,"  ",ic.name) from iptdiag ip,icd101 ic '+
'where ip.icd10=ic.code and ip.an="'+DBPipeLine['an']+'"');

ปล.  คอมไพล์ code ดูก่อนนะคับไม่รู้จะ error หรือเปล่า

===========================================================
แต่ถ้าอยากใช้ subreport
1. เพิ่ม code ใน event oncreate
ChangeDBPipeLineLink1SQL('select  ic.code,ic.name from iptdiag ip,icd101 ic '+
'where ip.icd10=ic.code and ip.an="'+DBPipeLine['an']+'"');
ก็จะได้ข้อมูลการวินิจฉัยอยู่ใน DBPipeLineLink1

2.  สร้าง subreport  จัดตำแหน่งให้เรียบร้อยแล้วเปลี่ยน  ตรง DataPipeLine  ให้เปลี่ยนเป็น  DBPipeLineLink1

3.  ใน Subreport  ก็เอา DBText  ดึงข้อมูลเหมือนปกติครับ


ผลลัพธ์ใกล้เคียงกันครับ   แต่ sub report  สามารถจัดรหัสโรค  กับชื่อโรคให้ตรงกันได้
อาจจะมีวิธีใช้ Memo  ที่แสดงรหัสโรคและชื่อโรคตรงกัน  แต่ผมไม่เคยทำคับ  ^_^


 ;D ;D ;D  thank ครับ  Share Value ดีครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: atit ที่ กรกฎาคม 29, 2009, 22:25:23 PM
รอเก็บครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 30, 2009, 08:09:26 AM
 ;D ;D ;D  เสร็จแล้วครับ UP  Version ใหม่ ตามคำขอ
      1.เปลี่ยนจาก Variable เป็น Subreport
      2.เพิ่มรายการยาที่แพ้ (จัดให้ตามคำขอ)
      3.แก้ Bug ให้สามารถ print ใน Med profile  คลิกขวาเลือก Document (จัดให้ตามคำขอ) 
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 30, 2009, 22:29:36 PM
 ;D ;D เพิ่ม ราคา ราคารวม  วิธิการใช้ยาแบบเต็ม(ตามคำขอ)
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: James011 ที่ กรกฎาคม 31, 2009, 07:20:54 AM
 ;D ;D ;D ท่านที่โหลดไปแล้วช่วย ทดสอบให้หน่อยครับ  ว่า
  ที่อยู่ สิทธิ  อายุ  ว่าออกครบหรือป่าว ครับ แต่ผมทดสอบแล้วออกครับ
  แต่คุณ pongsa  เอาไปใช้แล้ว  ที่อยู่ สิทธิ  อายุ ไม่ออกครับ
  ข้อมูล ที่อยู่ สิทธิ  อายุ  ผมจะดึงจาก tempreport  ฐานข้อมูลผมมีข้อมูลครบ
  แต่ของคุณ pongsa ที่อยู่ สิทธิ อายุ ในตาราง tempreport ไม่มี  งงง
  ท่านผู้รู้ช่วยอธิบายหลัการทำงาน ของ tempreport หน่อยครับ  
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: pongsa ที่ กรกฎาคม 31, 2009, 09:09:46 AM
อ.ขวด  ช่วยออกความคิดเห็นหน่อยครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: border ที่ มิถุนายน 21, 2010, 22:51:26 PM
ขอบคุณครับ อ.เจมส์ จะสมบูรณ์มากขึ้นครับ ถ้าเพิ่ม CC , vital sign, PE , วันนัด F/U ตามแบบ discharg summary ของ MRA ของ สปสช. (เอาไว้ข้างบน วินิจฉัยก็ได้ครับ)
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: SBR10993 ที่ มิถุนายน 22, 2010, 04:02:27 AM
;D ;D ;D ท่านที่โหลดไปแล้วช่วย ทดสอบให้หน่อยครับ  ว่า
  ที่อยู่ สิทธิ  อายุ  ว่าออกครบหรือป่าว ครับ แต่ผมทดสอบแล้วออกครับ
  แต่คุณ pongsa  เอาไปใช้แล้ว  ที่อยู่ สิทธิ  อายุ ไม่ออกครับ
  ข้อมูล ที่อยู่ สิทธิ  อายุ  ผมจะดึงจาก tempreport  ฐานข้อมูลผมมีข้อมูลครบ
  แต่ของคุณ pongsa ที่อยู่ สิทธิ อายุ ในตาราง tempreport ไม่มี  งงง
  ท่านผู้รู้ช่วยอธิบายหลัการทำงาน ของ tempreport หน่อยครับ  
tempreport เป็นแค่ตารางที่เอาไว้พักข้อมูลชั่วคราวครับสำหรับทำรายงาน ณ เมื่อเราเรียกรายงานนั้น ๆ ที่ส่วนใหญ่ค่อนข้างซับซ้อน(ซึ่งจะต้องมีการเขียน script สำหรับ insert ข้อมูลแนบเอาไว้ในรายงานนั้นๆด้วย) การที่ข้อมูลมีเหลืออยู่ในตารางนี้ก็แสดงว่า ข้อมูลเดิมจากการเรียกรายงานครั้งที่แล้วยังไม่ถูกลบ โดยปกติ ก่อนที่จะยัดข้อมูลที่เป็นรายงานใหม่ ๆ จะต้องลบของเก่าออกก่อนเสมอ เช่น zquery.sql.text:='delete from tempreport where id = "'+onlineid+'" '; อาจจะเป็น ฟิลด์ใดฟิลด์หนึ่งของtempreport ก็ได้ที่อ้างอิงถึงรายงานนั้น  ลอง select * from tempreport ดู ชื่อฟิลต่าง ๆ บางทีก็ไม่สำพันธ์กับค่า เป็นแค่ที่พักข้อมูลเอาไว้ทำรายงานเฉย ๆ ครับ การที่เลือกดึงข้อมูลจากตารางนี้ไม่เวิร์คครับ   ลองดูจากรายงานเก่า ๆ ที่มีในเครื่องครับที่มี select t1.name1 ... t1.namexxx โดยทั่วไปจะประมาณนี้ หรือ คำสั่งธรรมดา อย่าง select * from xxx แต่การที่ทำงานะอยู่ตรง tab script ครับ ดูจากตัวอย่างรายงานนี้ก็ได้นะ CUSTOM-Finance หนังสือรับรองเพื่อประกอบการเบิกจ่ายยานอกบัญชียาหลักแห่งชาติจะเห็นการทำงานของ tempreport ได้ไม่ยาก  ไม่ได้ encode อะไรไว้ พอแกะได้ครับ คงพอเข้าใจนะครับ รีบเปี่ยนเป็น vn_stat หรือตารางอื่นที่แน่นอนกว่าดีกว่าครับ ข้างล่างคือตัวอย่างแบบง่าย ๆ ครับเลือกคิวรี่ข้อมูลได้ recordset จากนั้นก็ทำลูปจับยัดเข้า tempreport

unit MyIPDReport;

procedure main;
var d1,d2:tdatetime;i:integer;
begin

   if not getdaterange() then exit;
   d1:=date_result1();
   d2:=date_result2();
   
   fonlineid:=report_value(1);
   setstatuslabel('Processing...');
   ds1:=formatdatetime('yyyy-mm-dd',d1);
   ds2:=formatdatetime('yyyy-mm-dd',d2);
  //delete old data from tempreport
   zquery.sql.text:='delete from tempreport where id = "CUSTOM-stupid" ';
   zquery.execsql;
   fcds.close;
   fcds.datarequest('select * from tempreport where id = "CUSTOM-stupid" ');
   fcds.open;

   i:=0;                 
   zquery.close;
   zquery.sql.text :='select concat(pt.pname,pt.fname,''  '',pt.lname) as ptname,pt.cid,v.age_y as age,op.bw, '+
   ' pt.sex,pt.informaddr,oh.cc_persist_disease as history_ill,l.lab_items_name,o.lab_order_result,h.hn,v.vstdate '+
   ' from lab_order o '+
   ' left outer join lab_head h on o.lab_order_number = h.lab_order_number '+
   ' left outer join ovst o1 on h.vn = o1.vn '+
   ' left outer join patient pt on h.hn = pt.hn '+
   ' inner join lab_items l on l.lab_items_code =  o.lab_items_code and  o.lab_items_code in (''199'',''100'',''109'',''155'')'+
   ' inner join opdscreen op on op.vn = o1.vn '+
   ' inner join vn_stat v on v.vn = o1.vn '+
   ' left outer join opd_ill_history  oh on oh.hn=op.hn '+                                                             
   ' where h.order_date between "'+ds1+'" and "'+ds2+'" ';
   zquery.open;
   zquery.first;
   while not zquery.eof do
   begin 
   i:=i+1; 
   //start insert data into tempreport
   fcds.insert;
   fcds['id']:=get_onlineid;
   fcds['reportname']:='CUSTOM-stupid';
   fcds['name']:=zquery.fields[0].asstring;
   fcds['name1']:=zquery.fields[1].asstring;
   fcds['name2']:=zquery.fields[2].asstring;
   .....
   fcds['name8']:=zquery.fields[8].asstring;
   fcds['name9']:=zquery.fields[9].asstring;
    ...
   zquery.next;
   end;
   fcds.post; 
   fcds.datarequest('select * from tempreport where id = "CUSTOM-stupid" ');
   applyupdate_fcds();
   setstatuslabel('Done.');
end;
end.
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: Knott ที่ มิถุนายน 22, 2010, 09:46:18 AM
;D ;D ;D ท่านที่โหลดไปแล้วช่วย ทดสอบให้หน่อยครับ  ว่า
  ที่อยู่ สิทธิ  อายุ  ว่าออกครบหรือป่าว ครับ แต่ผมทดสอบแล้วออกครับ
  แต่คุณ pongsa  เอาไปใช้แล้ว  ที่อยู่ สิทธิ  อายุ ไม่ออกครับ
  ข้อมูล ที่อยู่ สิทธิ  อายุ  ผมจะดึงจาก tempreport  ฐานข้อมูลผมมีข้อมูลครบ
  แต่ของคุณ pongsa ที่อยู่ สิทธิ อายุ ในตาราง tempreport ไม่มี  งงง
  ท่านผู้รู้ช่วยอธิบายหลัการทำงาน ของ tempreport หน่อยครับ  

ของผม ข้อมูลสิทธิ อายุ ที่อยู่ไม่ออกครับ เหมือนของคุณ pongsa เลยครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ มิถุนายน 22, 2010, 10:04:46 AM
;D ;D ;D ท่านที่โหลดไปแล้วช่วย ทดสอบให้หน่อยครับ  ว่า
  ที่อยู่ สิทธิ  อายุ  ว่าออกครบหรือป่าว ครับ แต่ผมทดสอบแล้วออกครับ
  แต่คุณ pongsa  เอาไปใช้แล้ว  ที่อยู่ สิทธิ  อายุ ไม่ออกครับ
  ข้อมูล ที่อยู่ สิทธิ  อายุ  ผมจะดึงจาก tempreport  ฐานข้อมูลผมมีข้อมูลครบ
  แต่ของคุณ pongsa ที่อยู่ สิทธิ อายุ ในตาราง tempreport ไม่มี  งงง
  ท่านผู้รู้ช่วยอธิบายหลัการทำงาน ของ tempreport หน่อยครับ  

ของผม ข้อมูลสิทธิ อายุ ที่อยู่ไม่ออกครับ เหมือนของคุณ pongsa เลยครับ

เหมือนกันเลยครับ...ไม่ออกที่อยู่้  อายุ  สิทธิ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: aphirat ที่ มิถุนายน 22, 2010, 12:01:47 PM
;D ;D ;D ท่านที่โหลดไปแล้วช่วย ทดสอบให้หน่อยครับ  ว่า
  ที่อยู่ สิทธิ  อายุ  ว่าออกครบหรือป่าว ครับ แต่ผมทดสอบแล้วออกครับ
  แต่คุณ pongsa  เอาไปใช้แล้ว  ที่อยู่ สิทธิ  อายุ ไม่ออกครับ
  ข้อมูล ที่อยู่ สิทธิ  อายุ  ผมจะดึงจาก tempreport  ฐานข้อมูลผมมีข้อมูลครบ
  แต่ของคุณ pongsa ที่อยู่ สิทธิ อายุ ในตาราง tempreport ไม่มี  งงง
  ท่านผู้รู้ช่วยอธิบายหลัการทำงาน ของ tempreport หน่อยครับ  
tempreport เป็นแค่ตารางที่เอาไว้พักข้อมูลชั่วคราวครับสำหรับทำรายงาน ณ เมื่อเราเรียกรายงานนั้น ๆ ที่ส่วนใหญ่ค่อนข้างซับซ้อน(ซึ่งจะต้องมีการเขียน script สำหรับ insert ข้อมูลแนบเอาไว้ในรายงานนั้นๆด้วย) การที่ข้อมูลมีเหลืออยู่ในตารางนี้ก็แสดงว่า ข้อมูลเดิมจากการเรียกรายงานครั้งที่แล้วยังไม่ถูกลบ โดยปกติ ก่อนที่จะยัดข้อมูลที่เป็นรายงานใหม่ ๆ จะต้องลบของเก่าออกก่อนเสมอ เช่น zquery.sql.text:='delete from tempreport where id = "'+onlineid+'" '; อาจจะเป็น ฟิลด์ใดฟิลด์หนึ่งของtempreport ก็ได้ที่อ้างอิงถึงรายงานนั้น  ลอง select * from tempreport ดู ชื่อฟิลต่าง ๆ บางทีก็ไม่สำพันธ์กับค่า เป็นแค่ที่พักข้อมูลเอาไว้ทำรายงานเฉย ๆ ครับ การที่เลือกดึงข้อมูลจากตารางนี้ไม่เวิร์คครับ   ลองดูจากรายงานเก่า ๆ ที่มีในเครื่องครับที่มี select t1.name1 ... t1.namexxx โดยทั่วไปจะประมาณนี้ หรือ คำสั่งธรรมดา อย่าง select * from xxx แต่การที่ทำงานะอยู่ตรง tab script ครับ ดูจากตัวอย่างรายงานนี้ก็ได้นะ CUSTOM-Finance หนังสือรับรองเพื่อประกอบการเบิกจ่ายยานอกบัญชียาหลักแห่งชาติจะเห็นการทำงานของ tempreport ได้ไม่ยาก  ไม่ได้ encode อะไรไว้ พอแกะได้ครับ คงพอเข้าใจนะครับ รีบเปี่ยนเป็น vn_stat หรือตารางอื่นที่แน่นอนกว่าดีกว่าครับ ข้างล่างคือตัวอย่างแบบง่าย ๆ ครับเลือกคิวรี่ข้อมูลได้ recordset จากนั้นก็ทำลูปจับยัดเข้า tempreport

unit MyIPDReport;

procedure main;
var d1,d2:tdatetime;i:integer;
begin

   if not getdaterange() then exit;
   d1:=date_result1();
   d2:=date_result2();
   
   fonlineid:=report_value(1);
   setstatuslabel('Processing...');
   ds1:=formatdatetime('yyyy-mm-dd',d1);
   ds2:=formatdatetime('yyyy-mm-dd',d2);
  //delete old data from tempreport
   zquery.sql.text:='delete from tempreport where id = "CUSTOM-stupid" ';
   zquery.execsql;
   fcds.close;
   fcds.datarequest('select * from tempreport where id = "CUSTOM-stupid" ');
   fcds.open;

   i:=0;                 
   zquery.close;
   zquery.sql.text :='select concat(pt.pname,pt.fname,''  '',pt.lname) as ptname,pt.cid,v.age_y as age,op.bw, '+
   ' pt.sex,pt.informaddr,oh.cc_persist_disease as history_ill,l.lab_items_name,o.lab_order_result,h.hn,v.vstdate '+
   ' from lab_order o '+
   ' left outer join lab_head h on o.lab_order_number = h.lab_order_number '+
   ' left outer join ovst o1 on h.vn = o1.vn '+
   ' left outer join patient pt on h.hn = pt.hn '+
   ' inner join lab_items l on l.lab_items_code =  o.lab_items_code and  o.lab_items_code in (''199'',''100'',''109'',''155'')'+
   ' inner join opdscreen op on op.vn = o1.vn '+
   ' inner join vn_stat v on v.vn = o1.vn '+
   ' left outer join opd_ill_history  oh on oh.hn=op.hn '+                                                             
   ' where h.order_date between "'+ds1+'" and "'+ds2+'" ';
   zquery.open;
   zquery.first;
   while not zquery.eof do
   begin 
   i:=i+1; 
   //start insert data into tempreport
   fcds.insert;
   fcds['id']:=get_onlineid;
   fcds['reportname']:='CUSTOM-stupid';
   fcds['name']:=zquery.fields[0].asstring;
   fcds['name1']:=zquery.fields[1].asstring;
   fcds['name2']:=zquery.fields[2].asstring;
   .....
   fcds['name8']:=zquery.fields[8].asstring;
   fcds['name9']:=zquery.fields[9].asstring;
    ...
   zquery.next;
   end;
   fcds.post; 
   fcds.datarequest('select * from tempreport where id = "CUSTOM-stupid" ');
   applyupdate_fcds();
   setstatuslabel('Done.');
end;
end.
ขอบคุณครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: Knott ที่ มิถุนายน 22, 2010, 13:35:07 PM
ผมลองแก้แล้วครับ ช่วยทดสอบด้วยครับว่าขึ้นหรือป่าว ตัดตรงที่อยู่ อายุ และสิทธิดึงจาก an_stat แทนครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: วีระวัฒน์ (เอก) ที่ มิถุนายน 22, 2010, 17:46:54 PM
ลองเอาตัวนี้ไปปรับใช้ดูนะครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: vinaisena ที่ มิถุนายน 22, 2010, 22:18:54 PM
ขอโทษครับ ท่านอาจารย์ รายงานนี้พิมพ์และเอาไปใช้ตอนไหนครับ
หัวข้อ: Re: เพิ่งทำเสร็จเมื่อคืน เทพReport ชี้แนะหน่อยครับ
เริ่มหัวข้อโดย: border ที่ มิถุนายน 23, 2010, 00:28:06 AM

[quo
ขอโทษครับ ท่านอาจารย์ รายงานนี้พิมพ์และเอาไปใช้ตอนไหนครับ

แนบ chart ผู้ป่วยใน หลัง discharge ครับ