เมื่อ VFP Table พัง

สมัยก่อนผมใช้ VFP ไปแล้ว Table ใหญ่ๆ มี Memo Field ด้วย และมีกระแสไฟตกบ่อยๆ ก็มักเจอดีเหตุการณ์ไฟล์เสียเข้ามาเยือน ซ่อมได้ด้วยเทคนิคต่างๆที่ไม่เป็นทางการ แล้วก็น่าแปลกที่ VFP ไม่ทำโปรแกรมซ่อมโดยเฉพาะออกมา วิธีการที่ว่านั้นก็มีทั้งเล่นเป็นชุด เปิดไฟล์ขึ้นมา+เพิ่มเรคอร์ดใหม่+ลบออก+PACK+ปิดไฟล์ แล้วเปิดใช้อีกที , หรือไม่ก็ใช้ซอฟต์แวร์ซ่อม dbf ของผู้ใช้งานทำกันออกมาเอง ที่มีให้ดาว์นโหลดฟรีและเสียกะตังค์

แบบเล่นเป็นชุดที่ว่า...คุณ Anuwat (ขออภัยท่านนี้ผมยังไม่เคยทัก) ในกลุ่ม Line แนะนำมาว่า

SET TABLEVALIDATE TO 0
USE table1 EXCLUSIVE
APPEND BLANK
DELETE
PACK
USE

แบบนี้ครับ ส่วนคุณ Joe นักพัฒนาซอฟต์แวร์ที่เชี่ยวชาญและมีน้ำใจคอยช่วยตอบปัญหาให้เพื่อนๆชาว Fox มาตลอดได้แนะนำในกลุ่ม Line เดียวกันดังข้างล่างนี้ครับ

*เรียกใช้
If FixMemoFile('c:\front\font.scx')
    *** Success. File is Fixed
Else
    *** Fail. File is not fixed
Endif

*ฟังก์ชั่น
Function FixMemoFile(tcFile as string)
    If vartype(tcFile) = 'C' and not Empty(tcFile) and File(tcFile)
        Local lnOldSelect as Integer
        lnOldSelect = Select(0)
        Set tablevalidate to 0
        Select 0
        Use (tcFile) exclusive
        Append blank
        Delete
        Pack
        Use
        Set tablevalidate to 3
        Select(lnOldSelect)
        Return .T.
    Endif
    Return .F.
Endfunc

แปะไว้ก่อนวันหลังเจอดีค่อยเอามาลองนะครับ // จบ

ความคิดเห็น

  1. สำหรับกรณี tablevalidate ไม่ถือว่าไฟล์เสีย ถ้าลดระดับแล้วเปิดได้ หรือใช้ vfp ที่ยังไม่มีฟังก์ชันนี้ก็เปิดได้ปกติ

    ตอบลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

VFP SQL UPDATE ปรับปรุงค่าในฟิลด์ด้วยค่าจากตารางอื่น

การใช้ Array ร่วมกับ Function