1. Ada berbagai cara untuk membuat sebuah nomor transaksi. Saya kurang suka menyimpan nomor transaksi pada field tertentu. Tapi lebih suka membuat nomor yang merupakan penggabungan dari berbagai field.
Dalam contoh kasus yang Sampeyan sampaikan, setidaknya tabel harus memiliki field:
Name type
id number (Primary Key)
tgl date/time
kode text
Saya lebih suka memakai number untuk primary key dibandingkan autonumber. Supaya nomor tidak loncat ketika dihapus. Untuk mengisi record baru, tinggal dicari nilai tertinggi + 1. Misal menggunankan fungsi ini:
Function id_tinggi(nm_field As Variant, nm_tabel As Variant) As Double
Dim rs As Recordset
Dim hasil As Double
If cek_tb(nm_field, nm_tabel) = True Then
Set rs = CurrentDb.OpenRecordset("select max(" & nm_field & ")" _
& " from " & nm_tabel)
If Not rs.EOF Then
hasil = Nz(rs.Fields(0), 0) + 1
End If
rs.Close
Set rs = Nothing
id_tinggi = hasil
Else
id_tinggi = 0
End If
End Function
Function cek_tb(nm_field As Variant, nm_tabel As Variant) As Boolean
Dim rbs As Recordset
Dim db As DAO.Database
Dim hasil As Boolean
Dim i As Integer
hasil = False
Set rbs = CurrentDb.OpenRecordset("SELECT MSysObjects.Name" _
& " FROM MSysObjects WHERE" _
& " MSysObjects.Name='" & nm_tabel & "'") 'melihat nama tabel n_tb
If Not rbs.EOF Then 'bila ada record
hasil = True
End If
'menghilangkan dari memory komputer
rbs.Close
Set rbs = Nothing
If hasil Then
hasil = False
Set rbs = CurrentDb.OpenRecordset("Select * from " & nm_tabel)
For i = 0 To rbs.Fields.Count - 1
If rbs.Fields(i).Name = Trim(nm_field) Then
hasil = True
Exit For
End If
Next i
rbs.Close
Set rbs = Nothing
End If
cek_tb = hasil
End Function
Pada fungsi ini, apabila kita memperoleh kembalian 0, maka eksekusi insert harus dibatalkan. Karena itu pertanda bahwa nama field atau tabel tidak terekam.
Untuk mendapatkan nomor transaksi seperti yang Sampeyan harapkan, kita tinggal membuat query yang isinya:
no_tran: [kd] & Day([tanggal]) & Format(Month([tanggal]);"00") & Year([tanggal]) & Format([id];"0000")
no_tran:
J30120140002
J40120140003
J50120140004
B60120140005
B60120140006
B100120140007
J200120140008
J240120140009
J240120140010
J240120140011
B30220140013
J70220140014
B90220140015
B100220140016
B140220140017
B150220140018
J220220140019
J240220140020
J250220140021
B20320140023
B50320140024
J60320140025
J60320140026
B70320140027
J80320140028
B90320140029
B110320140030
B240320140031
2. Agar pertama muncul form login, form login itu harus kita letakkan di start up. Tools ==> start up ==> Display Form/Page ==> Pilih form login.
Pada form login harus difilter. Apabila username dan password benar ==> diarahkan membuka membuka form lain. Bila salah, beri pesan bahwa username dan password salah. Filternya bisa menggunakan VBA. Salah satunya bisa memakai script ini:
'asumsi nama tabel dan field benar
Function us_pas(usr As Variant, pass As Variant, nm_tabel As Variant) As Boolean
Dim rs As Recordset
Dim hasil As Boolean
hasil = False
Set rs = CurrentDb.OpenRecordset("select * from " & nm_tabel & "" _
& " where username='" & usr & "'" _
& " and password='" & pass & "'")
If Not rs.EOF Then
hasil = True
End If
rs.Close
Set rs = Nothing
us_pas = hasil
End Function
3. Dasar-dasar sql dan VBA banyak bertebaran di Google. Dari situ kita bisa mencari. Yang lebih penting, langsung praktek saja. Kalau ada masalah atau keinginan, bisa dicari via google. Atau, forum ini.
Semoga bisa membantu dan memberi semangat.
Hariyanto (Surabaya)
--------------------------------------------
On Wed, 29/1/14, Ivan Alexander <xella_navi@yahoo.com> wrote:
Subject: [belajar-access] Bagaimana membuat custom autonumber untuk nomor dokumen dan pembuatan form login
To: belajar-access@yahoogroups.com
Date: Wednesday, 29 January, 2014, 9:32 PM
Selamat malam agan2 semua.
Saya mau bertanya tentang pembuatan field nomor
dokumen,misalnya nomor nota. Bisa gak nomornya dibuat
autonumber dg format yg kita custom sendiri misalnya
J2901140001 (maksudnya j adalah jual,29 tgl 29, 01 bulan
jan, 14 taon 2014,0001 nomor urut dokumen yg otomatis
berjalan dan akan d reset d awal bulan depan).
Saya juga mau tanya gmn caranya buat form login
dan form tersebut hrs muncul pertama ketika kita membuka
aplikasi yg kita buat,dan jika tidak d input maka aplikasi
kita tidak bs d buka.
Yang berikut saya mau minta,klo d antara agan2
yg punya ebook tentang dasar penggunaan sql (untuk keperluan
membuat query d access) dan jg ebook ttg dasar2 penggunaan
vba, dan bersedia membagikan, sy minta untuk d attach ke
email saya ini.
Terimakasih sebelumnya buat bantuannya
Reply via web post | Reply to sender | Reply to group | Start a New Topic | Messages in this topic (2) |
Tidak ada komentar:
Posting Komentar