Ikut rembukan... Menarik juga soal auto log out itu. Audzubillah himinasyaitonirrajim Bismillahirrahmanirrahiim. Menurut saya begini: - Buat tabel log yang berisi field IP user (text) dan log_user (number). Tabel ini akan menampung aktivitas user. Saat user membuka form, tabel akan diisi dengan dengan ip user dan timer (detik saat itu). Kedua piranti ini, kita konfirmasikan tiap saat melalui form.
- Buat form baru.
- Buat 3 command button. Misal Command1, Command2, Command3. Ini untuk berandai-andai; user mengeklik Command button ataukah tidak.
- Buat label baru untuk memberi tahu posisi log ke user. Misal label tersebut kita beri nama us_log.
Selesai perangkatnya, sekarang masuk ke VBA. - Buat modul get IP (karena untuk kepentingan umum), misalnya scriptnya seperti ini:
- Public Function G_IP()
Dim myWMI As Object, myobj As Object, itm Set myWMI = GetObject("winmgmts:\\.\root\cimv2") Set myobj = myWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True") For Each itm In myobj G_IP = itm.IPAddress(0) Exit Function Next End Function - Saat form di buka, on open, beri event mengisi log dengan ip user dan detik saat itu. Scriptnya bisa seperti ini:
- Private Sub Form_Open(Cancel As Integer)
Dim db As Database Set db = CurrentDb db.Execute "insert into log values ('" _ & G_IP & "'," & Fix(Timer) & ")" db.Close Set db = Nothing - End Sub
- Untuk mengetahui kondisi lamanya user sedang berada di form, kita harus membandingkan waktu saat itu dengan waktu saat membuka form yang sudah disimpan di tabel log. Kita bisa memanfaatkan event on timer. Scriptnya bisa seperti ini:
- Private Sub Form_Timer()
Dim x As Variant - x = "awal"
ambil_menit (x) End Sub - Script untuk ambil_menitnya bisa seperti ini:
- Function ambil_menit(x_pesan)
Dim rs As DAO.Recordset Dim x_sel, xx_s, x_detik As Variant - Set rs = CurrentDb.OpenRecordset("select log_us from" _
& " log where ip_ad='" & G_IP & "'") If Not rs.EOF Then x_sel = rs.Fields(0) End If rs.Close Set rs = Nothing If x_sel > 0 Then xx_s = Fix(Timer - x_sel) x_sel = Format(Int([xx_s] / 3600), "00") & ":" _ & Format(Int(([xx_s] - (Int([xx_s] / 3600) * 3600)) / 60), "00") _ & ":" & Format((([xx_s] Mod 60)), "00") x_detik = Format((([xx_s] Mod 60)), "00") Me.TimerInterval = 1000 'xx_s dalam bentuk detik If Val(xx_s) < 30 Then If x_pesan = "awal" Then us_log.Caption = "Anda sudah login selama " & x_sel Else us_log.Caption = "Anda " _ & " memencet tombol " & x_pesan _ & ". Jedah waktu On line diperberbarui menjadi selama " & x_sel & " lalu" End If ElseIf Val(xx_s) > 30 And Val(xx_s) < 45 Then Me.TimerInterval = 500 us_log.Caption = "Hati-hati.., Anda sudah on line " _ & x_sel & ". Kalau Anda membiarkan, " & (60 - x_detik) & " detik lagi" _ & " form ini akan menutup otomatis" ElseIf Val(xx_s) > 45 And Val(xx_s) < 60 Then Me.TimerInterval = 500 us_log.ForeColor = 255 us_log.FontBold = True us_log.FontSize = 15 us_log.Caption = "Peringatan terakhir, " _ & (60 - x_detik) & " detik lagi" _ & " form ini akan menutup otomatis.... " ElseIf Val(xx_s) > 60 Then DoCmd.Close End If Else us_log.Caption = "Anda sudah log out" End If End Function - Sampai disini akan muncul pesan-pesan yang disampaikan ke user secara bertahap. Tahap akhirnya, form akan menutup secara otomatis. Tahap akhir bisa pula disetting dengan menghapus data di tabel log, terus menyampaikan pesan ke user bahwa user sudah log out. Atau, membuka form login. Atau, hal-hal lainnya.
- Kalau user melakukan proses terhadap form. Misalnya mengklik salah satu command button, beri event yang mengupdate field log_user pada tabel log (khusus untuk user itu). Misal user mengklik command button command1, isi event on click-nya, misal dengan script ini:
- Private Sub Command1_Click()
anyar (Command1.Caption) End Sub - Fungsi anyar, bisa dibuat script seperti ini:
- Function anyar(xx)
Dim db As Database Set db = CurrentDb db.Execute "update log set log_us=" _ & Fix(Timer) & " where ip_ad='" _ & G_IP & "'" db.Close Set db = Nothing ambil_menit (xx) End Function - Terakhir, saat user menutup form, hapuslah record user (berdasarakn IP) di tabel log.
Terlampir adalah contoh mdb-nya. Semoga bisa membantu dan memberi semangat.. Hariyanto (Surabaya) From: Narupi@infineon.com <Narupi@infineon.com> Subject: RE: [belajar-access] Timer untuk log out To: belajar-access@yahoogroups.com Date: Thursday, 21 July, 2011, 4:47 PM
Thanks banget atas masukannya Hi maaf kalau untuk menentukan event kapan mulai tidak ada aktifitas bagaimana ya? Aktifitas yang di maksud adalah tidak ada proses klick atau update Terima kasih Lukman From: belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] On Behalf Of Sudarsono Suhenk Sent: Thursday, July 21, 2011 4:14 PM To: belajar-access yahoo.com Subject: RE: [belajar-access] Timer untuk log out Pengertian logout di aplikasi Access , bisa di akali dengan variabel public , misal bl_pbl_login ( bertipe boolean ). Lalu untuk pengecekan gunakan event [on timer] . jadi perlu mencatat startjam bertipe date/time, dimana perhitungan mulai dilakukan. Setting property Form , [Timer Interval] dengan , misal 500. Sehingga Form setiap beberapa sekian detik memanggil event [on Timer]. Masalahnya yang perlu diperhatikan kapan perhitungan menit ( 30 menit ) dimulai. yaitu mengisi nilai startjam ( menunjukan jam berapa ) .
To: belajar-access@yahoogroups.com From: aksan.kurdin@gmail.com Date: Thu, 21 Jul 2011 13:38:29 +0700 Subject: [belajar-access] Timer untuk log out
(Mohon maaf saya keliru pencet tombol approve sehingga message dari Bang Lukman terdelete, berikut kami kirim ulang)
FROM:Narupi@infineon.com DATE: Thu, 21 Jul 2011 03:58:40 +0000 SUBJECT: Timer Untuk Log Out
Assalamu'alaikum
Bagaimana ya caranya membuat timer untuk log out Logikanya begini Jika selama 30 menit tidak ada aktifitas pada aplikasi maka aplikasi tersebut akan log out Atau semisal pada windows
Suwun Lukman
|
Tidak ada komentar:
Posting Komentar