ผู้เขียน หัวข้อ: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?  (อ่าน 9584 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ kobe

  • Full Member
  • ***
  • กระทู้: 144
  • Respect: 0
    • ดูรายละเอียด
    • www.dnrh.go.th
อยากทราบว่าการใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ใน Report Designer ใช้ต่างกันยังไงครับ
สัญญา ธรรมวงษ์
นักจัดการงานทั่วไปปฏิบัติการ
Server IBM x3650 Xeon 2.66 GHz Centos 5.6 64bit Ram  16 GB   Harddisk 1TB GB Hos-Swap SAS
Mysql 5.1.42 inondb  
Slave  Server IBM x3200 Xeon 2.00 GHz Windows Server 2003 Ram  4 GB   Harddisk 2 x 2 146 GB Hos-Swap SAS
Mysql 5.5
HOSxP V.3.56.11.1

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #1 เมื่อ: มิถุนายน 01, 2010, 09:26:18 AM »
0
GetSQLStringData    เอาไว้ดึงค่า ๆ เดียวครับ



ส่วน  GetSQLSubQueryData()  เอาไว้ดึงข้อมูลเป็น  เพื่อสร้างเป็นเงื่อนไขของคำสั่ง SQL อีกที
เช่น 

GetSQLSubQueryData('select hn from patient limit 3')
ผลลัพที่ได้จะเป็น
'xxxxxxx','xxxxxxx','xxxxxxx'

สามารถเอาตัวแปรมารับแล้วเอาไปใส่ในคำสั่ง SQL 
I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ kobe

  • Full Member
  • ***
  • กระทู้: 144
  • Respect: 0
    • ดูรายละเอียด
    • www.dnrh.go.th
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #2 เมื่อ: มิถุนายน 01, 2010, 09:37:29 AM »
0
GetSQLStringData    เอาไว้ดึงค่า ๆ เดียวครับ



ส่วน  GetSQLSubQueryData()  เอาไว้ดึงข้อมูลเป็น  เพื่อสร้างเป็นเงื่อนไขของคำสั่ง SQL อีกที
เช่น 

GetSQLSubQueryData('select hn from patient limit 3')
ผลลัพที่ได้จะเป็น
'xxxxxxx','xxxxxxx','xxxxxxx'

สามารถเอาตัวแปรมารับแล้วเอาไปใส่ในคำสั่ง SQL 


แล้วเวลาเอาตัวแปรมารับผลลัพธ์ของ GetSQLSubQuery() เราจะอ้างถึงข้อมูลที่ Query ออกมายังไงครับ เช่น ตัวอยางของคุณ Imnuke ได้ผลลัพธ์มา 3 hn แล้วผมจะอ้างถึง hn ที่ 1 ยังไงครับ
สัญญา ธรรมวงษ์
นักจัดการงานทั่วไปปฏิบัติการ
Server IBM x3650 Xeon 2.66 GHz Centos 5.6 64bit Ram  16 GB   Harddisk 1TB GB Hos-Swap SAS
Mysql 5.1.42 inondb  
Slave  Server IBM x3200 Xeon 2.00 GHz Windows Server 2003 Ram  4 GB   Harddisk 2 x 2 146 GB Hos-Swap SAS
Mysql 5.5
HOSxP V.3.56.11.1

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #3 เมื่อ: มิถุนายน 01, 2010, 09:53:28 AM »
0
GetSQLStringData    เอาไว้ดึงค่า ๆ เดียวครับ



ส่วน  GetSQLSubQueryData()  เอาไว้ดึงข้อมูลเป็น  เพื่อสร้างเป็นเงื่อนไขของคำสั่ง SQL อีกที
เช่น 

GetSQLSubQueryData('select hn from patient limit 3')
ผลลัพที่ได้จะเป็น
'xxxxxxx','xxxxxxx','xxxxxxx'

สามารถเอาตัวแปรมารับแล้วเอาไปใส่ในคำสั่ง SQL 


แล้วเวลาเอาตัวแปรมารับผลลัพธ์ของ GetSQLSubQuery() เราจะอ้างถึงข้อมูลที่ Query ออกมายังไงครับ เช่น ตัวอยางของคุณ Imnuke ได้ผลลัพธ์มา 3 hn แล้วผมจะอ้างถึง hn ที่ 1 ยังไงครับ

ผลลัพธ์ที่ได้คือ  String  1  ตัว  ที่มีค่า  'xxxxxxx','xxxxxxx','xxxxxxx'
แล้วคำสั่ง SQL  ของเราก็คือ  String 

เราสามารถนำตัวแปรที่ได้มาต่อกับคำสั่ง SQL  ได้เลย

เช่นต้องการชื่อนามสกุลของ  3  คนนี้
ก็จะได้ SQL ประมาณนี้ครับ
fhn := GetSQLSubQueryData('select hn from patient limit 3');
SQL := 'select concat(pname,fname,"  ",lname) from patient where hn in ('+ fhn +')';

แล้วนำตัวแปร  SQL  ไปรันได้เลย

การใช้ SubQuery ใน SQL  บางครั้งจะทำให้การดึงข้อมูลช้า
การใช้  GetSQLSubQueryData()  จะทำรายงานเราดึงข้อมูลได้เร็วขึ้น  (ในกรณีที่มีการใช้ SubQuery ซ้ำ ๆ กันหลายรอบ)

ถ้าพลาดยังไง ขออภัยด้ยนะคับ   ;D
I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ kobe

  • Full Member
  • ***
  • กระทู้: 144
  • Respect: 0
    • ดูรายละเอียด
    • www.dnrh.go.th
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #4 เมื่อ: มิถุนายน 01, 2010, 11:10:50 AM »
0
ขอถามอีกข้อครับ ถ้าผมต้องการสร้างรายการตัวเลือกแบบ Listbox (ตามรูป) โดยตัวรายการแสดงเป็นชื่อของยา แล้วใช้คำสั่ง SQL ดึงข้อมูล โดยอ้างถึง icode ของยาใน listbox นั้นต้องทำยังไงครับ ผมลองทำแล้วตัวรายการเลือกมันแสดงเป็น icode ของยาครับ (ตามรูป) พอดึงชื่อมาแสดงใน listbox แล้วรันคำสั่ง SQL โดยอ้างชื่อมันไม่ตรงเงื่อนไขอะครับ
« แก้ไขครั้งสุดท้าย: มิถุนายน 01, 2010, 11:15:23 AM โดย kobe »
สัญญา ธรรมวงษ์
นักจัดการงานทั่วไปปฏิบัติการ
Server IBM x3650 Xeon 2.66 GHz Centos 5.6 64bit Ram  16 GB   Harddisk 1TB GB Hos-Swap SAS
Mysql 5.1.42 inondb  
Slave  Server IBM x3200 Xeon 2.00 GHz Windows Server 2003 Ram  4 GB   Harddisk 2 x 2 146 GB Hos-Swap SAS
Mysql 5.5
HOSxP V.3.56.11.1

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #5 เมื่อ: มิถุนายน 01, 2010, 12:01:28 PM »
0

Query  ชื่อยากับ Icode ออกมาเลยครับ
แล้วใช้  substring  ดึง  icode 

เดี๋ยวบ่าย ๆ มาลง  code ให้
I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #6 เมื่อ: มิถุนายน 01, 2010, 12:03:05 PM »
0
ขอถามอีกข้อครับ ถ้าผมต้องการสร้างรายการตัวเลือกแบบ Listbox (ตามรูป) โดยตัวรายการแสดงเป็นชื่อของยา แล้วใช้คำสั่ง SQL ดึงข้อมูล โดยอ้างถึง icode ของยาใน listbox นั้นต้องทำยังไงครับ ผมลองทำแล้วตัวรายการเลือกมันแสดงเป็น icode ของยาครับ (ตามรูป) พอดึงชื่อมาแสดงใน listbox แล้วรันคำสั่ง SQL โดยอ้างชื่อมันไม่ตรงเงื่อนไขอะครับ
... ประมาณว่า ....

var
listbox,icode : string;

begin

   listbox:= GetPickupList('select concat(name," ",strength," / ",units,"(",icode,")") '+
   'from drugitems order by name,strength,units  ');
   {สร้างรายชื่อยาให้เลือกใน list}

   icode:= GetSQLStringData('select icode from drugitems  '+
   'where concat(name," ",strength," / ",units,"(",icode,")") = "'+listbox+'" ');
   {แปลงค่าใน listbox ให้เป็น icode}

end;

... จากนั้นก็เอา icode ไปใช้งานได้ครับ  ผมอธิบายเรื่องทฤษฎีไม่ค่อยเก่งเหมือนน้องนุ๊กนะครับ  .. :D ...

... เรื่องเอาชื่อยา(หรืออื่นๆ)มาทำเป็น list ให้เลือก ต้องระวังนิดเรื่องรายชื่อยาที่อาจจะมีการซ้ำกันได้ ถ้าใช้ชื่อยาอย่างเดียว  อาจได้ค่า icode ที่เราอ้างอิงจากชื่อยาผิดจากที่เราต้องการได้ครับ ...
« แก้ไขครั้งสุดท้าย: มิถุนายน 01, 2010, 12:07:43 PM โดย Khuad »
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #7 เมื่อ: มิถุนายน 01, 2010, 12:04:39 PM »
0
ลง  Code  เลยละกันครับ มีนิดเดียว

procedure GlobalOnCreate;
var cm,icode:String;
begin
 cm:=GetPickupList('select concat(icode," - ",name) from drugitems limit 10');
 icode := Copy(cm,0,7);
 showmessage('ICODE = '+icode);
end;



อันนี้ไม่ต้องกังวลชื่อยาซ้ำกันครับ    ;D
I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ kobe

  • Full Member
  • ***
  • กระทู้: 144
  • Respect: 0
    • ดูรายละเอียด
    • www.dnrh.go.th
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #8 เมื่อ: มิถุนายน 01, 2010, 12:13:33 PM »
0
ขอบคุณทุกคำแนะนำครับ
สัญญา ธรรมวงษ์
นักจัดการงานทั่วไปปฏิบัติการ
Server IBM x3650 Xeon 2.66 GHz Centos 5.6 64bit Ram  16 GB   Harddisk 1TB GB Hos-Swap SAS
Mysql 5.1.42 inondb  
Slave  Server IBM x3200 Xeon 2.00 GHz Windows Server 2003 Ram  4 GB   Harddisk 2 x 2 146 GB Hos-Swap SAS
Mysql 5.5
HOSxP V.3.56.11.1

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #9 เมื่อ: มิถุนายน 01, 2010, 12:14:21 PM »
0
... สอบถามนิดนะครับน้องนุ๊กหรือ อ.ท่านอื่นๆ ครับ เกี่ยวกับ GetSQLSubQueryData  ว่ามันมี limit ของข้อมูลหรือเปล่าครับ  ถ้ามีเป็นขนาดเท่าไรครับ ...

... ผมเคยใช้ GetSQLSubQueryData เพื่อเก็บค่า HN (ซึ่งมีประมาณ 8,000 record)  ปรากฏว่า GetSQLSubQueryData ไม่มีข้อมูลเลยครับ  
    แต่ถ้ากำหนดให้มี limit แค่ 500  ปรากฏว่ามีข้อมูลของ HN ให้ได้(500 record)ครับ ....  :D ....
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549

ออฟไลน์ James011

  • Hero Member
  • *****
  • กระทู้: 1,743
  • Respect: +16
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #10 เมื่อ: มิถุนายน 01, 2010, 13:17:27 PM »
0
... สอบถามนิดนะครับน้องนุ๊กหรือ อ.ท่านอื่นๆ ครับ เกี่ยวกับ GetSQLSubQueryData  ว่ามันมี limit ของข้อมูลหรือเปล่าครับ  ถ้ามีเป็นขนาดเท่าไรครับ ...

... ผมเคยใช้ GetSQLSubQueryData เพื่อเก็บค่า HN (ซึ่งมีประมาณ 8,000 record)  ปรากฏว่า GetSQLSubQueryData ไม่มีข้อมูลเลยครับ  
    แต่ถ้ากำหนดให้มี limit แค่ 500  ปรากฏว่ามีข้อมูลของ HN ให้ได้(500 record)ครับ ....  :D ....

  ;D ;D ;D ดูของผมนะครับ

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #11 เมื่อ: มิถุนายน 01, 2010, 15:07:39 PM »
0
ไม่แน่ใจเหมือนกันครับ   อ.ขวด
แต่ขอเดาไว้ก่อน   อิอิ    ถ้ามี  limit  จริง ๆ คงเป็น  limit  ที่เป็น  lenght  ของ  string  อ่ะครับ
ปกติก็ไม่เคยใช้ถึงสักที

แต่เห็นของ  อ.เจม   แล้ว  เหมือนชีวิตจะเกิน  100   เลยนะครับ  (ไม่มี  limit  ชีวิตเกิน 100) ;D
I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #12 เมื่อ: มิถุนายน 01, 2010, 15:39:23 PM »
0

... สงสัยอย่างที่นุ๊กบอกครับ   พอดีจำไม่ได้ว่าตอนที่เจอเป็นรายงานที่ใช้คำสั่งแบบไหน  ..  :D ...

   หรืออาจรีบร้อนไม่ได้รอให้มีการประมวลผลข้อมูลซึ่งเยอะมากเสร็จก่อน 
   วัยรุ่นก็เงี๊ยแหละครับ ใจร้อน 555555  ...  ;D  ;D .....
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549

ออฟไลน์ udomchok

  • Hero Member
  • *****
  • กระทู้: 8,348
  • Respect: +589
    • ดูรายละเอียด
    • ร.พ.สมเด็จพระสังฆราช องค์ที่ 17
Re: การใช้ฟังก์ชั่น GetSQLStringData() กับ GetSQLSubQueryData() ต่างกันยังไง ?
« ตอบกลับ #13 เมื่อ: มิถุนายน 01, 2010, 20:29:36 PM »
0
ขอถามอีกข้อครับ ถ้าผมต้องการสร้างรายการตัวเลือกแบบ Listbox (ตามรูป) โดยตัวรายการแสดงเป็นชื่อของยา แล้วใช้คำสั่ง SQL ดึงข้อมูล โดยอ้างถึง icode ของยาใน listbox นั้นต้องทำยังไงครับ ผมลองทำแล้วตัวรายการเลือกมันแสดงเป็น icode ของยาครับ (ตามรูป) พอดึงชื่อมาแสดงใน listbox แล้วรันคำสั่ง SQL โดยอ้างชื่อมันไม่ตรงเงื่อนไขอะครับ
ลองศึกษาจาก http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=12853.0 ครับ
ทำด้วยหัวใจร.พ.สมเด็จพระสังฆราช องค์ที่ 17 อ.สองพี่น้อง จ.สุพรรณบุรี
อบรมโดย BMS Team เมื่อ พ.ย. 49 ขึ้นระบบห้องบัตรเมื่อ X'Mas 2007
2008 : X-Ray กายภาพบำบัด แพทย์แผนไทย กิจกรรมบำบัด OPD ตา
2009 : ทันตกรรม ห้องตรวจตา OPD (พยาบาลและห้องตรวจแพทย์บางห้อง)