اذهب الي المحتوي
أوفيسنا

بوعبد الله محفوظ

03 عضو مميز
  • Posts

    143
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل منشورات العضو بوعبد الله محفوظ

  1. السلام عليكم ورحمة الله تعالى وبركاته لمراجعة بداية الموضوع يرجى زيارة هذه الصفحة https://www.officena.net/ib/topic/79975-صلاحيات-المستخدمين/ في الموديل "Globals" قمت بالتعريفات التالية Public VUserID As Integer 'من اجل حفظ رقم تعريف المستخدم Public VFirstLast As String 'من أجل حفظ قيمة الاسم واللقب Public VFirst As String 'من أجل حفظ قيمة الاسم Public VLast As String 'من أجل حفظ قيمة اللقب Public VUserName As String 'من أجل حفظ اسم المستخدم بعد ذلك أنشئت نموج جديد"AdminNaviForm" حيث عند اختيار أي مستخدم والذهاب إلى الأذونات يتم عرض بيانات ذلك المستخدم مع الصلاحيات التي يمتلكها وفي الحدث عند النقر في زر الأذونات وضعت الكود التالي Private Sub NavigationButton9_Click() [Forms]![AdminNaviForm]![AdminNavSubform]![txtID] = VUserID [Forms]![AdminNaviForm]![AdminNavSubform]![txtFirstLast] = VFirstLast [Forms]![AdminNaviForm]![AdminNavSubform]![txtUserName] = VUserName [Forms]![AdminNaviForm]![AdminNavSubform]!chkOpenUser = DLookup("COpen", "tblHasAccess", "[UserID]= " & [Forms]![AdminNaviForm]![AdminNavSubform]![txtID]) [Forms]![AdminNaviForm]![AdminNavSubform]!chkCViewUser = DLookup("CView", "tblHasAccess", "[UserID]= " & [Forms]![AdminNaviForm]![AdminNavSubform]![txtID]) [Forms]![AdminNaviForm]![AdminNavSubform]!chkEditUser = DLookup("CEdit", "tblHasAccess", "[UserID]= " & [Forms]![AdminNaviForm]![AdminNavSubform]![txtID]) [Forms]![AdminNaviForm]![AdminNavSubform]!chkCdeleteUser = DLookup("Cdelete", "tblHasAccess", "[UserID]= " & [Forms]![AdminNaviForm]![AdminNavSubform]![txtID]) [Forms]![AdminNaviForm]![AdminNavSubform]!chkCAddUser = DLookup("CAdd", "tblHasAccess", "[UserID]= " & [Forms]![AdminNaviForm]![AdminNavSubform]![txtID]) End Sub وفي نموذج المستخدمين وفي الحدث الحالي وضعت الكود التالي Private Sub Form_Current() On Error Resume Next VUserID = Me.ManagementID VFirst = Me.txtFirstName VLast = Me.txtLastName VFirstLast = VFirst & " " & VLast VUserName = Me.txtUserName End Sub وعند الضغط على زر حفظ في نموذج الأذونات وضعت الكود التالي Private Sub btnSave_Click() msaved = True Dim rs As Recordset Dim criteria As String Set rs = CurrentDb.OpenRecordset("tblHasAccess", dbOpenSnapshot, dbReadOnly) criteria = "[UserID]=" & [txtID] _ & "And [FormName]='" & [txtfrmUser] & "'" rs.FindFirst criteria If rs.NoMatch = False Then CurrentDb.Execute "UPDATE tblHasAccess " _ & "SET COpen = '" & [chkOpenUser] & " ' , CEdit = '" & [chkEditUser] & "'," _ & "CView ='" & [chkCViewUser] & " ' ,Cdelete ='" & [chkCdeleteUser] & "'," _ & "CAdd ='" & [chkCAddUser] & "'" _ & "WHERE tblHasAccess.UserID =" & [txtID] _ & "and tblHasAccess.FormName ='" & [txtfrmUser] & "' ;" Else CurrentDb.Execute " INSERT INTO tblHasAccess " _ & "(UserID,FormName, COpen, CView, CEdit, Cdelete, CAdd) VALUES " _ & "('" & [txtID] & "', '" & [txtfrmUser] & "','" & [chkOpenUser] & " ','" & [chkCViewUser] & "','" & [chkEditUser] & "','" & [chkCdeleteUser] & "','" & [chkCAddUser] & "');" 'MsgBox "تم الحفظ بنجاح", vbMsgBoxRight + vbMsgBoxRtlReading, "رسالة تأكيد" End If End Sub هذا من أجل نموج واحد فقط و لو اتبعت هذا النمط فان الكود سيكون كبيرا جدا هل من أفكار من أجل كود فعال وتجنب التكرار رابط الملف على موقع الخليج https://gulfsup.com/c5d091x آآآآآآآآآآآآآآآآآآآآسف على الإطالة بارك الله فيكم وفي علمكم
  2. السلام عليكم ورحمة الله تعالى وبركاته قمت بإضافة حقل جديد في الجدول tblHasAccess وأسميته CView أما الكود في الدالة أصبح كالتالي Public Function UserAccess(FrmName As Form) As Boolean If (Nz(DLookup("COpen", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then MsgBox "لا تملك الصلاحيات اللازمة، يرجى الإتصال بالمسؤول", _ vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "دخول غير مصرح !" DoCmd.Close acForm, FrmName.Name ElseIf (Nz(DLookup("CView", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then FrmName.AllowAdditions = False FrmName.AllowEdits = False FrmName.AllowDeletions = False ElseIf (Nz(DLookup("CEdit", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then FrmName.AllowEdits = False ElseIf (Nz(DLookup("Cdelete", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then FrmName.AllowDeletions = False ElseIf (Nz(DLookup("CAdd", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then FrmName.AllowAdditions = False End If End Function أنا الآن بصدد إضافة نموذج ذو واجهة بسيطة يمكن من خلاله توزيع مختلف الصلاحيات على المستخدمين أي أفكار
  3. قمت بتعديل الكود في الدالة إلى Public Function UserAccess(FrmName As Form) As Boolean If (Nz(DLookup("COpen", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then FrmName.AllowAdditions = False FrmName.AllowEdits = False FrmName.AllowDeletions = False ElseIf (Nz(DLookup("CEdit", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then FrmName.AllowEdits = False ElseIf (Nz(DLookup("Cdelete", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then FrmName.AllowDeletions = False ElseIf (Nz(DLookup("CAdd", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FrmName.Name & "'"), False)) = False Then FrmName.AllowAdditions = False End If وفي الحدث "Load" للنموذج المعني وضعت الكود التالي Private Sub Form_Load() On Error Resume Next Call Globals.UserAccess(Me) End Sub الكود يشتغل تمام اريد كود يمنع المستخدم من الدخول إلى نموذج معين إذا لم تكن لديه الصلاحية اللازمة مع رسالة تبين له ذلك
  4. السلام عليكم ورحمة الله تعالى وبركاته قمت بإضافة function ووضعت الكود التالي داخله Public Function UserAccess(FormName As String) As Boolean If (Nz(DLookup("COpen", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FormName & "'"), False)) Then AllowAdditions = False AllowEdits = False AllowDeletions = False ElseIf (Nz(DLookup("CEdit", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FormName & "'"), False)) Then AllowAdditions = False ElseIf (Nz(DLookup("Cdelete", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FormName & "'"), False)) Then AllowDeletions = False ElseIf (Nz(DLookup("CAdd", "tblHasAccess", "UserID=" & TempVars("EmployeeType") & " AND FormName='" & FormName & "'"), False)) Then AllowAdditions = False End If End Function في النموذج login قمت بإضافة المتغير TempVars("EmployeeType") = rs!ID.Value لحفظ رقم المستخدم الذي سجل الدخول وبدأت التجريب مع النموذجUser في الحدث عند الفتح وضعت الكود التالي Private Sub Form_Load() On Error Resume Next If Globals.UserAccess(Me.Name) = False Then MsgBox "لا تملك الصلاحيات اللازمة، يرجى الإتصال بالمسؤول", _ vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "دخول غير مصرح !" DoCmd.Close acForm, Me.Name Else DoCmd.GoToRecord , , acNewRec End If End Sub المشكلة عندي أن رسالة لا تملك الصلاحيات اللازمة يرجى الاتصال بالمسؤول دائما ما تظهر سواء كان يملك الصلاحية أو لم يملكها لا أدري أين أخطأت في الكود رابط على موقع الخليج https://gulfsup.com/a94cb4x School certificate.rar
  5. لقد فعلت أخونا الكريم لكن للأسف ليست نفس الفكرة التي في الفديو مما أعجبني في الفديو هو االسهولة والفعالية وواجهة معبرة جدا
  6. السلام عليكم ورحمة الله تعالى وبركاته لقد بحثت كثيرا عن طرق إضافة صلاحيات المستخدمين حتى وجدت هذا الفديو هل من أحد يستطيع تطبيق هذه الفكرة وهل يوجد ما هو أفضل منها بارك الله فيكم وفي علمكم ورفع قدرك في الدارين School certificate .rar
  7. السلام عليكم ورحمة الله تعالى وبركاته عندي نموذج يقوم بعملية البحث كل شيء يشتغل تمام إلا رقم التسجيل ونوعه رقمي و تاريخ الميلاد ونوعه تاريخ دائما ما تأتني الرسالة التالية هل من حل لهذه المشكلة بارك الله فيكم وفي علمكم School certificate2003.rar
  8. مشكوووووووووور أخونا الكريم صادفتني مشكلة في وضعية Print Preview تأتني هذه الرسالة هل من حل بارك الله فيك آآآآآآسف على الازعاج قمت بتغيير الكود من الحدث Private Sub Report_Load() Me.RecordSource = Form_Print.StudentInfoSubForm.Form.RecordSource End Sub إلى Private Sub Report_Open(Cancel As Integer) Me.RecordSource = Form_Print.StudentInfoSubForm.Form.RecordSource End Sub تمت العملية بنجاح
  9. السلام عليكم ورحمة الله تعالى وبركاته عندي نموذج يحتوي على نموذج فرعي أريد طباعة المعلومات التي تظهر في النموذج الفرعي فقط بارك الله فيكم وفي علمكم School certificate 2003.rar
  10. مشكور أخونا الكريم جعفر من قبل لم أكن أكتب شيء في الجدول الفرعي لماذا لم يتم التحديث مباشرة
  11. لقد تحالفوا ضدي Forms!frmPaint!subRealisation.Requery Forms!frmPaint!subRealisation!txtProject.Requery لم ينفع أخي الكريم عندما غيرت إلى أسماء الحقول Project;Repères;LaDate الجدول الفرعي لا يأخذ أي قيمة
  12. مشكووووووووووور أخونا جعفر على اهتمامك لكن أنا أريد سجل واحد فقط وعند حذف الكود تظهر جميع السجلات
  13. السلام عليكم ورحمة الله تعالى وبركاته أريد عمل فلتر للنموذج الفرعي من خلال مربع تحرير وسرد txtProject في النموذج الرئيسي الفكرة كالتالي أريد أن يظهر في النموذج الفرعي فقط السجل الذي يتم تقيده في النموذج الرئيسي لذا قمت بالتالي وأضفت الكود ليقوم بعمل الفلتر Private Sub txtProject_AfterUpdate() If IsNull(Me.txtProject) Then Me.subRealisation.Form.Filter = "" Me.subRealisation.Form.FilterOn = False Else Me.subRealisation.Form.Filter = "[Project]= '" & Me.txtProject & "'" Me.subRealisation.Form.FilterOn = True End If End Sub لكن تأتني الرسالة التالية هل من حل بارك الله فيكم وأين أخطأت بالضبط في الكود بارك الله في علمكم وزادكم من فضله Test 2003.zip
  14. مشكوووووووور مشرفنا الغالي أبو خليل إذا ممكن مثال صغير ثم هل ممكن إدخال عدة قطع مرة واحدة بتاريخ محدد آآآآآآآآآآآآآآآآآسف على كثرة طلباتي بارك الله فيك وفي علمك
  15. مشكوووور مشرفنا الغالي أبو خليل آآآآآآآآآآآآسف على أتعابك معنا 01/ بخصوص الجدول tblProjectExp حيث يتم استيراد بياناته من ملف اكسيل حيث جميع الحقول في أصلية ماعدا NumberPeinture قمت بإضافته حتى يتم تسجيل فيه عدد القطع المصنعة وقيمته الابتدائية 0 وحتى لا تتجاوز قيمته الحقل Quantité الذي يحوي القيمة الكلية لكل قطعة (Repère) 02/ بخصوص الجدول tblRealisation جميع العمليات يتم حفظها فيه بدون استثناء 03/ طريقة العمل يتم تحديث الحقل NumberPeinture في الجدول tblProjectExp إذا كانت قيمة مربع النص (تم)= F "نهائي" حيث يتم إضافة قيمة مربع النص (العدد) إلى القيمة الموجودة سابقا في NumberPeinture في الجدول tblProjectExp من عيوب الطريقة القديمة أنها لا تسمح بتسجيل أكثر من قطعة واحدة في نفس الوقت الذي أريده هو تسجيل عدة قطع دفعة واحدة سأسجل فيديو وأضعه حتى تتضح طريقة عمل البرنامج
  16. مشكووووووووور مشرفنا الغالي أبو خليل أولا هذا رابط الفيديو الذي تكلمت عنه سابقا https://www.youtube.com/watch?v=Y2WirS72PlA&feature=youtu.be أما فيما بخص طريقة العمال فهذه هي الواجهة الرئيسة للبرنامج حيث يتم تسجيل البيانات في الجدول tblRealisation وعندما تكون القيمة في مربع النص تم =F يتم إضافة العدد إلى القيمة "NumberPeinture " في الجدول tblProjectExp من عيوب هذه الطريقة أنها تقوم بتسجيل كل قطعة على حدة أما الطريقة التي في الفيديو تقوم بتسجيل عدة قطع دفعة واحدة "أعلم أني سأقوم بكثير من التغيرات لكن إن كانت النتيجة جيدة لا بأس" طريقة الدخول يجب ان تكون كلمة السر مخفية رابط البرنامج New folder.zip - 13.1 MB
  17. مشكووووووووووور مشرفنا الغالي أبو خليل فكرتي مقتبسة من برنامج اسمه STRUMIS ربما غدا أضع فيديو يوضح الطريقة حيث يتم تحديد السجلات المراد التغيير عليها وبالضغط على زر تحريك يتم انبثاق شاشة جديدة تحتوي فقط القيم التي تما تحديدها سابقا بعد ذلك يمكن للمستعمل اختيار الكمية التي تم تصنيعها ثم حفظ لهذا أنا أريد نسخ هذه السجلات إلى جدول جديد TblTempSave يتم فيه كتابة القيمة NumberPeinture وبعد ذلك يتم الحفظ في الجدول tblRealisation ويتم تحديث القيمة NumberPeinture في الجدول tblProjectExp وحذف السجلات التي في الجدول TblTempSave لا أدري إن كان تفكيري منطقي لكن هذه هي الفكرة العامة لحد الساعة أي آراء أنا في الاستماع
  18. السلام عليكم ورحمة الله تعالى وبركاته ما هي أفضل طريقة لنسخ السجلات المحددة في النموذج الفرعي إلى جدول آخر TblTempSave وجدت كود من خلال البحث لكن لم أستطع التعديل عليه رابط الكود:http://access.mvps.org/access/forms/frm0033.htm '************* Code Start ************** ' This code was originally written by Dev Ashish. ' It is not to be altered or distributed, ' except as part of an application. ' You are free to use it in any application, ' provided the copyright notice is left unchanged. ' ' Code Courtesy of ' Dev Ashish ' Private Sub Form_Timer() Dim i As Long Dim strSQL As String Dim loqd As QueryDef If Me.SelHeight = 0 Or mfPrint Then Exit Sub strSQL = "Select * from [" & Me.RecordSource _ & "] Where " With Me.RecordsetClone .MoveFirst .Move Me.SelTop - 1 For i = 1 To Me.SelHeight strSQL = strSQL & "ProductID = " & _ ![ProductID] & _ " or " .MoveNext Next i strSQL = Left$(strSQL, Len(strSQL) - 3) If MsgBox("Are you ready to print now?", _ vbQuestion + vbYesNo, _ "Please Confirm...") = vbYes Then Set loqd = CurrentDb.QueryDefs("qryProducts") loqd.SQL = strSQL loqd.Close 'DoCmd.OpenReport "SomeReport", acViewPreview mfPrint = True End If End With Set loqd = Nothing End Sub '**************** Code End ***************** بارك الله فيكم وفي علمكم Access Database2003UP.zip
  19. مشكوووووووووووور مشرفنا الغالي أبو خليل أنا أيضا أريد ظهور السجلات من الجدول tblProjectExp إذا كانت قيمة كل من Quantité NumberPeinture غير متساوية "الفكرة كالتالي الجدول tblProjectExp يتم وضع فيه المشاريع الجديدة بالكمية الكلية Quantité و NumberPeinture قيمته صفر ثم أي عمل يتم ،يتم تسجيله في الجدول tblRealisation مع تحديث قيمة NumberPeinture في الجدول tblProjectExp حتى تتساوى القيمتان Quantité NumberPeinture لذلك كله أريد فصل السجلات بالقيمة المتبقية فقط " أرجوا أن تكون الفكرة وصلت آآآآآآآآآآآسف على الاطالة بارك الله فيكم وفي علمكم
  20. السلام عليكم ورحمة الله تعالى وبركاته أريد بناء استعلام من خلال جدولين حيث يقوم بعرض السجلات الغير متطابقة بشرط معين إذا كان Project=N°BS و Repére=Repéres و [tblProjectExp.Quantité]-[tblProjectExp.NumberPeinture]>0 في المثال الذي أرفقته في الجدول tblProjectExp Project=263 Repére:MAR1 Quantité=32 وفي الجدول tblRealisation Project=263 Repére:MAR1 NumberPeinture=10 أريد في الاستعلام أن يظهر Project=263 Repére:MAR1 Quantité=22 أرجوا أن يكون الإشكال واضح بارك الله فيكم وفي علمكم Access Database2003.zip
×
×
  • اضف...

Important Information