Kamis, 05 April 2012

RE: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

Terimakasih banyak Mas Sofyan, sangat membantu, sukses buat Mas Sofyan.

Siap mas.. modulnya untuk kalangan sendiri.

 

Salam,

Widodo

 

From: belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] On Behalf Of Sofyan Efendi
Sent: 05 April 2012 11:01
To: belajar-access@yahoogroups.com
Subject: Re: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

   

Dear mas Widodo, dahulu saya pernah ada pengalaman menggunakan disable Shift key, diantaranya di program Al-Qur'an Database 5.0. Tidak semua program saya disable Shify Key nya, karena semua user menggunakan Access Runtime 2007, mereka tidak bisa design. Terdapat dua sistem pengaturan Shift Key di dalam Microsoft Access Database yang dapat disetting, yaitu Disable Shift Key dan Enable Shift Key. Masing-masing properties Shift Key tersebut dibagi kembali menjadi dua, yakni setting properties Shift Key untuk file internal (CurrentDB) dan setting properties Shift Key untuk file external (yakni database selain yang sedang dibuka saat itu).

Shift Key merupakan kunci utama untuk masuk ke database window Access. Kendatipun demikian, sesungguhnya pengaturan Shift Key ini tidak akan berpengaruh banyak kepada programmer, hacker ataupun user yang sudah mengetahui kuncinya atau tata cara mengaktifkan dan menonaktifkan Shift Key ini. Bahkan, file EXE tertentu yang sudah dicompile pun, dapat di decompile kembali oleh para programmer yang sudah mengetahui caranya. Kendatipun demikian, untuk kepentingan belajar, marilah kita bahas satu persatu pengaturan Shift Key ini. :)

Sebelum menjalankan fungsi-fungsi di bawah ini, pastikan DAO sudah ditambahkan di reference VBA nya. Juga setting startup untuk "Display Database Window" pada file tersebut harus sudah di Off kan. Caranya, klik menu Tools -> Startup (utk Access 2003). Hilangkan tanda centang pada pilihan "Display Database Window". Juga harap dibackup dahulu file original yang Anda gunakan sebagai latihan, dikhawatirkan saat menjalankan beberapa fungsi dibawah ini terjadi error yang menyebabkan kerusakan pada file Anda.

1. DISABLE SHIFT KEY UNTUK FILE INTERNAL:

Public Function DisableShiftKeyInternal()
On Error GoTo ShiftError
Dim db As DAO.Database
Dim ShiftKey As DAO.Property
Set db = CurrentDb()
db.Properties("AllowByPassKey") = False
GoTo nol
ShiftError:
Set ShiftKey = db.CreateProperty("AllowByPassKey", dbBoolean, False)
db.Properties.Append ShiftKey
nol:
db.Close
Set db = Nothing
End Function

2. DISABLE SHIFT KEY UNTUK FILE EXTERNAL:

Public Function DisableShiftKeyExternal(LokasiFileLengkap As String)
'LokasiFileLengkap adalah lokasi file beriut dengan namanya
'Misal: "C:\MyDB.MDB"
On Error GoTo ShiftError
Dim db As DAO.Database
Dim ShiftKey As DAO.Property
Set db = OpenDatabase(LokasiFileLengkap, False, False)
db.Properties("AllowByPassKey") = False
GoTo nol
ShiftError:
Set ShiftKey = db.CreateProperty("AllowByPassKey", dbBoolean, False)
db.Properties.Append ShiftKey
nol:
db.Close
Set db = Nothing
End Function

3. ENABLE SHIFT KEY UNTUK FILE INTERNAL:

Public Function EnableShiftKeyInternal()
On Error GoTo ShiftError
Dim db As DAO.Database
Dim ShiftKey As DAO.Property
Set db = CurrentDb()
db.Properties("AllowByPassKey") = True
GoTo nol
ShiftError:
Set ShiftKey = db.CreateProperty("AllowByPassKey", dbBoolean, True)
db.Properties.Append ShiftKey
nol:
db.Close
Set db = Nothing
End Function

4. ENABLE SHIFT KEY UNTUK FILE EXTERNAL:

Public Function EnableShiftKeyExternal(LokasiFileLengkap As String)
'LokasiFileLengkap adalah lokasi file berikut dengan namanya
'Misal: "C:\MyDB.MDB"
On Error GoTo ShiftError
Dim db As DAO.Database
Dim ShiftKey As DAO.Property
Set db = OpenDatabase(LokasiFileLengkap, False, False)
db.Properties("AllowByPassKey") = True
GoTo nol
ShiftError:
Set ShiftKey = db.CreateProperty("AllowByPassKey", dbBoolean, True)
db.Properties.Append ShiftKey
nol:
db.Close
Set db = Nothing
End Function

TATA CARA PENGGUNAAN:

