Skip to main content

Administrasi Sistem FIle di Access Menggunakan FileSystemObject

Mungkin tidak banyak programmer Access yang tahu bahwa MS Access mempunyai kemampuan dalam melakukan administrasi file layaknya sebuah Windows Explorer pada OS Windows. Kemampuan Access dalam menangani sistem file meliputi administrasi disk drive, folder/directory, dan file. Untuk folder/directory dan file, kita juga dapat melakukan fungsi editing seperti menyalin (copy), memindahkan (remove), menghapus (delete), dan mengganti nama (rename). Kita dapat melakukan administrasi sistem fIle di Access menggunakan FileSystemObject.


Objek FileSystemObject atau lebih dikenal dengan singkatan FSO memungkinkan seorang programmer di Access untuk menuliskan kode VBA berbasis objek yang digunakan untuk mengelola drive, folder/direktori, dan file. Hal ini dimungkinkan karena FSO dilengkapi dengan berbagai macam properti, metode, dan event yang mudah dipahami oleh programmer Access.

Sesuai dengan namanya, FileSystemObject dirancang untuk membantu kita mengelola sistem file. FSO memungkinkan kita untuk menampilkan informasi tentang elemen sistem file yang mendasar, seperti disk drive, folder, dan file. FSO juga mencakup metode yang memungkinkan kita untuk melaksanakan tugas administrasi pada umumnya, seperti meng-copy, menghapus, dan memindahkan file dan folder. Selain itu, FSO juga memungkinkan kita untuk membaca dan menulis file dengan extensi .txt yang bisa dibaca melalui berbagai macam program aplikasi.

Sisi keamanan dalam membuat program FilesSystemObject di MS Access VBA

Microsoft dalam lamannya di MSDN menjelaskan bahwa eksekusi FSO sebaiknya dilakukan di komputer server, dan bukan di komputer client. Pertimbangan yang mendasar, menurut saya, komputer server mampu mengelola FSO lebih baik, setidaknya dari sisi keamanan, yang tidak dipunyai oleh client - terutama perilaku user di client yang motifnya tidak bisa ditebak. Menggunakan FSO untuk tujuan yang tidak benar dapat merugikan diri sendiri atau pun pihak lain dengan membuat system tidak berfungsi normal.

Namun demikian, untuk sekedar mempelajari apa itu FileSyetemObject di MS Access, kita dapat mengikuti tutorial berikut ini. Sekali lagi, untuk alasan keamanan, kita tidak boleh menyalahgunakan tutorial ini untuk mengeruk keuntungan pribadi, atau merugikan user lain dalam sebuah jaringan, mengingat FSO mempunyai kemampuan dalam membuat, menghapus, memindahkan, dan mengganti nama sebuah folder/file dalam sebuah jaringan.

Object dalam FileSystemObject

FileSystemObject juga mencakup sejumlah objek yang dirancang untuk tujuan tertentu. Masing-masing objek yang tercakup dalam FSO adalah sebagai berikut:
Objek Keterangan
Drive Terdiri dari satu atau lebih drive dalam sistem
File Terdiri dari satu atau lebih file dalam file sistem
Folder Terdiri dari satu atau lebih folder dalam file sistem
TextStream Merupakann sarana file berupa text yang dapat digunakan untuk membaca dan menuliskan text ke dalam file text.

Langkah-langkah dalam membuat FileSystemObject

Berikut ini adalah langkah dalam membuat FileSystemObject di MS Access VBA:
  1. Dengan menggunakan metode CreateObject, kita membuat objek FileSystemObject.
  2. Dengan menggunakan metode yang tepat, kita dapat memperlakukan objek yang baru dibuat sesuai dengan keinginan.
  3. Setelah metode yang sesuai didapatkan, kita dapat mengakses properti dari object yang bersangkutan

Membuat objek FileSystemObject

Kita dapat membuat objek FileSystemObject dengan menggunakan metode CreateObject. Berikut ini adalah kode VBA yang dipergunakan di MS Access:
'Membuat objek FSO dengan menggunakan CreateObject
Dim objFSO as Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
'bila tidak ingin dibuat lagi, tutup objFSO 
'dengan mengatur objFSO ke Nothing seperti di bawah ini
Set objFSO = Nothing
Pada kode di atas, Scripting adalah nama type library dan FileSystemObject adalah nama object yang ingin dibuat. Set objFSO adalah pengaturan awal yang dibuat pada saat FSO ingin dijalankan. Dalam sebuah fungsi atau subroutine, pengaturan ini hanya dibuat di awal saja, tidak perlu diulang di setiap tahapan program. Bila sudah tidak diperlukan, maka objek yang telah dibuat harus ditutup kembali dengan mengaturnya ke Nothing seperti pada "Set objFSO = Nothing" di atas. Walaupun Access VBA secara otomatis akan menutup sendiri objek yang sudah di luar lingkup fungsi/subrutin yang ada, menutup sebuah objek secara explisit dengan Nothing perlu dilakukan supaya objek tersebut tidak terlalu lama terbuka dan mungkin menggantung di dalam memori.

