วันอังคารที่ 8 มีนาคม พ.ศ. 2554

ตรวจสอบไฟล์ DBF ว่าเป็นสายพันธ์ไหน

 Tips: ตรวจสอบไฟล์ DBF ว่าเป็นสายพันธ์ไหน

ฟอกส์โปร
 เนื่องจากไฟล์นามสกุล DBF มีหลากหลายสายพันธ์ ดังนั้น หากท่านต้องการใช้เครื่องมือพวก ADO ดึงข้อมูลจากไฟล์ดังกล่าว ท่านควรพิจารณาก่อนว่า ไฟล์ DBF เหล่านั้นเป็นตระกูลไหน
Microsoft Jet Engine ใช้กับตระกูล dbase
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0" & _
        ";Data Source= โฟลเดอร์ที่เก็บไฟล์ " & _
        ";Extended Properties=dBase IV"
rs.Open "Select * From ชื่อไฟล์ DBF", cn
เรียกผ่าน VFP ODBC ใช้กับตระกูล foxpro
แบบ 1 เปิดไฟล์ DBF โดยตรง
cn.Open "Driver={Microsoft Visual Foxpro Driver}" & _
        ";SourceType=DBF" & _
        ";SourceDB= โฟลเดอร์ที่เก็บไฟล์"
rs.Open "Select * From ชื่อไฟล์ DBF", cn
แบบ 2 เปิดไฟล์จากฐานข้อมูล DBC
cn.Open "Driver={Microsoft Visual Foxpro Driver}" & _
        ";SourceType=DBC" & _
        ";SourceDB= ชื่อไฟล์ DBC"
rs.Open "Select * From ชื่อไฟล์ DBF", cn


วิธีตรวจสอบไฟล์ DBF ว่าเป็นสายพันธ์ไหน
ให้ท่านเปิดไฟล์แบบ Low-level อ่านไบท์แรก เทียบกับตารางต่อไปนี้
ตาราง รวมญาติมิตรสหายของฟอกส์โปร
DecHexDBF Format
20x02FoxBASE
30x03FoxBASE+/Dbase III plus, no memo
480x30Visual FoxPro
490x31Visual FoxPro, autoincrement enabled
500x32Visual FoxPro, Varchar, Varbinary, or Blob-enabled
670x43dBASE IV SQL table files, no memo
990x63dBASE IV SQL system files, no memo
1310x83FoxBASE+/dBASE III PLUS, with memo
1390x8BdBASE IV with memo
2030xCBdBASE IV SQL table files, with memo
2450xF5FoxPro 2.x (or earlier) with memo
2510xFBFoxBASE
ตัวอย่าง เขียนโปรแกรมในวิชวลฟอกส์โปร เพื่อตรวจสอบตระกูลไฟล์ DBF ที่ต้องสงสัย

cFile = "C:/Data/MyFile.DBF"

nFile = FOPEN(cFile)
IF nFile < 0 THEN
  RETURN .F.
ENDIF
n = ASC(FREAD(nFile, 1))
=FCLOSE(nFile)

? DBFINFO(n)

FUNCTION DBFINFO(n)
DO CASE
CASE n = 2 
  RETURN "FoxBASE"
CASE n = 3  
  RETURN "FoxBASE+/Dbase III plus, no memo"
CASE n = 48
  RETURN "Visual FoxPro"
CASE n = 49  
  RETURN "Visual FoxPro, autoincrement enabled"
CASE n = 50
  RETURN "Visual FoxPro, Varchar, Varbinary, or Blob-enabled"
CASE n = 67
  RETURN "dBASE IV SQL table files, no memo"
CASE n = 99 
  RETURN "dBASE IV SQL system files, no memo"
CASE n = 131
  RETURN "FoxBASE+/dBASE III PLUS, with memo"
CASE n = 139
  RETURN "dBASE IV with memo"
CASE n = 203
  RETURN "dBASE IV SQL table files, with memo"
CASE n = 245
  RETURN "FoxPro 2.x (or earlier) with memo"
CASE n = 251
  RETURN "FoxBASE"
OTHERWISE
  RETURN "Unknown"
ENDCASE 
ENDFUNC

ไม่มีความคิดเห็น:

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