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
|