ท่านที่โหลดไปแล้วช่วย ทดสอบให้หน่อยครับ ว่า
ที่อยู่ สิทธิ อายุ ว่าออกครบหรือป่าว ครับ แต่ผมทดสอบแล้วออกครับ
แต่คุณ 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.