Membaca data dari sebuah file teks merupakan prosedur yang umum dilakukan saat menjalankan sebuah program. Pada berbagai macam aplikasi, kita sering menemukan jenis file teks yang berisi parameter-parameter tertentu yang dijalankan saat program pertama kali dibuka. File teks itu, biasanya berekstensi .ini, seperti system.ini, properties.ini, dan php.ini berisi configurasi sebuah aplikasi. Kita bisa membaca file teks semacam itu dengan menggunakan FileSystemObject (FSO) yang ada di Access VBA.
Kita mungkin akan menggunakan file teks untuk:
FSO dapat digunakan untuk membaca isi dari sebuah file teks dengan kondisi berikut ini:
Berikut ini adalah contoh aplikasi untuk membaca sebuah file teks.
Buatlah sebuah file teks dengan nama sistemPrefs.txt, lalu bukalah file itu. Selanjutnya, copy-lah data berikut ini dan paste ke dalam file sistemPrefs.txt, seperti terlihat pada gambar di atas.
Kita mungkin akan menggunakan file teks untuk:
- Membaca argumen yang ada di dalam baris perintah. Sebagai contoh, sebuah file teks mungkin berisi sejumlah daftar komputer, dengan kode program yang dirancang untuk membaca daftar itu dan kemudian dijalankan ke masing-masing komputer yang ada dalam daftar.
- Membuat program untuk mencari sebuah file log dengan kondisi tertentu. Sebagai contoh, mencari sebuah file log yang mempunyai tanda "Error".
- Menambahkan isi dari sebuah file teks ke dalam database. Sebagai contoh, file teks dengan pemisah koma (comma separated text file) biasanya berisi semacam tabel yang masing-masing kolom dipisahkan dengan tanda koma. File teks semacam ini umum digunakan untuk mengimpor data ke dalam sebuah tabel tertentu dalam database.
FSO dapat digunakan untuk membaca isi dari sebuah file teks dengan kondisi berikut ini:
- FSO hanya bisa membaca file teks ASCII. Kita tidak bisa membaca file dengan format Unicode atau biner, seperti MS Word dan Excel.
- Cara membaca file teks dengan menggunakan FSO dilakukan satu arah: dari awal sampai dengan akhir dari file teks. Pembacaan dilakukan baris demi baris. Jika ingin kembali ke baris yang diinginkan dan berada di baris sebelumnya, maka kita harus memulai dari awal file sampai ketemu baris yang diinginkan itu.
- Kita tidak bisa membuka sebuah file teks dengan menggunakan mode baca (ForReading) dan tulis (ForWriting) secara bersamaan. Jika ingin membaca sebuah file, sementara mode yang digunakan adalah menulis (ForWriting), maka kita akan menerima pesan kesalahan "bad file mode".
Metode | Deskripsi |
---|---|
Read | Membaca sejumlah karakter pertama untuk kemudian berhenti. |
ReadLine | Membaca satu baris dalam sebuah file teks dan kemudian berhenti. Jika ingin membaca keseluruhan isi teks secara baris per baris, maka kita menggunakan sebuah loop yang berisi metode ini. |
ReadAll | Membaca keseluruhan isi file teks dan menyimpannya dalam variabel sementara. |
Skip | Melompatkan sejumlah karakter untuk kemudian membaca karakter yang tidak dilompati dalam sebuah baris teks. |
SkipLine | Melompatkan sebuah baris untuk kemudian membaca baris berikutnya. |
Buatlah sebuah file teks dengan nama sistemPrefs.txt, lalu bukalah file itu. Selanjutnya, copy-lah data berikut ini dan paste ke dalam file sistemPrefs.txt, seperti terlihat pada gambar di atas.
Preference Name,prefCaption,Preference Value displayUserName,Display user name,-1 folderLocation,folder location, incomeSummary,Income summary account,999 journalAdjust,Adjustment journal account,AJ journalClosing,Closing journal account,ZZZSetelah itu, buatlah sebuah file database Access di lokasi path tempat membuat file teks sistemPrefs.txt di atas. Lalu, bukalah sebuah modul baru dan gunakanlah fungsi berikut ini untuk membaca file teks sistemPrefs.txt di atas.
Function bacaTeksFile() Dim strPathFile, strNamaFile As String Dim fso As Object Dim oFile As Object Const ForReading As Integer = 1 strNamaFile = "sistemPrefs.txt" strPathFile = CurrentProject.Path & "\" & strNamaFile Set fso = CreateObject("Scripting.FileSystemObject") Set oFile = fso.OpenTextFile(strPathFile, ForReading) Debug.Print oFile.Read(4) Debug.Print oFile.Skip(5) Debug.Print oFile.ReadLine Debug.Print oFile.SkipLine Debug.Print oFile.ReadLine Debug.Print oFile.ReadAll oFile.Close Set fso = Nothing Set oFile = Nothing End FunctionBila fungsi itu dijalankan di Immediate Windows, maka hasilnya adalah sebagai berikut:
?bacaTeksFile Pref e Name,prefCaption,Preference Value folderLocation,folder location,, incomeSummary,Income summary account,999 journalAdjust,Adjustment journal account,AJ journalClosing,Closing journal account,ZZZPenjelasan fungsi beserta Immediate Window:
- Cara membaca file teks sistemPrefs.txt dengan menggunakan FSO dilakukan satu arah: dari awal sampai dengan akhir dari file teks itu. Pembacaan dilakukan baris demi baris.
- Aplikasi metode Read pada baris 11 menampilkan karakter "Pref". Karakter "Pref" adalah 4 karakter pertama dari baris pertama yang dibaca dengan menggunakan metode Read.
- Selanjutnya, metode Skip pada baris 12 melompatkan 5 karakter setelah karakter "Pref". Karena "Pref" merupakan 4 karakter pertama dari "Preference", maka 5 karakter selanjutnya yang dilompati dalam ("Preference") adalah "erenc".
- Metode ReadLine pada baris 13 menampilkan satu baris penuh. Tetapi karena sebagian baris dalam file teks sistemPrefs.txt sudah diproses di baris 11 dan 12 dari fungsi di atas, maka hanya ada sisa baris dalam file teks sistemPrefs.txt yang bisa dibaca, yaitu "e Name,prefCaption,Preference Value".
- Metode SkipLine pada baris 14 dari fungsi di atas akan melompatkan baris kedua yang datanya adalah "displayUserName,Display user name,-1 ".
- Metode ReadLine pada baris 15 akan menampilkan satu baris penuh data yang ada dala file teks sistemPrefs.txt dan terletak pada baris ke tiga, yaitu "folderLocation,folder location,".
- Metode ReadAll pada baris 16 akan menampilkan seluruh isi data dimulai dari baris ke empat (karena baris sebelumnya sudah diproses/ditampilkan melalui metode-metode di baris 11 sampai dengan 15 dari fungsi di atas.
Tambahkan saja kode VBA untuk memasukkan nilai ke Text Box pada baris di sekitar Debug.Print. Debug.Print pada fungsi di atas menunjukkan bahwa text file sudah bisa dibaca di Access, jadi bisa digunakan untuk menjalankan fungsi lain dalam lingkungan Access.
ReplyDeleteDi Tools>References sudah di centang librarynya?
ReplyDeleteMS Office object library, MS scripting runtime dan MS shell control and automation.
ReplyDeleteKamu pakai file contoh dokumen elektronik yg pernah kukirim. Coba, kamu tulis kode di situ saja.
Kalau sudah bisa, tinggal fungsinya ditambah... as Strin,g atau Variant
ReplyDeleteSaya coba bisa kok.... stelah diubah As String, tinggal cari saja, mana nilai yang ingin dijadikan output lalu tuliskan kode ini:
ReplyDeletebacaTeksFile=.......
Jika ingin ada kriteria tertentu, tuliskan nilainya dengan pemisah (delimiter, misalnya tanda semicolon, comma, minus, dsb....), lalu saat di dalam fungsi di atas, pisahkan dengan fungsi split yang menunjukkan kriteria tertentu... masukkan dalam persamaan bacaTeksFile=.....
Bisa ya?
Gak harus keluar. Saya hanya mengubah Function bacaTeksFile() menjadi Function bacaTeksFile() As String.
ReplyDeleteLalu, tambahkan baris
bacaTeksFile=oFile.ReadLine.
Kalau fungsi bacaTeksFile belum final, gunakan varibel lain. Setelah itu, bacaTeksFile dipersamakan dng variabel lain.
Coba... bisa paham nggak?
Pakai loop for next, setiap kali loop ada n=n+1. Nilai n terakhir adalah jumlah recordnya
ReplyDeleteYg ini sudah bisa?
DeleteItu penisah antar baris menggunakan karakter apa ya? Karakter enter, semicolon, atau apa?
DeleteKalau kamu tahu karakter pemisah, gunakan saja fungsi split untuk diubah jadi array.
Setelah jadi array, baru pakai loop untuk menghitung jumlah recordnya.
Maksudnya bagaimana?
DeleteBaguslah. Tolong bagikan (share) buku yg kamu beli ke teman2 kamu ya...
Delete