ผู้เขียน หัวข้อ: การใช้ String Function (บางส่วน) ใน Report Designer  (อ่าน 13343 ครั้ง)

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

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
การใช้ String Function (บางส่วน) ใน Report Designer
« เมื่อ: มกราคม 28, 2011, 13:05:25 PM »
0
เอามาจดไว้กันลืมครับ  ว่าแต่ละฟังก์ชันใช้ทำอะไรบ้าง  เพราะเป็นฟังก์ชันที่ไม่ค่อยได้ใช้   ;D


Copy(S, Index, Count);  =>  ใช้ Copy บางส่วนของ String
Parameter
   -  S [String] :  String  ต้นแบบ
   -  Index [Integer] : ตำแหน่งของตัวอักษรที่จะเริ่ม Copy
   -  Count [Integer] : จำนวนตัวอักษรที่ต้องการ Copy
Return [String] : String  ที่ Copy
ตัวอย่าง
Copy('Imnuke', 3, 4);   
เริ่มที่ตัวอักษรที่  3  คือตัว n  และมีการ copy  4  ตัว   จะได้ค่า  nuke

=================================================================

CompareText(S1, S2);   =>  ใช้เปรียบเทียบ  String  สองค่า
Parameter
   -  S1 [String]  :  String  ตัวที่ 1
   -  S2 [String] :  String  ตัวที่ 2
Return [Integer]  :  0  เมื่อ  String ทั้ง 2 ตัวมีค่าเท่ากัน  และเป็นค่าอื่น ๆ เมื่อตัวเลขไม่เท่ากัน
ตัวอย่าง
CompareText('Imnuke', 'CpeIX'); Return   =>  6
CompareText('Imnuke', 'Imnuke');  Return   =>    0

=================================================================

ExtractString(s, ps, delimeter);   ใช้แยกข้อความออกจากกันคล้าย ๆ ฟังก์ชัน  split
Parameter
  - s  [String]  :  String  ที่ต้องการแยก
  - ps  [Integer]  :  Index  ของ  String ที่แยกแล้ว
  - delimeter [String]   :  String  ที่จะใช้เป็นตัวแยก
Reutrn [String]  :  String  ที่แยกออกจากกันเรียบร้อยแล้ว
ตัวอย่าง
ExtractString('Imnuke CpeIX', 2, ' ');
 เป็นการแยกข้อความออกจากกัน โดยใช้ช่องว่างเป็นตัวแยก
เมื่อแยกแล้วจะได้  String สองชุดคือ  Imnuke  และ CpeIX
เมื่อเรากำหนด Parameter ps  เป็น  2  จะได้ค่า String ตัวที่ 2 ก็คือ CpeIX  นั่นเอง

=================================================================

UpperCase(S);  ใช้เปลี่ยนตัวอักษรให้เป็นตัวใหญ่ทั้งหมด
Parameter
  -  S  [String]  :  String ที่ต้องการเปลี่ยนเป็นตัวพิมพ์ใหญ่  (ไม่มีผลกับภาษาไทย)
Return [String] :  String ที่มีการเปลี่ยนเป็นตัวพิมพ์ใหญ่แล้ว
ตัวอย่าง
UpperCase('Imnuke');  Return => IMNUKE

=================================================================

LowerCase(S);   ใช้เปลี่ยนตัวอักษรตัวแรกให้เป็นตัวเล็กทั้งหมด
Parameter
  -  S  [String]  :  String ที่ต้องการเปลี่ยนเป็นตัวพิมพ์เล็ก  (ไม่มีผลกับภาษาไทย)
Return [String] :  String ที่มีการเปลี่ยนเป็นตัวพิมพ์เล็กแล้ว
ตัวอย่าง
UpperCase('IMNUKE');  Return => imnuke

=================================================================

Pos(Substr, S);   ใช้หาตำแหน่งของตัวอักษร
Parameter
  - S [String]  :  String  ต้นแบบ
  - Substr [String] : String ที่ต้องการหาตำแหน่ง
Return [Integer] : ตำแหน่งของ String ที่ต้องการหา

=================================================================

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

ออฟไลน์ saan

  • Jr. Member
  • **
  • กระทู้: 98
  • ภูทับเบิก | ดอยอ่างขาง | ขุนสถาน | ภูชี้ฟ้า
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #1 เมื่อ: มกราคม 28, 2011, 14:02:12 PM »
0
 ;D ;D แบบนี้แหล่ะครับที่อยากได้ เพราะการลองผิดลองถูก มันใช้เวลานานครับ
Sobsai Health Center
Sungmen Phrae
Run System 01/07/2552
HOSxP PCU V. ล่าสุด

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #2 เมื่อ: มกราคม 28, 2011, 14:34:47 PM »
0
เอาโจทย์ไปลองทำเล่น ๆ  สัก 2 ข้อนะครับ    ;D ;D

