BMS-HOSxP Community
HOSxP => Delphi / Pascal => ข้อความที่เริ่มโดย: chearn ที่ มกราคม 25, 2018, 15:14:58 PM
-
สวัสดีครับ ผมเพิ่งย้ายมาทำ กำลังหัดเล่น เรื่อง popup อยู่แล้วตอนนี้กำลังจะเอาค่าไตมาโชว์ครับใน SYS_VN_PRE_SCRIPT ทีนี้ ผมเขียน query ไว้แล้ว 1 ชุด ประมาณนี้
select p.sex,YEAR(current_date)-YEAR(p.birthday) as age ,opdsc.bw as weigh,(select lab_order_result from lab_order where lab_items_code = '78' and confirm ='Y' and lab_order_number = (select lab_order_number from lab_head where vn = '510506083000' and confirm_report = 'Y'))
as test from opdscreen opdsc
left join patient p on p.hn = opdsc.hn
where opdsc.vn = '510506083000';
ค่า result ที่ได้รับมันได้ 4 ตัว ตามที่ต้องการแต่ผมจะหมดแล้ว แต่ผม จะ parse ใส่ ใน pascal ยังไงหรอครับ แบบให้มัน เป็นตัวแปล เดียวแล้ว pointer เอาได้ไหมครับ เช่น result.age, result.weight, result.lab_order....
ตอนนี้เลยใช้ท่านี้ก่อนครับ 55555 ขอคำแนะนำหน่อยครับพี่ๆ
[attachimg=2]
-
ถ้าคิวรี่ออกมาแค่ row เดียว field เดียว จะใช้แบบนี้ก็ได้ครับ
fhn := GetSQLdata('select hn from ovst where vn = "'+fvn+'"');
----------------------------------------------------------------------------------
แต่ถ้าต้องการคิวรี่ออกมา row เดียว แต่หลาย field ก็ใช้แบบนี้ครับ
procedure .........
var
sql, f1, f2: string;
tmp: TClientDataset;
begin
sql := 'SELECT field1, field2, ... FROM ..............';
tmp.data := HOSxP_GetDataSet(sql);
//เวลาจะใช้งานก็แบบนี้ครับ
f1 := tmp.FieldByName('field1').AsString;
f2 := tmp.FieldByName('field2').AsString;
//ก็เอา result ที่ได้มาใส่เข้าไปใน client dataset เลยก็ได้ ****************
end;
----------------------------------------------------------------------------------
ถ้า result คิวรี่ออกมามีหลาย row
ก็เอา result ที่ได้มาใส่เข้าไปใน client dataset เลยก็ได้ ****************
หรือใช้วิธีการ loop เอาข้อมูลมาใช้ หรืออาจจะคำนวนออะไรก่อนก็ได้ครับ
procedure .........
var
sql, f1: string;
tmp: TClientDataset;
begin
sql := 'SELECT field1, field2, ... FROM ..............';
try
tmp.data := HOSxP_GetDataSet(sql);
while not tmp.eof do begin
f1 := tmp.FieldByName('field1').AsString;
tmp.Next;
end;
except
on E : Exception do Exit;
end;
end;
----------------------------------------------------------------------------------
โดยคำนึงถึงการ except error เอาไว้ด้วยเพื่อป้องกันการผิดพลาดของโปรแกรม
-
ถ้าคิวรี่ออกมาแค่ row เดียว field เดียว จะใช้แบบนี้ก็ได้ครับ
fhn := GetSQLdata('select hn from ovst where vn = "'+fvn+'"');
----------------------------------------------------------------------------------
แต่ถ้าต้องการคิวรี่ออกมา row เดียว แต่หลาย field ก็ใช้แบบนี้ครับ
procedure .........
var
sql, f1, f2: string;
tmp: TClientDataset;
begin
sql := 'SELECT field1, field2, ... FROM ..............';
tmp.data := HOSxP_GetDataSet(sql);
//เวลาจะใช้งานก็แบบนี้ครับ
f1 := tmp.FieldByName('field1').AsString;
f2 := tmp.FieldByName('field2').AsString;
//ก็เอา result ที่ได้มาใส่เข้าไปใน client dataset เลยก็ได้ ****************
end;
----------------------------------------------------------------------------------
ถ้า result คิวรี่ออกมามีหลาย row
ก็เอา result ที่ได้มาใส่เข้าไปใน client dataset เลยก็ได้ ****************
หรือใช้วิธีการ loop เอาข้อมูลมาใช้ หรืออาจจะคำนวนออะไรก่อนก็ได้ครับ
procedure .........
var
sql, f1: string;
tmp: TClientDataset;
begin
sql := 'SELECT field1, field2, ... FROM ..............';
try
tmp.data := HOSxP_GetDataSet(sql);
while not tmp.eof do begin
f1 := tmp.FieldByName('field1').AsString;
tmp.Next;
end;
except
on E : Exception do Exit;
end;
end;
----------------------------------------------------------------------------------
โดยคำนึงถึงการ except error เอาไว้ด้วยเพื่อป้องกันการผิดพลาดของโปรแกรม
ขอบคุณครับพี่ แบบนี้เลย