ในที่สุดก็แก้ได้แล้วครับ (ดีใจเล็กๆ)เนื่องจากไม่อยากที่จะแก้ที่ละแถวครับ เลยลองเขียน pascal script มาแก้เฉพาะคนไข้คลินิกที่มีวันนัดถัดไปเป็น 1/1/2443 มาเป็นวันนัดตามจริงตามข้อมูลในตาราง oapp
หมายเหตุ
ไม่แนะนำให้ไปใช้จริงนะครับ ขอใช้ที่โรงพยาบาลผมที่เดียวดีกว่า เนื่องจากเขียนแบบลองผิดลองถูกครับ ไม่มั่นใจว่าจะใช้กับที่อื่นได้ผลหรือเปล่า แต่ที่ผมทดสอบแล้ว ใช้จริงกับ databases ของโรงพยาบาลแล้ว ใช้ได้ครับ แต่คงต้องให้พี่พยาบาล opd ตรวจสอบอีกครั้งหนึ่งเลยฝาก อ.mn ช่วยตรวจสอบว่าผมเขียน pascal script ฉบับลูกทุ่งๆพอไหวไหมครับ
PROGRAM YINDEE;
var
tc,tc1:tclientdataset;
begin
tc:=tclientdataset.create(nil);
tc1:=tclientdataset.create(nil);
tc.data:=hosxp_getdataset('select * from clinicmember where next_app_date="1900-01-01" order by hn');
while not tc.eof do
begin
tc1.data:=hosxp_getdataset('select nextdate from oapp where hn="'+tc.fieldbyname('hn').asstring+'" order by oapp_id desc limit 1');
tc.edit;
tc.fieldbyname('next_app_date').asstring:=tc1.fieldbyname('nextdate').asstring;
tc.post;
showdebugtext('HN = '+tc.fieldbyname('hn').asstring+' CLINIC = '+tc.fieldbyname('clinic').asstring+' >>>>>> '+' nextdate = '+
tc1.fieldbyname('nextdate').asstring);
tc.next;
end;
if tc.changecount>0 then
hosxp_updatedelta(tc.delta,'select * from clinicmember where next_app_date="1900-01-01" order by hn');
tc1.free;
tc.free;
showmessage('Process Done');
end.
แบบที่ 2 ระบุคลินิกเพิ่มเข้าไปใน TC1
PROGRAM YINDEE;
var
tc,tc1:tclientdataset;
begin
tc:=tclientdataset.create(nil);
tc1:=tclientdataset.create(nil);
tc.data:=hosxp_getdataset('select * from clinicmember where next_app_date="1900-01-01" order by hn');
while not tc.eof do
begin
tc1.data:=hosxp_getdataset('select nextdate from oapp where hn="'+tc.fieldbyname('hn').asstring+'" and '+
'clinic="'+tc.fieldbyname('clinic').asstring+'" order by oapp_id desc limit 1');
tc.edit;
tc.fieldbyname('next_app_date').asstring:=tc1.fieldbyname('nextdate').asstring;
tc.post;
showdebugtext('HN = '+tc.fieldbyname('hn').asstring+' CLINIC = '+tc.fieldbyname('clinic').asstring+' >>>>>> '+' nextdate = '+
tc1.fieldbyname('nextdate').asstring);
tc.next;
end;
if tc.changecount>0 then
hosxp_updatedelta(tc.delta,'select * from clinicmember where next_app_date="1900-01-01" order by hn');
tc1.free;
tc.free;
showmessage('Process Done');
end.