BMS-HOSxP Community

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

หัวข้อ: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ มกราคม 28, 2011, 13:05:25 PM
เอามาจดไว้กันลืมครับ  ว่าแต่ละฟังก์ชันใช้ทำอะไรบ้าง  เพราะเป็นฟังก์ชันที่ไม่ค่อยได้ใช้   ;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<=
 
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: saan ที่ มกราคม 28, 2011, 14:02:12 PM
 ;D ;D แบบนี้แหล่ะครับที่อยากได้ เพราะการลองผิดลองถูก มันใช้เวลานานครับ
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ มกราคม 28, 2011, 14:34:47 PM
เอาโจทย์ไปลองทำเล่น ๆ  สัก 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
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: Khuad ที่ มกราคม 28, 2011, 15:54:19 PM

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

... ไม่กล้าตอบโจทย์  กลัวได้ บ้านพร้อมหนี้สิน ครับ ...5555 ...
    ทุกวันนี้ก็จะแย่อยู่แล้ว ... 5555555 ....  ;D  ;D  ;D ....
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ มกราคม 28, 2011, 16:10:34 PM

... เยี่ยมเลยครับ นุ๊ก ....  :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 );
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: wiphusit ที่ มกราคม 28, 2011, 17:02:30 PM
ขอบคุณครับ
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: Bordin ที่ มกราคม 28, 2011, 19:04:13 PM
 ;D ;D ;D รับไป 1 Thank
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ กุมภาพันธ์ 01, 2011, 16:27:59 PM
เฉลยข้อ 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;
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: nummon ที่ กุมภาพันธ์ 02, 2011, 08:09:54 AM
บรรทัด
path_length := Length(path);
path := DBPipeline['backup_filename'];

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

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

หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ กุมภาพันธ์ 02, 2011, 08:22:07 AM
บรรทัด
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  ใช่หรือเปล่าครับ
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: naydekdee ที่ กุมภาพันธ์ 02, 2011, 09:18:45 AM
ทำไม ตาลาย ไปหมด นี่
จะเก็บเอาไว้ใช้ ง่ะ อิอิ
หัวข้อ: Re: การใช้ String Function (บางส่วน) ใน Report Designer
เริ่มหัวข้อโดย: udomchok ที่ กุมภาพันธ์ 02, 2011, 21:45:08 PM
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