หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 1 2 8 5 0 4

7 ธันวาคม พ.ศ.2549
291 Users On-Line.
Visitors - Page views
 8 4 2 4 5 5 3
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

การอ่านข้อมูลแบบ Text File เข้าสู่ MS FlexGrid ด้วย MS Visual Basic 6.0

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 24/3/2551 13:13:00
(อ่าน : 20182) 
ว่าด้วยเรื่องของ Text File ซึ่งเราจะพบรูปแบบของการจัดเก็บข้อมูลชนิดนี้ เพื่อใช้เป็นฐานข้อมูลขนาดเล็กๆได้หลักๆ 3 แบบ คือ ...
  • แบบแยกข้อมูลแต่ละฟิลด์ (หรือ ชุด) ด้วยเครื่องหมาย เช่น ช่องว่าง (Space หรือ chr(32)) , (Comma) ; (Semi-Colon) หรือ Tab เช่น
    1001,xxxxx,1111
    1002,xxxxxxxx,2222222
    1003,xx,33
    ข้อมูลแต่ละแถว ก็คือ 1 รายการ หรือ 1 Record นั่นแหละครับ ซึ่งอันที่จริงมันจะถูกแยกออกจากกันทีละบรรทัด ด้วย
    Carriage Return - CR หรือ Chr(13) ในฐาน 10 หรือ Chr(0D) ในฐาน 16 และ
    Line Feed - LF หรือ Chr(10) ในฐาน 10 หรือ Chr(0A) ในฐาน 16
  • แบบกำหนดความยาวของข้อมูลที่แน่นอนตายตัว เช่น
    1001|xxxxxxxx|11
    1002|xxxxx___|22
    1003|xx______|33
    นั่นคือ ชุดแรกมีความยาว 4 หลัก ชุดที่ 2 มีความยาว 8 หลัก และ ชุดที่ 3 มีความยาว 2 หลัก
  • แบบผสมทั้ง 2 แบบแรก เช่น
    1001 28-01-2008 07:15:00
    1001 28-01-2008 18:04:00
    1002 28-01-2008 07:58:00
    1002 28-01-2008 17:16:00
    ก็คือตัวอย่างที่ผมจะนำมาเสนอในบทความนี้นั่นเองครับพี่น้อง ... สังเกตว่าข้อมูลชุดแรก 1001, 1002 มันเป็นรหัสพนักงาน (ความยาว 4 หลัก) จากนั้นมันแยกข้อมูลออกด้วยช่องว่าง (Space) พอชุดที่ 2 ก็จะเป็นวันที่ (10 หลัก) และชุดที่ 3 จะเป็นเวลา (8 หลัก) ... ซึ่งทุกๆหลักมันก็มีรูปแบบความยาวที่แน่นอนตายตัวอยู่แล้ว แต่การที่คั่นด้วยช่องว่างเอาไว้ทำให้เราไม่ต้องไปเสียเวลานับจำนวนความยาวของข้อมูลแต่ละชุด (หรือแต่ละ Record) ไงล่ะครับ ... พี่น้อง

    ตัวอย่าง Text File สำหรับงานนี้ ผมเองก็เอามาจากเครื่องสแกนลายนิ้วมือ (Finger Scan) ยี่ห้อหนึ่งแหละครับ ... ที่ใช้ในงาน Time Attendance ... ซึ่งข้อมูลจริงๆที่ได้ มันไม่ใช่แบบนี้น่ะครับ มันมี Error เพียบพร้อมสมบูรณ์แบบเลยทีเดียวเชียวแหละ 55555+
    Reference
    Project --> References ... --> Microsoft ActiveX Data Objects 2.8 Library

    Design Time
    การออกแบบ - Design Time

    Run Time
    สั่งให้โปรแกรมทำงาน
    ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
     ดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack
     ดาวน์โหลด Microsoft Data Access Object (MDAC) และ Jet 4.0 Update
    
    Private Sub cmdReadText_Click()
    Dim CountRec As Long
    Dim StrData As String
    Dim iRow, i As Long
    Dim iArr As Variant
    Dim StrTemp As String
        
    Dim Conn As ADODB.Connection
    ' มาอีกแล้วครับท่าน ... RS Promotion ... เอิ๊กๆๆๆๆ
    Dim RS As ADODB.Recordset
    
    Set Conn = New ADODB.Connection
    Set RS = New ADODB.Recordset
        
        ' รูปแบบการเชื่อมต่อแหล่งข้อมูล (Data Source) ของ Text File
        '
        Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
               "Data Source=" & App.Path & ";" & _
               "Extended Properties=""text;HDR=NO;FMT=Delimited;"";"
        
        ' มองเข้ามาเหมือนการอ่านตารางข้อมูล (Table หรือ Query) เลยครับ ... พี่น้อง
        RS.Open "SELECT * FROM [Jan-2008#txt]", Conn, adOpenStatic, _
                            adLockReadOnly, adCmdText
        CountRec = RS.RecordCount
        ' ใช้งานมันเป็นที่เรียบร้อยแล้ว ก็ปิดการเชื่อมต่อมันซ่ะ
        Set RS = Nothing:    Set Conn = Nothing
        
        ' ตั้งค่าให้กับ MS Flex Grid
        With fgData
            .Clear
            ' จำนวน 4 หลัก
            .Cols = 4
            ' กำหนดจำนวนแถว (Rows) ตามจำนวนรายการข้อมูลที่มีอยู่ทั้งหมด
            ' ให้เพิ่มจำนวนแถวขึ้นอีก 1 เนื่องจากมี Column Header อยู่อีก 1 แถวแล้ว
            .Rows = CountRec + 1
            
            .ColWidth(0) = 1200
            
            ' กำหนดค่าให้กับแถวแรก หรือ Column Header
            .TextMatrix(0, 0) = "ลำดับที่"
            .TextMatrix(0, 1) = "รหัสพนักงาน"
            .TextMatrix(0, 2) = "วันที่เข้า/ออก"
            .TextMatrix(0, 3) = "เวลาเข้า/ออก"
        End With
        
        ' เปิดข้อมูล Text File
        Open App.Path & "\Jan-2008.txt" For Input As #1
        
        iRow = 1    ' ให้เริ่มต้นแสดงผลข้อมูลจากแถวที่ 1 (แถวแรกน่ะคือ แถว 0 น่ะครับ ... พี่น้อง)
        Do While iRow <= CountRec
            ' อ่านข้อมูลเข้ามาทีละบรรทัด
            Line Input #1, StrData
    
            ' ใช้ Trim เพื่อตัดช่องว่าง (Space) ทั้งด้านหน้า และ หลังของชุดตัวอักษรออก
            StrTemp = Trim(StrData)
            ' แยกชุดตัวอักษรออกจากกันด้วยคำสั่ง Split
            ' โดยใช้เครื่องหมายช่องว่าง (Space) ในการจับแยกชุดตัวอักษร
            iArr = Split(StrTemp, " ")
            
            fgData.TextMatrix(iRow, 0) = iRow
            fgData.TextMatrix(iRow, 1) = iArr(0)
            fgData.TextMatrix(iRow, 2) = iArr(1)
            fgData.TextMatrix(iRow, 3) = iArr(2)
            iRow = iRow + 1
        Loop
        
        ' ปิด Text File
        Close #1
    End Sub
    

  • จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
    เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
    CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
    Email: [email protected] หรือ โทร. 08-6862-6560