Kamis, 21 Juli 2011

RE: [belajar-access] Timer untuk log out [1 Attachment]

 
[Attachment(s) from hari yanto included below]

Ikut rembukan...
 
Menarik juga soal auto log out itu.
 
Audzubillah himinasyaitonirrajim Bismillahirrahmanirrahiim. Menurut saya begini:
  1. 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.
  2. Buat form baru.
  3. Buat 3 command button. Misal Command1, Command2, Command3. Ini untuk berandai-andai; user mengeklik Command button ataukah tidak.
  4. Buat label baru untuk memberi tahu posisi log ke user. Misal label tersebut kita beri nama us_log.
 
Selesai perangkatnya, sekarang masuk ke VBA.
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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.
  6. 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
  7. 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
  8. 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)
http://110.139.57.19

--- On Thu, 21/7/11, Narupi@infineon.com <Narupi@infineon.com> wrote:

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

 

Mas sudarsono,

 

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

__._,_.___

Attachment(s) from hari yanto

1 of 1 File(s)

Recent Activity:
SPAM IS PROHIBITED
.

__,_._,___

Tidak ada komentar:

Posting Komentar