BMS-HOSxP Community

HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: nan_it ที่ กันยายน 12, 2011, 12:13:05 PM

หัวข้อ: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 12, 2011, 12:13:05 PM
คือผมกำลังเขียนรายงาน ผู้ป่วยเบาหวาน ที่ตรวจ FBS ปัญหาคือผมจะเปลี่ยนค่าใน lab_order_result ให้เป็นตัวอักษร
เช่น คนไข้ที่มีค่า FBS ต่ำกว่า 130 ให้แทนด้วย A  130-180 ให้แทนด้วย B ประมาณนี้ครับ แนะนำหน่อยครับ
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: nutsuanplu ที่ กันยายน 12, 2011, 13:33:56 PM
คือผมกำลังเขียนรายงาน ผู้ป่วยเบาหวาน ที่ตรวจ FBS ปัญหาคือผมจะเปลี่ยนค่าใน lab_order_result ให้เป็นตัวอักษร
เช่น คนไข้ที่มีค่า FBS ต่ำกว่า 130 ให้แทนด้วย A  130-180 ให้แทนด้วย B ประมาณนี้ครับ แนะนำหน่อยครับ

น่าจะประมาณนี้รึป่าวครับ

if lab_order_result < 130 then value := 'A';


หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 12, 2011, 14:38:18 PM
ผมลองนำเงื่อนไขไปใช่ดู ค่าที่ได้มันยังไม่ถูกทั้งหมดครับ คือ ผมกำหนดให้ค่าที่มากกว่า 180 เท่ากับ C พอลองตรวจสอบดู ฟิลล์ที่มีค่า 93 98 84 ประมาณนี้ ออกมาเป็น C หมดครับ แนะนำหน่อยครับ
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: usa0823 ที่ กันยายน 12, 2011, 14:55:40 PM
if lab_order_result < 130 then
begin
     value := 'A';
end
else  begin
    if lab_order_result >= 180 then
        begin
            value := 'C';
        end
     else  begin
            value := 'B';
        end;
end;
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 12, 2011, 15:27:28 PM
if lab_order_result < 130 then
begin
     value := 'A';
end
else  begin
    if lab_order_result >= 180 then
        begin
            value := 'C';
        end
     else  begin
            value := 'B';
        end;
end;
เขียนแล้วครับ ข้อมูลยังผิดอยู่ครับ ไม่ทราบว่าต้องแปลงข้อมูลในฟิลล์ให้เป็น int ก่อนหรือเปล่าครับ
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: usa0823 ที่ กันยายน 12, 2011, 15:37:53 PM
if strtoint(lab_order_result) < 130 then
begin
     value := 'A';
end
else  begin
    if strtoint(lab_order_result) >= 180 then
        begin
            value := 'C';
        end
     else  begin
            value := 'B';
        end;
end;
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: nutsuanplu ที่ กันยายน 12, 2011, 15:49:58 PM
ผมลองนำเงื่อนไขไปใช่ดู ค่าที่ได้มันยังไม่ถูกทั้งหมดครับ คือ ผมกำหนดให้ค่าที่มากกว่า 180 เท่ากับ C พอลองตรวจสอบดู ฟิลล์ที่มีค่า 93 98 84 ประมาณนี้ ออกมาเป็น C หมดครับ แนะนำหน่อยครับ

if lab_order_result < 130 then value := 'A'
else if lab_order_result >= 180 value :='C'
else if......;

ก็ลองเปลี่ยนพวกตัวแปลหรือ variable เป็น integer หรือ Double ดูอ่ะครับ

หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 13, 2011, 11:02:54 AM
if strtoint(lab_order_result) < 130 then
begin
     value := 'A';
end
else  begin
    if strtoint(lab_order_result) >= 180 then
        begin
            value := 'C';
        end
     else  begin
            value := 'B';
        end;
end;
ผมลองใช้ strtoint แล้วไม่ผ่านครับ
if  GetSQLStringData('select lab_order_result from lab_order where lab_order_number = "'+DBPipeline['lab_order_number']+'"') < '130' then
 begin
  Value :=   'A' ;
 end
else
  if (GetSQLStringData('select lab_order_result from lab_order where lab_order_number = "'+DBPipeline['lab_order_number']+'"') > '130') and (GetSQLStringData('select lab_order_result from lab_order where lab_order_number = "'+DBPipeline['lab_order_number']+'"') < '180') then
  begin
  Value :=   'B' ;
  end
  else
    if GetSQLStringData('select lab_order_result from lab_order where lab_order_number = "'+DBPipeline['lab_order_number']+'"') > '180' then
    begin
    Value := 'C' ;
    end

ผมเขียนแบบนี้ครับ แนะนำหน่อยครับ
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: realaerm ที่ กันยายน 13, 2011, 11:19:33 AM
ลองแบบนี้ดูนะครับ  ;)

value:=GetSqlStringData('select if(lab_order_result<130,"A",if(lab_order_result>=180,"C","B"))as result from lab_order where lab_items_code="'+รหัสของ lab_items_code+'" and vn="'+เลข vn คนไข้+'");
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: realaerm ที่ กันยายน 13, 2011, 11:27:16 AM
if lab_order_result < 130 then
begin
     value := 'A';
end
else  begin
    if lab_order_result >= 180 then
        begin
            value := 'C';
        end
     else  begin
            value := 'B';
        end;
end;
เขียนแล้วครับ ข้อมูลยังผิดอยู่ครับ ไม่ทราบว่าต้องแปลงข้อมูลในฟิลล์ให้เป็น int ก่อนหรือเปล่าครับ


Data type ของฟิลนี้เป็น varchar ครับ ถ้า if แบบนี้มันจะมองว่าเป็นเลข 1 3 0 แยก กัน ไม่ใช่ 130 พอมันเจอค่า 78 หรือ 78 ซึ่ง 7 มากกว่า 1 ทำให้ผลที่ได้ผิดครับ
(เวลาเป็น varchar จะมองเฉพาะตัวแรกอย่างเดียวก่อนแล้วค่อยไล่ไปตำแหน่งถัดไป)
ถ้าไงลอง code แบบด้านบนดูนะครับ
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 13, 2011, 12:02:04 PM
โปรแกรม error แบบนี้ครับ
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: realaerm ที่ กันยายน 13, 2011, 12:12:47 PM
โปรแกรม error แบบนี้ครับ

โทษทีครับ ตก ' ไปตัวครับ

value:=GetSqlStringData('select if(lab_order_result<130,"A",if(lab_order_result>=180,"C","B"))as result from lab_order where lab_items_code="'+รหัสของ lab_items_code+'" and vn="'+เลข vn คนไข้+'"');
หัวข้อ: Re: ขอคำแนะนำเรื่องทำรายงานหน่อยครับ
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 13, 2011, 13:31:56 PM
ที่เครื่อหมาย ' ตกไปผมแก้แล้วครับ มันก้ยัง error ครับ ผมลองเปิดโปรแกรม HOSxP ขึ้นมาพร้อมกันด้วย  ใช้ได้แล้วครับ ขอบคุณมากครับ