ขอบคุณอาจารย์ทุกท่านค่ะเพิ่งรู้ค่ะว่าคำสั่งอยู่ตรงนี้แต่พยายามไล่ดูแล้วก็ไม่เข้าใจสักทีทำไมรหัสแพทญืไม่ออกค่ะ รบกวนด้วยนะค่ะ
... ไม่รู้ว่าตอบช้าไปหรือเปล่า ช่วงนี้ลาพักผ่อนครับ
....
ลอง copy คำสั่งข้างล่าง ไปแทนที่ script เดิมของรายงานดูนะครับ ผมเพิ่มข้อมูลในตาราง tempreport ให้อีก 4 ตัว(สีน้ำเงิน) เอาไปใช้ในรายงานได้เลยครับ
name10 = vn
name11 = รหัสแพทย์
name12 = ชื่อเจ้าของรหัสแพทย์
name13 = เลขที่ใบประกอบวิชาชีพ
ซึ่งข้อมูลแพทย์อันนี้ผมเอามาจาก doctor ในตาราง ovst นะครับ
แต่ถ้าต้องการใช้ข้อมูลแพทย์จากตารางอื่น ก็ใช้การวาง variable ในรายงานแล้วใส่คำสั่งไปเลยก็ได้ครับ โดยใช้ vn เป็นเงื่อนไข แล้วใช้ประโยชน์จากข้อมูล vn(name10) ที่เพิ่มเข้าไปใหม่ครับ เช่น
where vn = "'DBPipeline['name10']'"
ลองดูนะครับ ...
....
-------------------------------------------------------------------------------------------------------------
unit MyIPDReport;
function getsqlsubquerydatax(sql:string):string;
begin
result:='';
zquery.close;
zquery.sql.text:=sql;
zquery.open;
zquery.first;
while not zquery.eof do
begin
if result='' then result:=''''+zquery.fields[0].asstring+'''' else
result:=result+','''+zquery.fields[0].asstring+'''';
zquery.next;
end;
zquery.close;
if result='' then result:='''''';
end;
procedure main;
var d1,d2:tdatetime;
people_distinct_count1 : integer;
people_count1 : integer;
ds1,ds2:string;
pttype_list1 : string;
pttype,pttype_name:string;
hospcode_list:string;
money1:currency;
i:integer;
occu:string;
begin
pttype:= getpickuplist('select name from pttype where isuse="Y" order by name');
if pttype='' then exit;
pttype_name:=pttype;
pttype:=getsqldata('select pcode from pttype where name="'+pttype+'"');
if pttype='UA' then pttype:='UC';
if pttype='UB' then pttype:='UC';
if pttype='UC' then pttype_name:=getsqlsubquerydata('select name from pttype where pcode in ("UC","UA","UB")') else
pttype_name := getsqlsubquerydata('select name from pttype where pcode="'+pttype+'"');
showmessage('use pcode = '+pttype);
if not getdaterange() then exit;
d1:=date_result1();
d2:=date_result2();
// showmessage(formatdatetime('yyyy-mm-dd',d1)+' - '+
// formatdatetime('yyyy-mm-dd',d2));
ds1:=formatdatetime('yyyy-mm-dd',d1);
ds2:=formatdatetime('yyyy-mm-dd',d2);
hospcode_list:=getsqlsubquerydata('select distinct hospmain from vn_stat where pcode = "'+pttype+'" and vstdate between "'+ds1+'" and "'+ds2+'" ');
hospcode_list := getpickuplist('select concat(hospcode,":",hosptype," ",name) as name from hospcode where hospcode in ('+
hospcode_list+') ');
zquery.sql.text:='delete from tempreport where id = "CUSTOM-NK1OPD-PK" ';
zquery.execsql;
fcds.close;
fcds.datarequest('select * from tempreport where id = "CUSTOM-NK1OPD-PK" ');
fcds.open;
fcds2.close;
if hospcode_list='' then
fcds2.datarequest('select * from vn_stat where pcode = "'+pttype+'" and vstdate between "'+ds1+'" and "'+ds2+'" order by vn ')
else
fcds2.datarequest('select * from vn_stat where pcode = "'+pttype+'" and vstdate between "'+ds1+'" and "'+ds2+'" '+
' and hospmain="'+copy(hospcode_list,1,5)+'" order by vn ');
fcds2.open;
setstatuslabel('Open result : '+inttostr(fcds2.recordcount)+' Records');
fcds2.first;
i:=0;
while not fcds2.eof do
begin
i:=i+1;
setprogressbar(i,fcds2.recordcount);
fcds.insert;
fcds['id']:='CUSTOM-NK1OPD-PK';
fcds['reportname']:='CUSTOM-NK1OPD-PK';
fcds['name']:=getsqldata('select i_refer_number from ovst where vn="'+fcds2['vn']+'"');
fcds['name1']:=pttype_name;
fcds['name2']:=getsqldata('select concat(pname,fname," ",lname) as name from patient where hn="'+
fcds2['hn']+'"');
fcds['name3']:=fcds2['hn'];
fcds['name4']:=fcds2['pttypeno'];
fcds['date3']:=fcds2['pttype_expire'];
fcds['name5']:=getsqldata('select concat(name,", ",hosptype) as name from hospcode where hospcode="'+
fcds2['hospmain']+'"');
occu:=getsqldata('select occupation from patient where hn="'+fcds2['hn']+'"');
if occu<>'' then
occu:=getsqldata('select name from occupation where occupation="'+occu+'"');
fcds['name6']:=occu;
if fcds2['sex']='1' then
fcds['name7']:='ª' else
fcds['name7']:='­';
fcds['num1']:=fcds2['age_y'];
fcds['name8']:=fcds2['pdx']+' '+fcds2['dx0'];
fcds['name9']:=fcds2['op0']+' '+fcds2['op1'];
fcds['name10']:=fcds2['vn'];
fcds['name11']:=getsqldata('select doctor from ovst where vn = "'+fcds2['vn']+'"');
fcds['name12']:=getsqldata('select d.name from ovst o,doctor d where o.doctor = d.code and o.vn = "'+fcds2['vn']+'"');
fcds['name13']:=getsqldata('select d.licenseno from ovst o,doctor d where o.doctor = d.code and o.vn = "'+fcds2['vn']+'"'); // finance summary
fcds['mon1']:=fcds2['inc01'];
fcds['mon2']:=fcds2['inc02'];
fcds['mon3']:=fcds2['inc03'];
fcds['mon4']:=fcds2['inc04'];
fcds['mon5']:=fcds2['inc05'];
fcds['mon6']:=fcds2['inc06'];
fcds['mon7']:=fcds2['inc13'];
fcds['mon8']:=fcds2['inc07'];
fcds['mon9']:=fcds2['inc12'];
fcds['mon10']:=fcds2['inc14']+fcds2['inc08']+fcds2['inc09']+fcds2['inc10']+
fcds2['inc11']+fcds2['inc15']+
fcds2['inc16']+fcds2['inc17'];
fcds['mon11']:=fcds2['income'];
fcds['date1']:=d1;
fcds['date2']:=d2;
fcds['date4']:=fcds2['vstdate'];
fcds.post;
fcds2.next;
end;
fcds.datarequest('select * from tempreport where id = "CUSTOM-NK1OPD-PK" ');
applyupdate_fcds();
end;
end.
-------------------------------------------------------------------------------------------------------------