Baik,
mudah-mudahan penjelasan berikut bisa ditangkap:
modul periode saya ubah sebagai berikut:
Option Compare Database
Public Awal As Date
Public akhir As Date
'Sub periode()
' Dim Awal As Date
' Dim akhir As Date
' Awal = Forms!periode!Awal
' akhir = Forms!periode!akhir
'End Sub
Sub BukaPeriode()
DoCmd.OpenForm "Periode", , , , , acDialog
Awal = Forms("Periode")!Awal
akhir = Forms("Periode")!akhir
DoCmd.Close acForm, "Periode"
End Sub
Perhatikan saya telah mendeklarasikan variabel awal dan akhir menjadi
public, artinya dari modul lain bisa mengambil nilai variabel tersebut
dengan cara seperti:
dim a as date
a = periode.awal
variabel a kita isi variabel awal dari module periode. sampai sini paham
kan ?
Trik berikutnya adalah sub BukaPeriode.
Procedure ini dimaksudkan untuk membuka form periode, menunggu masukan,
klik ok, maka form menutup dan variabel awal dan akhir terisi dengan
nilai sesuai form.
Perhatikan langkah-nya:
- buka form periode dalam mode dialog, berarti jendela akan ditempatkan
di atas jendela yang lain, dan menghalangi akses ke window di
belakangnya hingga form ini ditutup.
- setelah form tertutup, maka variabel awal diisikan sesuai text box
awal di form "periode"
- demikian juga variabel akhir
- melepas form periode dari memori (benar-benar tertutup!)
nah sekarang tentu timbul pertanyaan, bagaimana bisa awal bisa mengambil
nilai dari form "periode" sedangkan form tersebut sudah ditutup ?
triknya ada dalam modul form periode berikut:
Option Compare Database
Private Sub Command4_Click()
' 'buka laporan
' DoCmd.OpenReport "Teman", acPreview
Me.Visible = False
End Sub
ya, tombol ok hanya menyembunyikan form dari pandangan, bukan
menutupnya, sehingga dia keliatan tertutup tetapi sebenarnya masih
terbuka, sehingga kita bisa mengambil nilai property yang ada pada form
tersebut. form akan ditutup di modul periode.bukaperiode.
sampai sini jelas kan?
selanjutnya sekarang perhatikan form teman. modulnya adalah:
Private Sub Command15_Click()
'MsgBox "Masukkan Periode Yang Diinginkan"
'
''buka form periode
'DoCmd.OpenForm "periode", acNormal
periode.BukaPeriode
DoCmd.OpenReport "Teman", acViewPreview, , "[hut] between # " &
Format(periode.Awal, "m/d/yyyy") & " # and # " & Format(periode.akhir,
"m/d/yyyy") & "#"
End Sub
sekarang kita bisa memanggil prosedur bukaperiode dari modul periode
dari form teman dengan sintak periode.bukaperiode
apa yang dilakukan adalah membuka form periode secara modal, menerima
inputan, dan menyimpan nilai inputan ke dalam public variabel awal dan
akhir, lalu menutup form periode.
Nah sekarang apa yang anda inginkan sudah tercapai, anda bisa buka
report "teman" berdasarkan nilai dari modul periode seperti dalam perintah:
DoCmd.OpenReport "Teman", acViewPreview, , "[hut] between # " &
Format(periode.Awal, "m/d/yyyy") & " # and # " & Format(periode.akhir,
"m/d/yyyy") & "#"
Nilai periode.awal dan periode.akhir tetap bisa anda gunakan untuk
keperluan di report2 yang lain.
Mudah-mudahan sejalan dengan apa yang diinginkan.
Aksan Kurdin
CGSATU wrote:
Saya mau tanya,
bagaimana ya caranya parsing value (umpankan nilai) dari satu module ke
modul lain di MS Access?
Jadi kalau dilihat pada file yang saya kirimkan, akan ada dua buah
module,
satu namanya module Navigasi, disini semua fungsi untuk menjelajah
data saya simpan dan bisa digunakan untuk semua form yang (bakalan)
ada di aplikasi
Tidak ada masalah disini
Nah, sekarang masalah modul periode, disini, nampak bahwa saya ingin
mengambil nilai dari form periode, dimana ada tanggal awal dan tanggal
akhir
Dua nilai yang ada dalam variabel (awal dan akhir) ini, ingin saya
manfaatkan berkali-kali.
Bagaimana caranya?
Jadi jika saya ingin membuat laporan atau data berdasarkan periode, saya
TIDAK PERLU berulangkali menuliskan kode sbb :
DoCmd.OpenReport "Teman", acViewPreview, , "[hut] between # " &
Format([awal], "m/d/yyyy") & " # and # " & Format([akhir], "m/d/yyyy")
& "
#"
Jadi keinginan saya adalah, form Periode cuma sebagai alat ambil nilai
(dalam kasus ini tanggal). Dan jika saya buat tabel lain, yang ada
datanya, form Periode dan Module periode ini tetap bisa "supply data
tanggal" berkali-kali.
O ya, tentu saya pakai MS Access 2003, dengan format masih di MS Access
2000.
Terimakasih banyak sebelumnya