Cukup menjalankan salah satu dari fungsi-fungsi diatas di immediate window VBA, misal:

?DisableShiftKeyInternal()
Lalu tekan Enter.

?DisableShiftKeyExternal("C:\MyDB.mdb")
Lalu tekan Enter.

?EnableShiftKeyInternal()
Lalu tekan Enter.

?EnableShiftKeyExternal("C:\MyDB.mdb")
Lalu tekan Enter.

O ya, modul EnableShiftKeyExternal jangan diberikan ke Auditornya yah ...

 

Wassalaamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi
http://imopi.wordpress.com/

----- Original Message -----

From: Widodo

Sent: Thursday, April 05, 2012 10:21 AM

Subject: RE: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

Dear Mas Sofyan,

Terimakasih banyak, sangat membantu sekarang sudah jalan.

Semoga Mas Sofyan Sehat dan Sukses selalu, amin ya robbal alamin.

 

Satu lagi Mas, kemarin programnya saya sudah buat jadi ACCDE, tpi sama orang audit di buka pakai shift + enter, ga taunya databasenya kebuka semua dan bisa di edit, bagaimana cara proteksinya yah...

 

Terimakasih

Salam

Widodo

 

 

From: belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] On Behalf Of Sofyan Efendi
Sent: 04 April 2012 14:43
To: belajar-access@yahoogroups.com
Subject: Re: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

 



Dear mas Widodo, mohon maaf procedure yg Mas saya revisi menjadi:

 

Private Sub Command6_Click()
DoCmd.DeleteObject acQuery, "qbod"
dodo = Nz(DLookup("[Level]", "[Tbl_Password]", "[Passwd] = '" & _
TxtPass.Value & "' AND [User] = '" & TxtUser.Value & "'"), 0)
Dim dbSample As Database
Dim qdfSample As QueryDef
Set dbSample = CurrentDb()
If dodo = 2 Then
Set qdfSample = dbSample.CreateQueryDef("qbod", "SELECT SOP.Kode_Dokumen, SOP.Dept, SOP.SubDept, SOP.Nama_Dokumen, SOP.Revisi, SOP.Status, thakakses.mgr_hrd" & _
" FROM SOP INNER JOIN thakakses ON SOP.Kode_Dokumen = thakakses.Kode_Dokumen" & _
" WHERE (((SOP.Status) = 'Release') And ((thakakses.bod) = -1))" & _
" ORDER BY SOP.Dept, SOP.SubDept;")
ElseIf dodo = 3 Then
    Set qdfSample = dbSample.CreateQueryDef("qbod", "SELECT SOP.Kode_Dokumen, SOP.Dept, SOP.SubDept, SOP.Nama_Dokumen, SOP.Revisi, SOP.Status, thakakses.mgr_hrd" & _
" FROM SOP INNER JOIN thakakses ON SOP.Kode_Dokumen = thakakses.Kode_Dokumen" & _
" WHERE (((SOP.Status) = 'Release') And ((thakakses.mgr_hrd) = -1))" & _
" ORDER BY SOP.Dept, SOP.SubDept;")
End If
Form_flogin.Visible = False
DoCmd.OpenForm "fbod"
qdfSample.Close
dbSample.Close
'If dodo = 1 Then
'    Me.txtlevel = dodo
'    Form_flogin.Visible = False
'    DoCmd.OpenForm "fbod"
'ElseIf dodo = 2 Then
'    Form_flogin.Visible = False
'    DoCmd.OpenForm "fbod"
'ElseIf dodo = 3 Then
'    Form_flogin.Visible = False
'    DoCmd.OpenForm "fmgrmkt"
'ElseIf dodo = 35 Then
'    Me.txtlevel = dodo
'    'DoCmd.Close acForm, Me.Name, acSaveYes
'    DoCmd.OpenForm "fbod"

 

'Else
'    MsgBox "Maaf User dan atau Password Salah, Silahkan coba lagi..., Untuk registrasi harap hubungi MS Departemen.", vbCritical, "Perhatian..."
'    dodo = 0
'    Me.TxtUser.SetFocus
'End If
End Sub

 

Dengan demikian, kita tidak perlu buat banyak form dan query... Cukup dibuat definisi query masing2 level di VBA...

 

Wassalaamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi
http://imopi.wordpress.com/

----- Original Message -----

From: Widodo

Sent: Wednesday, April 04, 2012 1:43 PM

Subject: RE: [belajar-access] Bagaimana mengambil field secara otomatis dari form login [1 Attachment]

 

Dear Mas Sofyan,

Terimakasih banyak atas bantuannya, saya sudah coba belum sukses juga/belum sesuai keinginan... terlampir saya kirimkan contoh programnya, tolong dibantu yah..

 

Wassalamu alaikum wr wb.

widodo

 

From: belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] On Behalf Of Sofyan Efendi
Sent: 03 April 2012 16:14
To: belajar-access@yahoogroups.com
Subject: Re: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

 