ใครว่าง ๆ ก็ลองเล่นดูนะครับ   ;D


1.  จงเขียน  Sourcecode  เพื่อหาชื่อไฟล์ที่ถูก  Backup  (ปกติจะกเก็บ path ไว้  ให้เขียนโค้ดดึงชื่อไฟล์ออกมา)   ฟิล์ backup_filename ในตาราง  system_backup_history

2.  จงเขียน Sourcecode  เพื่อหา  User  ที่เป็นคน  Backup  ข้อมูล  (ปกติจะเก็บชื่อเครื่องและuser  ให้เขียนโค้ดดึง user  ออกมา)   ฟิล์  backup_computer  ในตาราง system_backup_history


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

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #3 เมื่อ: มกราคม 28, 2011, 15:54:19 PM »
0

... เยี่ยมเลยครับ นุ๊ก ....  :D ...

... ไม่กล้าตอบโจทย์  กลัวได้ บ้านพร้อมหนี้สิน ครับ ...5555 ...
    ทุกวันนี้ก็จะแย่อยู่แล้ว ... 5555555 ....  ;D  ;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

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #4 เมื่อ: มกราคม 28, 2011, 16:10:34 PM »
0

... เยี่ยมเลยครับ นุ๊ก ....  :D ...

... ไม่กล้าตอบโจทย์  กลัวได้ บ้านพร้อมหนี้สิน ครับ ...5555 ...
    ทุกวันนี้ก็จะแย่อยู่แล้ว ... 5555555 ....  ;D  ;D  ;D ....

ตอบได้เลยครับพี่  เดี๋ยวบ้านพร้อมหนี้สินผมเก็บเอง  555+


===============================================
จะเลิกงานแล้วเฉลยข้อ 2 ก่อนละกันนะครับ  เหลือข้อแรกไว้ให้ทำ   ;D
สมมุติว่าผมมีตัวแปร  String ชื่อ comname   สามารถดึง user ที่ backup ข้อมูลโดยดึงตัวอักษรที่อยู่ระหว่าง  [ ]  ก็จะได้ ชื่อ user แล้วครับ   ( ถ้าไม่มีใครตัังชื่อคอม  หรือ Username  มีตัวอักษร  []   )

comname:= 'PLAN_COM4 [svrnuke]';
Value := copy( comname,Pos('[',comname) +1 ,  Pos(']',comname) -  Pos('[',comname) - 1 );
« แก้ไขครั้งสุดท้าย: มกราคม 28, 2011, 16:23:35 PM โดย I'm nuke »
I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ wiphusit

  • Hero Member
  • *****
  • กระทู้: 2,426
  • ยอดกมล
  • Respect: +4
    • ดูรายละเอียด
    • โรงพยาบาลทับปุด
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #5 เมื่อ: มกราคม 28, 2011, 17:02:30 PM »
0
ขอบคุณครับ
วิภูษิต  คงแก้ว เจ้าพนักงานเครื่องคอมพิวเตอร์ 
โรงพยาบาลทับปุด
อำเภอทับปุด จ.พังงา 82180
โทร 0-7659-9019 ต่อ 117,101
โทรสาร 0-7659-9115
Thailand.

ออฟไลน์ Bordin

  • Hero Member
  • *****
  • กระทู้: 1,089
  • อย่าคิดว่าทำไม่ได้ ถ้ายังไม่ลองทำ
  • Respect: +1
    • ดูรายละเอียด
    • ADMIN PCB. sz
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #6 เมื่อ: มกราคม 28, 2011, 19:04:13 PM »
0
 ;D ;D ;D รับไป 1 Thank

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #7 เมื่อ: กุมภาพันธ์ 01, 2011, 16:27:59 PM »
0
เฉลยข้อ 1  ครับ   เป็นโจทย์เอาไว้ฝึกใช้ฟังก์ชันเฉย ๆ นะครับ  อาจจะมีวิธีที่ง่ายก่านี้   ;D 

สรุปว่าบ้านพร้อมหนี้สิน  ไม่มีใครได้รับไป    ;D

procedure Variable2OnCalc(var Value: Variant);
var path,filename:String;
    path_length,index,count:Integer;