Membuat metode yang sesuai

Setelah objek FSO dibuat, langkah selanjutnya adalah menentukan metode yang sesuai dengan tujuan program. Sebagai misal, untuk membuat sebuah objek baru, maka kita akan menggunakan metode GetTextFile (untuk sebuat text file) atau GetFolder (untuk sebuah folder, direktori, atau path).

Mengakses drive, folder, dan file yang tersedia

Untuk mengakses drive, folder, atau file yang tersedia, kita dapat menggunakan metode get sebagai berikut:
  • GetDrive, untuk mengakses drive
  • GetFolder, untuk mengakses folder
  • GetFile, untuk mengakses file
Berikut ini adalah contoh kode VBA di MS Access:
'Mengakses object FSO berupa file dengan nama file=test.txt di drive/direktori c:\
Dim objFSO, objFile as Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("c:\test.txt")
'bila tidak ingin diakses lagi, tutup objFile 
'dengan mengatur objFile ke Nothing seperti di bawah ini
Set objFile = Nothing

Set objFSO = Nothing
Hal yang perlu diperhatikan di sini adalah, jangan menggunakan metode get untuk mengakses objek yang baru saja dibuat dengan menggunakan metode create. Bila kita membuat folder dengan menggunakan metode create (CreateFolder), maka kita dapat langsung mengakses properti folder yang baru saja dibuat, tanpa harus memperoleh akses dengan menggunakan get (GetFolder). Yang penting dan perlu diingat di sini, objek yang baru dibuat masih dalam posisi terbuka atau belum ditutup dengan pernyataan Nothing (Set obj = Nothing)

Contohnya seperti berikut ini.
Function buatFolderBaru()
   Dim objFSO, objFolder as Object
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set objFolder = objFSO.CreateFolder("C:\TesFolder")
   Debug.Print "Folder yang dibuat: " & objFolder.Name
'bila tidak ingin diakses lagi, tutup objFolder 
'dengan mengatur objFolder ke Nothing seperti di bawah ini
   Set objFolder= Nothing

   Set objFSO = Nothing
End Function


Gambar 1. Contoh FSO untuk membuat folder baru

Pada gambar di atas, bila fungsi buatFolderBaru dijalankan melalui Immediate Window, hasilnya bisa dibuka melalui Windows Explorer seperti terlihat di bagian bawah dari gambar itu (lihat tanda panah biru).

Mengakses properti objek

Bila sebuah objek sudah tersedia, kita dapat menampilkan properti objek tersebut. Sebagai contoh, untuk menampilkan nama sebuah folder yang sudah tersedia (dibuat), kita dapat membuat objek FSO, lalu mengakses folder itu dengan metode GetFolder, dan terakhir menampilkan properti folder yang bersangkutan. Contohnya sebagai berikut:
Function aksesPropertiFolder()
   Dim objFSO, objFolder As Object
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set objFolder = objFSO.GetFolder("C:\TesFolder")
   Debug.Print "Nama Folder: " & objFolder.Name

'bila tidak ingin diakses lagi, tutup objFolder
'dengan mengatur objFolder ke Nothing seperti di bawah ini
   Set objFolder = Nothing
  
   Set objFSO = Nothing
End Function


Gambar 2. Menampilkan properti folder melalui FSO di Immediate WIndow

Fungsi di atas digunakan untuk menampilkan properti Nama dari folder yang bernama TesFolder di drive/direktori C:\. Untuk menampilkan waktu terakhir sebuah folder dimodifikasi, sisipkan kode VBA berikut ini di baris ke-6 dari fungsi di atas:
Debug.Print "Tgl dan waktu terakhir dimodifikasi: " & objFolder.DateLastModified 

Comments

  1. Wah makin menarik.... Jd tambah suka dg ms access.
    Pak Yanto , gimana cara buat fungsi untuk backup database ke flashdisk agar bisa seperti tool asli backup database(nmfile+waktu+nomor backup)

    ReplyDelete
    Replies
    1. Backup database dapat dilakukan dengan menggunakan metode copy file spt di posting http://access-terapan.blogspot.com/2016/03/meng-copy-file-menggunakan-file-system-object-di-access.html.

      Untuk penamaan file gunakan nama sumber file & format(now(), "yyyymmddhhnnss"). Nomor urut tidak diperlukan karena hhnnss adalah urutan waktu yg dihitung setiap detiknya. Misalnya nama file Database20170520030001 berarti dibackup rgl 20 Mei 2017 jam 3 dini hari. Bila dibackup jam 3 lewat 1 menit dan 2 detik maka nama filenya menjadi Database20170520030102 dst.

      Delete
    2. Oya makasih... Tar sy coba

      Delete

Post a Comment

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access