Dear Mas Widodo,

 

Tolong diganti kolom Expr1:.. dst semuanya menjadi BOD saja yg merujuk ke table thakakses. Kemudian pada kriteria, ganti dari Yes menjadi: iif([forms]![flogin]![txtuser]="bod";-1;0). Insya Allah bisa mas...

Namun cara ini mungkin kurang praktis dalam dunia perdatabasean ... biasanya satu query, satu form.. Bisa tidaknya send kabar kemari yah, insya Allah kami coba bantu lagi...

 

Wassalaamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi
http://imopi.wordpress.com/

----- Original Message -----

From: Widodo

Sent: Tuesday, April 03, 2012 3:20 PM

Subject: RE: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

Terimakasih Mas Sofyan, yang pengin dirubah adalah  fieldnya merujuk pada text box di form login bukan criteria yang merujuk ke form login, saya coba berdasarkan petunjuk Mas Sofyan seperti dibawah ini, harusnya hasilnya adalah yes/no namun yang keluar adalah tulisan 'bod' semua karena saya login menggunakan akses bod.

 

From: belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] On Behalf Of Sofyan Efendi
Sent: 03 April 2012 9:44
To: belajar-access@yahoogroups.com
Subject: Re: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

Dear Mas Widodo, satu saja form dan querynya, nanti di querynya menggunakan criteria yg merujuk langsung ke text box user name di form login...

 

Wassalaamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi
http://imopi.wordpress.com/

----- Original Message -----

From: Widodo

Sent: Tuesday, April 03, 2012 9:16 AM

Subject: RE: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

Saya sudah coba belum sukses yah...J

Jadi ceritanya gini....  saya buat program untuk distribusi SOP, terdapat 35 user dengan 35 akses file SOP yang berbeda-beda setiap usernya, saya buat 3 tabel sbb :

1.       Tabel password

2.       Tabel hak akses

3.       Tabel prosedur

Saat ini saya membuat 35 queri dan 35 form, setiap user login langsung open form sesuai hak aksesnya. Saat ini saya buat query seperti gambar dibawah, misalkan usernya BOD  saya buat query dan form khusus untuk BOD, begitu juga untuk marketing manager dan seterusnya. Maunya saya cukup 1 query dan 1 form untuk semua user, pada saat login/open/load form langsung merubah query sesuai user namenya. Bagaimana caranya yah...

 

Mohon bantuan para master. terimakasih

 

 

From: belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] On Behalf Of Mas Uki
Sent: 02 April 2012 8:42
To: belajar-access@yahoogroups.com
Subject: Bls: [belajar-access] Bagaimana mengambil field secara otomatis dari form login

 

 

Dear Bung Widodo, 







Sepertinya saya pernah mengalami hal seperti ini, dan solusinya menggunakan QueryDef, caranya anda harus mendefinisikan nama query dan SQL-nya lewat VBA, jadi harus dikaitkan dengan event atau apapun yang bisa memanggilnya (dengan form misalnya). (Maaf gambar terlalu kecil, saya tidak dapat dengan jelas membacanya).

Saya asumsikan nama tabel : MASTER

Nama field yang dimaksud terdapat pada TextBox dengan nama NO_ID (bisa diganti dengan combo box yg bisa dipilih)

Nama event : misal tombol (Command1) diklik

 

Private Sub Command1_Click()

On Error Resume Next

Dim kode, SQL As String

Dim db As Database

Dim nmkueri As QueryDef

 

kode = Me.NO_ID

 

SQL = "SELECT " & kode &" FROM MASTER"

 

Set db = CurrentDb

Set nmkueri = db.CreateQueryDef("LiatKode", SQL)

 

DoCmd.OpenQuery "LiatKode", acViewNormal, acReadOnly

 

db.QueryDefs.Delete "LiatKode"

db.Close

 

End Sub

 

Anda bisa memodifikasi sesuai dengan kebutuhan anda, semoga membantu.

 

 

 

 

Best Regards,

 

 

Sukiono

PT. Kumala Kencana Cipta

www.kumalahome.com

 


Dari: Widodo <widodo_wiranto@yahoo.co.id>
Kepada: belajar-access@yahoogroups.com
Dikirim: Minggu, 1 April 2012 17:57
Judul: [belajar-access] Bagaimana mengambil field secara otomatis dari form login [1 Attachment]

 

 

 

Dear Para master Access,

 

Bagimana caranya membuat query yang fieldnya ngambil langsung dari User name di form login, sehingga saya tidak perlu membuat banyak query dan form. Terlampir saya kirimkan capture querynya. Terimakasih

 

Salam

Widodo

 

 

__._,_.___
Recent Activity:
SPAM IS PROHIBITED
.

__,_._,___

Tidak ada komentar:

Posting Komentar