begin
  path := DBPipeline['backup_filename'];
  path_length := Length(path);
 

  count:=0;
 
     for index := 1 to path_length do
     begin
       if  CompareText('\', Copy(path, index, 1) ) = 0 then
       begin
            count := count+1;
       end;

     end;

    Value :=  ExtractString(path, count+1, '\');


end;
« แก้ไขครั้งสุดท้าย: กุมภาพันธ์ 02, 2011, 08:22:31 AM โดย I'm nuke »
I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ nummon

  • Full Member
  • ***
  • กระทู้: 107
  • Respect: 0
    • ดูรายละเอียด
    • SrisangwornSukhothai Hospital
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #8 เมื่อ: กุมภาพันธ์ 02, 2011, 08:09:54 AM »
0
บรรทัด
path_length := Length(path);
path := DBPipeline['backup_filename'];

ต้องสลับไหมครับ ยังไม่ได้ลอง compile แต่น่าจะรับค่าก่อนหาขนาด

ถ้าไม่ต้องการใช้ string function
ใน SysUtils unit มี Function ExtractFileName อยู่ (ใช้ใน  Report Designer ได้?)

« แก้ไขครั้งสุดท้าย: กุมภาพันธ์ 02, 2011, 08:13:23 AM โดย nummon »
<a href=http://www.srisangworn.go.th>โรงพยาบาลศรีสังวรสุโขทัย</a>
Hosxp : 3.54.2.15
SERVER :  Xeon 3.4    Ram 4G   HD 120 GB OS : Linux CENOS 5.1   Mysql  5.1.23-rc
SLAVE-I :  Xeon 3.4    Ram 4G   HD 120 GB OS : Linux CENOS 5.2   Mysql  5.1.45 (Mysql Replication)
เริ่ม  4 สิงหาคม 2549  ขึ้นระบบ : อ.ชัยพร และ ทีม BMS

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #9 เมื่อ: กุมภาพันธ์ 02, 2011, 08:22:07 AM »
0
บรรทัด
path_length := Length(path);
path := DBPipeline['backup_filename'];

ต้องสลับไหมครับ ยังไม่ได้ลอง compile แต่น่าจะรับค่าก่อนหาขนาด

ถ้าไม่ต้องการใช้ string function
ใน SysUtils unit มี Function ExtractFileName อยู่ (ใช้ใน  Report Designer ได้?)



ใช่แล้วครับ  ต้องสลับกัน      ;D ;D


ลองใช้  ExtractFileName  ใน  Variable  มันขึ้น  Undecalared identifer : 'ExtractFileName'.
น่าจะใช้ได้ตอนเขียน Script  ใช่หรือเปล่าครับ
« แก้ไขครั้งสุดท้าย: กุมภาพันธ์ 02, 2011, 08:47:18 AM โดย I'm nuke »
I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ naydekdee

  • Hero Member
  • *****
  • กระทู้: 704
  • naydekdee
  • Respect: +1
    • ดูรายละเอียด
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #10 เมื่อ: กุมภาพันธ์ 02, 2011, 09:18:45 AM »
0
ทำไม ตาลาย ไปหมด นี่
จะเก็บเอาไว้ใช้ ง่ะ อิอิ
UP systems on Hospital  2010-03-01
(นายเด็กดี)  รพช.บางกระทุ่ม พิษณุโลก
Structure Version  HOSxP 3.61.9.25b

ออฟไลน์ udomchok

  • Hero Member
  • *****
  • กระทู้: 8,358
  • Respect: +589
    • ดูรายละเอียด
    • ร.พ.สมเด็จพระสังฆราช องค์ที่ 17
Re: การใช้ String Function (บางส่วน) ใน Report Designer
« ตอบกลับ #11 เมื่อ: กุมภาพันธ์ 02, 2011, 21:45:08 PM »
0
ExtractString(s, ps, delimeter);   ใช้แยกข้อความออกจากกันคล้าย ๆ ฟังก์ชัน  split
Parameter
  - s  [String]  :  String  ที่ต้องการแยก
  - ps  [Integer]  :  Index  ของ  String ที่แยกแล้ว
  - delimeter [String]   :  String  ที่จะใช้เป็นตัวแยก
Reutrn [String]  :  String  ที่แยกออกจากกันเรียบร้อยแล้ว
ตัวอย่าง
ExtractString('Imnuke CpeIX', 2, ' ');
 เป็นการแยกข้อความออกจากกัน โดยใช้ช่องว่างเป็นตัวแยก
เมื่อแยกแล้วจะได้  String สองชุดคือ  Imnuke  และ CpeIX
เมื่อเรากำหนด Parameter ps  เป็น  2  จะได้ค่า String ตัวที่ 2 ก็คือ CpeIX  นั่นเอง
ExtractString มีที่มาจากกระทุ้นี้ครับ http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=15259.0
ทำด้วยหัวใจร.พ.สมเด็จพระสังฆราช องค์ที่ 17 อ.สองพี่น้อง จ.สุพรรณบุรี
อบรมโดย BMS Team เมื่อ พ.ย. 49 ขึ้นระบบห้องบัตรเมื่อ X'Mas 2007
2008 : X-Ray กายภาพบำบัด แพทย์แผนไทย กิจกรรมบำบัด OPD ตา
2009 : ทันตกรรม ห้องตรวจตา OPD (พยาบาลและห้องตรวจแพทย์บางห้อง)