Bagaimana solusinya agar dapat mengatasi keterbatasan, ukuran file? File yang akan di attachment, tidak disimpan dalam database, hanya link teks yang mengacu pada file Attachment, yang disimpan seperti "C:\Data\Attachment1.jpg". Untuk membuatnya diperlukan pengetahuan VBA (Visual Basic For Application)
Pertama kita buat Database dulu misalnya dengan nama "Demo Attachment" kemudian tambahkan 2 field: 1. ID tipe Autonumber dan Set sebagai Primary Key. Dan 2. Attachment tipe Short Text.
Berikutnya mendesain form-nya. Dari menu Create klik Blank Form. Kemudian dari menu Design pilih Add Existing Fields lalu drag dan drop field Attachment. Tambahkan 2 button disebelah Field Attachment. Button pertama beri Caption "Attachment" dan Name "btnAtt". Button kedua beri nama "View" dan Name "btnView". Catatan: Saya menggunakan image yang diambil dari Internet.
Selanjutnya pilih button "Attachment" dan dijendela Property Sheet pilih tab Event dan di kanan properti On Click tekan tombol elipsis (...). Akan muncul jendela Choose Builder, pilih Code Builder
Klik OK. Anda akan masuk jendela Visual Basic For Application.
Karena kita menggunakan Open File Dialog, kita harus mereferensikan dulu. Caranya klik menu Tools pilih References. Tandai Microsoft 1X.0 Object Library. X tergantung versi Office, karena saya Office 2016 maka Versi 16.
Ketik kode berikut:
Option Compare Database
' Jika button Attachment diklik
' Buka kotak dialog Open
' Ambil Nama File
' Simpan di field Attachment
Private Sub btnAtt_Click()
Me.txtAtt = ""
Dim fileDialog As Object
Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
Dim NamaFile As Variant
With fileDialog
.AllowMultiSelect = False
.Title = "Select File to Attachment:"
.InitialFileName = "D:\Data\Attachment"
.Filters.Clear
.Filters.Add "PDF File", "*.pdf", 1
.Filters.Add "Microsoft Word File", "*.doc; *.docx"
.Filters.Add "Microsoft Excel File", "*.xls; *.xlsx"
.Filters.Add "Image File", "*.jpg; *.jpeg: *.bmp"
If .Show = True Then
For Each NamaFile In .SelectedItems
GetFileName = NamaFile
Next
End If
Me.txtAtt = GetFileName
End With
'Simpan Record
DoCmd.RunCommand acCmdSaveRecord
End Sub
' Jika button Attachment diklik
' Buka kotak dialog Open
' Ambil Nama File
' Simpan di field Attachment
Private Sub btnAtt_Click()
Me.txtAtt = ""
Dim fileDialog As Object
Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
Dim NamaFile As Variant
With fileDialog
.AllowMultiSelect = False
.Title = "Select File to Attachment:"
.InitialFileName = "D:\Data\Attachment"
.Filters.Clear
.Filters.Add "PDF File", "*.pdf", 1
.Filters.Add "Microsoft Word File", "*.doc; *.docx"
.Filters.Add "Microsoft Excel File", "*.xls; *.xlsx"
.Filters.Add "Image File", "*.jpg; *.jpeg: *.bmp"
If .Show = True Then
For Each NamaFile In .SelectedItems
GetFileName = NamaFile
Next
End If
Me.txtAtt = GetFileName
End With
'Simpan Record
DoCmd.RunCommand acCmdSaveRecord
End Sub
Selanjutnya pilih button View dan dijendela Property Sheet pilih tab Event dan di kanan properti On
Click tekan tombol elipsis (...). Akan muncul jendela Choose Builder,
pilih Code Builder. Klik OK.
Ketik kode Berikut:
' Jika button View diklik
' Ambil ekstensi file seperti pdf, jpeg
' Buka file dengan aplikasi sesuai ekstensi file
Private Sub btnView_Click()
Dim NamaFile As String
Dim LokasiTitik As Integer
Dim TotalHuruf As Integer
Dim Ekstensi As String
Dim AngkaEkstensi As Integer
NamaFile = Me.txtAtt
LokasiTitik = InStr(1, NamaFile, ".")
TotalHuruf = Len(NamaFile)
AngkaEkstensi = TotalHuruf - LokasiTitik
Ekstensi = Right(NamaFile, AngkaEkstensi)
If Ekstensi = "docx" Or Ekstensi = "doc" Then
Shell "WinWord.exe " & NamaFile, vbNormalFocus
ElseIf Ekstensi = "xlsx" Or Ekstensi = "xls" Then
Shell "Excel.exe " & NamaFile, vbNormalFocus
ElseIf Ekstensi = "pdf" Then
Shell "C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe " & NamaFile, vbNormalFocus
ElseIf Ekstensi = "jpg" Or Ekstensi = "jpeg" Or Ekstensi = "bmp" Then
Shell "C:\Windows\system32\mspaint.exe " & NamaFile, vbNormalFocus
End If
End Sub
' Ambil ekstensi file seperti pdf, jpeg
' Buka file dengan aplikasi sesuai ekstensi file
Private Sub btnView_Click()
Dim NamaFile As String
Dim LokasiTitik As Integer
Dim TotalHuruf As Integer
Dim Ekstensi As String
Dim AngkaEkstensi As Integer
NamaFile = Me.txtAtt
LokasiTitik = InStr(1, NamaFile, ".")
TotalHuruf = Len(NamaFile)
AngkaEkstensi = TotalHuruf - LokasiTitik
Ekstensi = Right(NamaFile, AngkaEkstensi)
If Ekstensi = "docx" Or Ekstensi = "doc" Then
Shell "WinWord.exe " & NamaFile, vbNormalFocus
ElseIf Ekstensi = "xlsx" Or Ekstensi = "xls" Then
Shell "Excel.exe " & NamaFile, vbNormalFocus
ElseIf Ekstensi = "pdf" Then
Shell "C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe " & NamaFile, vbNormalFocus
ElseIf Ekstensi = "jpg" Or Ekstensi = "jpeg" Or Ekstensi = "bmp" Then
Shell "C:\Windows\system32\mspaint.exe " & NamaFile, vbNormalFocus
End If
End Sub


