14 มีนาคม 2561

VFP - แปลงตัวเลขเป็นตัวอักษรไทย (เงินบาท) ฟังก์ชั่นในตำนาน

ไปเจอฟังก์ชั่นในตำนานที่มีการโพสไว้เมื่อยี่สิบปีก่อน หลายคนนำไปใช้ อึ้งและทึ่งกับคนที่คิด วันนี้เวลาผ่านไปนานมาก ฟังก์ชั่นนี้ก็ยังคงอยู่ในใจหลายๆ คน
แปลงค่าเงิน มาเป็นตัวอักษรไทย
999.99 (เก้าร้อยเก้าสิบเก้าบาทเก้าสิบเก้าสตางค์) คิดได้สุดยอดมาก บรรทัดเดียวจริงๆ

FUNCTION spell
PARAMETER Vn
Va = STRT(TRAN(Vn,'@R G9A9B9C9D9E9F9A9B9C9D9E9F9.9F9S'),' F0.','')

RETURN STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(;
STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(;
SUBS(Va,RAT(' ',Va)+2,35),'1','หนึ่ง'),'2','สอง'),'3','สาม'),'4','สี่'),;
'5','ห้า'),'6','หก'),'7','เจ็ด'),'8','แปด'),'9','เก้า'),'.0F0S','บาทถ้วน'),;
'0F',''),'0E',''),'0D',''),'0C',''),'0B',''),'0',''),'A','ล้าน'),;
'B','แสน'),'C','หมื่น'),'D','พัน'),'E','ร้อย'),'F','สิบ'),'.','บาท'),;
'หนึ่งสิบ','สิบ'),'สองสิบ','ยี่สิบ'),'สิบหนึ่ง','สิบเอ็ด'),'S','สตางค์')

ขอบคุณ คุณ Karun ที่ได้สร้างฟังก์ชั่นนี้ไว้ให้พวกเราใช้งาน

07 มีนาคม 2561

SQL Server - Clear Transaction Log

Transaction Log คือ ข้อมูลที่เกิดขึ้นจากการบันทึกการทำงานทั้งหมดของฐานข้อมูล โดยจะเกิดขึ้นเมื่อเรากำหนดรูปแบบการกู้คืนข้อมูล (Recover Model) เป็นแบบ full หรือ bulk operation ซึ่งกำหนดในระหว่างที่เราสร้างฐานข้อมูล หรือถ้าเป็นฐานข้อมูลเดิมก็เข้าไปแก้ไขรูปแบบได้โดยคลิกขวาที่ฐานข้อมูล แล้วเลือกรายการ Properties ดังภาพ

จะปรากฎหน้าต่าง Database Properties ขึ้นมาก ให้เลือกรายการ Options จะปรากฏรายละเอียดดังภาพ

สามารถกำหนดรูปแบบการกู้คืนได้ตามต้องการ ปกติถ้าเป็นฐานข้อมูลที่ใช้งานจะกำหนด Recovery Mode เป็นแบบ Full ซึ่งรูปแบบนี้จะทำให้ทุกครั้งที่มีการกระทำกับฐานข้อมูลเมื่อมีการสั่งงานคำสั่ง เช่น  INSERT UPDATE DELETE หรือ SELECT เป็นต้น ทุกคำสั่งที่สั่งงานก็จะมีการเก็บ LOG ไว้ภายใต้ไฟล์ Transaction Log ทำให้เมื่อใช้งานไปนานวัน ก็จะทำให้ไฟล์ Transaction มีขนาดใหญ่มาก กินพื้นที่ของฮาร์ดดิสก์เป็นจำนวนมาก แต่ถ้าเราทำการเคลียร์ข้อมูลของ Transaction Log ออกไปก็จะทำให้ไม่สามารถกู้คืนข้อมูลในช่วงเวลาที่ทำการเก็บ Transaction Log นั้นได้อีก **  ดังนั้น  ก่อนจะทำการเคลียร์ Transaction Log ให้ทำการ Backup แบบ Full Backup ข้อมูลเก็บไว้ก่อน เมื่อทำการ Backup แล้วก็ทำการเคลียร์เพื่อเพิ่มพื้นที่ได้ตามต้องการ

สำหรับวิธีการเคลียร์ Transaction Log สามารถทำได้โดยใช้คำสั่ง ดังนี้

สำหรับ SQL Server 2005 หรือเก่ากว่า

BACKUP LOG ชื่อฐานข้อมูล WITH TRUNCATE_ONLY
BACKUP LOG ชื่อฐานข้อมูล WITH NO_LOG

ทั้ง 2 คำสั่งทำหน้าที่เหมือนกัน คำสั่ง WITH NO_LOG ใช้ในกรณีที่เราไม่สามารถใช้ TRUNCATE_ONLY ได้ ดังนั้น ก็สั่งได้ทั้ง 2 คำสั่งได้เลย

แล้วทำการลดขนาดของไฟล์ Transaction Log ให้เหลือน้อยๆ เช่น เหลือ 1 MB

DBCC SHRINKFILE (ชื่อฐานข้อมูล_log, 1)

สำหรับ SQL Server 2008 ขึ้นไป

สำหรับชื่อฐานข้อมูล ให้เติม    _log  ต่อท้ายด้วย

DBCC SHRINKFILE (N'ชื่อฐานข้อมูล_log' , 0, TRUNCATEONLY)
DBCC SHRINKFILE (N'ชื่อฐานข้อมูล_log' , 1)


สวัสดีมีพื้นที่เหลือใช้
อย่าลืม BACKUP ข้อมูลก่อนน่ะครับ
"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.