PDA

View Full Version : سوال: ايجاد فرم تغيير امكان استفاده از شيفت در اكسس



abi_hf
یک شنبه 15 اسفند 1389, 18:20 عصر
سلام
دوستان من يه سوال دارم.
چطور ميتونم يه فرم ساده با 2 تا دكمه فعال و غير فعال براي تغيير وضيعيت امكان استفاده از شيفت در اكسس ايجاد و بعد دسترسي به اون فرم رو محدود به خودم بكنيم؟
لطفاً اگر تكراريه لينك تاپيك مشابه رو بزنين
سپاس فراوان

bita_ziba77
دوشنبه 16 اسفند 1389, 09:17 صبح
با سلام
يك كليد در فرم خود گذاشته و كد زير را به صورت زير به آن تخصيص دهيد: (مثلا command1)

Private Sub Command1_Click()
On Error GoTo Err_Command1_Click

Dim stDocName As String

stDocName = "Lock Marco"
DoCmd.RunMacro stDocName

Exit_Command1_Click:
Exit Sub

Err_Command1_Click:
MsgBox Err.Description
Resume Exit_Command1_Click

End Sub

سپس يك ماژول ايجاد كرده و كد زير را در آن كپي نماييد:

Option Compare Database

Private Sub Locker()
On Error GoTo er
Dim db As Database
Dim prp As Property
Set db = CurrentDb
Set prp = db.CreateProperty("allowbypasskey", dbBoolean, False)
db.Properties.Append prp
db.Close
ex:
Exit Sub
er:
If Err.Number = 3367 Then
Exit Sub
End If
Resume ex
End Sub

Public Function runlock()

Locker
q = MsgBox("'lock database?", vbYesNo)
If q = vbYes Then lockshift
If q = vbNo Then unlockshift

End Function

Private Sub lockshift()

Dim db As Database
Set db = CurrentDb
db.Properties("allowbypasskey") = False
db.Close
MsgBox ("shift deactive ")
DoCmd.Quit acQuitSaveAll

End Sub
Private Sub unlockshift()

Dim db As Database
Set db = CurrentDb
db.Properties("allowbypasskey") = True
db.Close
MsgBox ("shift active ")
DoCmd.Quit acQuitSaveAll
End Sub
حالا هر هنگام كه كليد در فرم خود را فشار دهيد از شما مي پرسد كه شيفت فعال باشد و يا غير فعال گردد.

با تشكر

abi_hf
دوشنبه 16 اسفند 1389, 11:10 صبح
حالا يه سوال
ميشه به اين فرم گفت كه با يه رمز عبور كار كن
نه يه چيز پيچيده ها
مثلاً بگيم اگر تكست باكس1 نوشته شد abolfazl بعد دكمه فعال و غير فعال رو قابل اجرا كن، وگر نه اين دكمه غير بمونه؟؟؟

bita_ziba77
دوشنبه 16 اسفند 1389, 11:49 صبح
با سلام
شما ابتدا بايد textbox كه شامل user كاربران مي باشد را در فرم خود گذاشته و سپس در رخداد on load فرم خود كد زير را قرار دهيد:

Private Sub Form_Load()
If Me.Text3.Value = "abolfazl" Then
Me.Command1.Visible = True
Else
Me.Command1.Visible = False
End If
End Sub

با تشكر

abi_hf
دوشنبه 16 اسفند 1389, 12:53 عصر
بازم سلام
وقتي اين كار ها رو كردم خطا ميده و پيغامش ميگه نمي تونه Lock Marco رو پيدا كنه.
اين يه ماكرو هست يا ماژول؟

bita_ziba77
دوشنبه 16 اسفند 1389, 13:59 عصر
با سلام
ببخشيد فراموش كردم
يك ماكرو به نام lock macro ساخته و در بخش action گزينه Run code و در بخش پايين در بخش Function name گزينه
runlock () را تايپ نماييد.

با تشكر

abi_hf
دوشنبه 16 اسفند 1389, 15:26 عصر
مرسي لطف كردي