اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

نجوم المشاركات

  1. د.كاف يار

    د.كاف يار

    الخبراء


    • نقاط

      11

    • Posts

      1,681


  2. حسين مامون

    حسين مامون

    الخبراء


    • نقاط

      5

    • Posts

      1,284


  3. محمد أبوعبدالله

    • نقاط

      4

    • Posts

      1,998


  4. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      3

    • Posts

      9,814


Popular Content

Showing content with the highest reputation on 16 يون, 2021 in all areas

  1. اخوانى الاعزاء ارسل ملف الخاص بيورو 2020 مفتوح المصدر للاستفادة وللامانة هو منقول من موقع اجنبى صور اعلام المنتخبات في جدول المباريات وانتقاله بالمعادلات الى جدول المجموعات حسب ترتيب الفرق وتتغير اماكنها حسب تغير ترتيب المنتخب في مجموعته Euro 2020.xlsx
    3 points
  2. او 'Dim Foldername As String 'Foldername = "\\server\Instructions\" 'Shell "C:\WINDOWS\explorer.exe """ & Foldername & "", vbNormalFocus 'or Shell "C:\WINDOWS\explorer.exe c:\", vbNormalFocus 'Open Windows Explorer, C partition جعفر
    2 points
  3. جرب هذا التعديل و لا تنسى بأنك لم ترفق كامل المكتبة يتعين عليك نقل التعديل لبرنامج الاساسي لكي تجد النتيجة Nz(DLookUp("[nass]";[TAB_Books_X]![BookNO];"[Mno] LIKE '*" & [TAB_Books_X]![MNO] & "*' And [Hno]=" & [TAB_Books_X]![HNO]);"-") MusndWZwayid 7.accdb
    2 points
  4. خطأ في العلاقة اتفضل التعديل DATE ERROR_2.rar
    2 points
  5. الان يقبل الكسور ان شاء الله 1waterbill.rar تحياتي
    2 points
  6. السلام عليكم و رحمة الله و بركاته لدى تصفحي لأحد المواقع الأجنبية وجدت هذا المثال لشاشة رقمية تقوم بعرض الرقم بطريقة فريدة و أحببت المشاركة مع إخواني في المنتدى .. Digital Display.mdb
    1 point
  7. استخدم هذا الكود Application.FollowHyperlink "مسار المجلد او الملف"
    1 point
  8. حل ممتاز لكني للأسف ما شفته غير بعد ما خلصت تعديل اعتمدت على الفرضيات بإستخدام Select Case نوعا ما النتيجة لا بأس بها 1390.nabil2322.zip
    1 point
  9. تفضل بالنسبة لطلبك الثاني لم افهم ما تقصد بكتابة اللجنة في نفس سطر المجموع يمكنك رفع نمودج متوقع لما تريد CLASSEUR11.xlsm
    1 point
  10. بسم الله عليك اخوي حسين 🙂 في الواقع هذا افضل حل 🙂 اعمل حقل آخر ، غير حقل عرض العمود ، اسمه اسماء الاعمدة مثلا ، واكتب اسماء الاعمدة لكل جدول ( في البداية يكون الحل برمجي بعمل فاصلة بين الاعمدة ، بنفس طريقة عرض الاعمدة) ، وتنفيذها في النموذج يكون بنفس الطريقة كذلك 🙂 إعطاء المستخدم هذه الصلاحية ، تسهل عمل المبرمج ، فيكون على كيفه يرتب الاعمدة ، وبالعرض الذي يريد 🙂 جعفر
    1 point
  11. جرب المرفق Option Explicit Sub test() Dim lr Dim x Dim n, tot Application.ScreenUpdating = False lr = Cells(Rows.Count, 2).End(xlUp).Row For x = 2 To lr tot = tot + Val(Cells(x, "f")) If Val(Cells(x, 2).Offset(1)) > Val(Cells(x, 2)) Then Cells(x, 1).Offset(1).Resize(, 6).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Cells(x, "f").Offset(1).Value = tot Cells(x, "E").Offset(1).Value = "المجموع" x = x + 1 tot = 0 End If Next x Application.ScreenUpdating = True End Sub CLASSEUR11.xlsm
    1 point
  12. بارك الله فيك وأكرمك
    1 point
  13. هنا اقترح عليك تستعين بالله عز وجل ثم عملاق الأكسس الأستاذ الكبير @jjafferr لأني صرت مثل الي حضر الفريت و عجز عن صرفه هههههه اكيد بنلقى الحقل الكبير توجد عدة محاولات اخرها بأننا سوف نضطر الى اضافة عمود الاسم لكل جدول و لكن هذا آخر الحلول
    1 point
  14. لهذا لتقريب وجهات النظر اتفضل DATE ERROR.accdb
    1 point
  15. انسخ هذا السطر والصقه On Error Resume Next بعد السطر الثاني في الكود
    1 point
  16. يعجز لساني على أن أوفيك حقك ، شكراً لك على عطائك يا استاذي الفاضل د.كاف يار حسين كمال . وشكرا لجميع الاخوة الافاضل على المساعدة الدائمة لي و لي جميع اعضاء المنتدى الرائعة اتمنى من الله عز وجل أن يعطيكم الصحة والعافية.
    1 point
  17. الطريقة تفيد في ما اذا كان هدفك هو عرض البيانات فقط اما اذا اردت عرض البيانات وعند الضغط على اي سجل يظهر لك خيارات كـ تعديل او حذف او غيرها او مثلا لديك تصميم نموذج يختلف عن الثاني، فإنها تكون طريقة عاجزة تماماً أو مثلا اذا اردت ان تنادي حقول معينة يتوجب عليك بناء استعلام لكل جدول. لذلك اختصر الوقت من البداية، وقم بعمل نماذج فرعية أفضل.
    1 point
  18. هذه الطريقة جيدة نوعا ما لكنها مجهدة سوف يضطر لإنشاء عدد من النماذج مساوي لعدد الجداول و عددها تقريبا 7 او 8 جداول الفكرة لدي بإختصار أن يكون هنالك نموذج واحد فقط SubForm يتم من خلال التنقل في التبويبات انشاء عناصر جديدة داخل النموذج مع حذف العناصر السابقة ان وجدت من استعلام سابق بإختصار يكون SubForm ديناميكي و يمكن الاستغناء عن الفورم من الاساسي بحيث عند التنقل بمجرد الضعط عل التبويبة يتم انشاء نموذج جديد وفق المعطيات السبب من كل هذا ان المطور لو اراد مستقبلا اضافة عدد جديد من الجداول فلن يحتاج لإنشاء نموذج لكل جدول
    1 point
  19. 1 point
  20. طبق نفس الكلام، بالنسبة لباقي التبويبات بالنموذج. 1390.nabil2322.accdb
    1 point
  21. حسناً اخي الكريم جرب الكود التالي =DLookup("nass"; "AllData"; "[HNO] = " & [HNO] & " And [MNO] = '" & MNO & " '") MusndWZwayid 7.rar تحياتي
    1 point
  22. تفضل التعديل استاذ abouelhassan ارجو ان يكون طلبك حسب فهمي DATA14-1.rar
    1 point
  23. تستطيع اخفاء محددات السجلات اذا كانت نموذج فرعي اما اذا كانت مصدرها الجداول بشكل مباشر فلا اعتقدر انك تستطيع اخفائها اقترح عليك انك تنشئ نماذج و تجعل طريقة العرض ورقة بيانات و راح تقدر تخفي ازار التنقل بكل بساطة مثل شرح الدكتور
    1 point
  24. جرب هذا الماكرو Option Explicit Sub test() Dim x x = InputBox("حدد المدى كالنمودج هنا b1:b10") If x = "" Then Exit Sub ActiveSheet.Range(x).Select End Sub الملف t.xlsm او هذا الماكرو حيث تدخل المدى الى فقط مثلا نكتب BD120 T فقط سيحدد من BD12:DB120 Sub test() Dim x, y y = "bd12:" x = y & InputBox("ادخل المدى الى مثلا bd111") If x = "" Then Exit Sub ActiveSheet.Range(x).Select End Sub الملف t.xlsm
    1 point
  25. إن شاء الله يكون هذا هو المطلوب تم الاستغناء عن عمود اسم اليوم وذلك بتنسيق عمود التاريخ تم إضافة جدول مساعد يتم استخدامه في عملية البحث mas_Labour A.rar
    1 point
  26. نعم هذا هو المطلوب استاذ حسام لسانى يعجز عن شكرك لقد أثقلت عليك اثابك الله وسدد خطاك واعطاك حتى ترضى وحمدا لله مرة اخرى على سلامتك دمت بكل خير
    1 point
  27. تفضل اخي الكريم تم اضافة نموذج لاضافة / تعديل المستفيدين وتم اضافة تقرير بالفواتير وتم اضافة تقرير بالسداد الحالي waterbill.rar تحياتي
    1 point
  28. هل يمكننا عمل برنامج بالاكسس تستطيع ربطه بالتلفون وعند اتصالك يطالبك بادخال رقمك ( الذى يعتبر كلمة السر لك مع الاخذ بالاعتبار ان كلمة السر متغيير بمعنى يصلح لأباء الطلاب لمعرفة درجات ابنائهم كمثل المتواجد بالبنوك لمعرفة الرصيد الحسابى ) ومن ثم تستطيع أخذ الأجابة الشافية من البرنامج بواسطة الهاتف . ياريت الرد يكون بمثال لشمول المعرفة وجزاكم الله خير .
    1 point
  29. السلام عليكم تعودت أن أصمم نموذج واحد للإضافة والتعديل والحذف ، وأواجه دائما مشكلة المستخدمين للوصول إلى موظف ما ، حيث يكتب المستخدم رقم الموظف المطلوب مباشرة في خانة رقم الموظف دون أن يدرك أنه يقوم بالتعديل ولا يتذكر أن هناك وسائل بحث إما عن طريق الأكسس نفسه أو بوسيلة بحث جاهزة بالنموذج . فرأيت أنه تسهيلا للمستخدم أن يقبل منه الكتابة على رقم الموظف بحيث إذا وجد الرقم المطلوب فسيعتبره البرنامج طلب بحث ويذهب له مباشرة وإذا لم يكن موجودا فسيعتبره طلب تعديل على الرقم وسيقبل منه بعد التأكيد عليه . تحياتي . idea.zip
    1 point
  30. السلام عليكم ورحمة الله وبركاته أخواني الكرام أحببت أن أهديكم الملف المرفق وهو من عمل الأخت/ جنان وهو عبارة عن آلة حاسبة كيميائية مبسطة و هي بصدد التطوير ، أرجو الإستفادة للجميع ... بالمناسبة الواجهة بالفرنسي ،، ولكن مع تجربتها وخاصةً ممن يعرفون الرموز للمركبات الكيميائة سيكون سهلاً عليهم التعامل معها. والله يوفقكم . chemcalc.rar
    1 point
  31. هذا الموضوع جمعه أبو حمود --------------------------------- و هو لاضافة قيمة الي الجدول المبني عليه قائمة عند عدم وجودها فى الجدول الموضوع : وهذه خمس طرق للإضافة : أولاً : طريقة للإضافة الى القائمة بدون الحاجة لإظهار نموذج : 1- ضع التزام بالقائمة إلى نعم 2- في حدث عند عدم الوجود في القائمة ضع الإجراء التالي : On Error GoTo HandleErr Dim db As Database Dim strSQL As String Const فاصلة = """" strSQL = "Insert into اسم الجدول (اسم حقل بيانات القائمة في الجدول) Values " _ & "(" & فاصلة & NewData & فاصلة & ")" Set db = CurrentDb If MsgBox("هل ترغب في إضافة هذا البند إلى القائمة ؟", vbYesNo, "تسجيل بند جديد") = vbYes Then db.Execute strSQL Response = acDataErrAdded Else Response = acDataErrDisplay End If ExitHere: Exit Sub HandleErr: Select Case Err Case Else MsgBox Err & ": " & Err.Description, , "خطأ" End Select Resume ExitHere 3- حدد كلمتي "اسم الجدول" ثم غيرهما الى اسم الجدول الذي تأخذ القائمة البيانات منه ، لاحظ أنه إذا كان اسم الجدول مركب من كلمتين فأكثر فضعه بين قوسين مربعين مثال : [جدول الأسماء] . 4- حدد عبارة "اسم حقل بيانات القائمة في الجدول" واستبدلها باسم الحقل في الجدول ، انتبه اسم الحقل في الجدول الذي تأخذ القائمة البيانات منه . 5- إذا أردته أن يضيف مباشرة دون رسالة فأزل العبارة الشرطية If . ثانيا : طريقة مع فتح النموذج على سجل جديد وعند كتابة البيانات وإغلاقه من قبل المستخدم تظهر القيمة في الحقل مباشرة : في حدث عند عدم الوجود في القائمة اكتب مع تعديل الأسماء : Response = acDataErrContinue If MsgBox("البند غير موجود بالقائمة ." & vbCrLf & _ "هل ترغب في إضافته الى القائمة ؟", vbYesNo, "بند غير موجود") = vbYes Then [اسم القائمة على النموذج] = DFirst("[حقل مصدر البيانات]", "[اسم الجدول]") DoCmd.OpenForm "النموذج الذي سيتم إدخال البيانات فيه", , , , , acDialog, "gotonew" Me![اسم القائمة على النموذج].Requery [اسم القائمة على النموذج] = DLast("[حقل مصدر البيانات]", "[اسم الجدول]") DoCmd.GoToControl "اكتب الحقل الذي تود الانتقال إليه بعد إدخال البيانات في القائمة" End If في حدث عند التحميل للنموذج اكتب : If Me.OpenArgs = "gotonew" Then DoCmd.GoToRecord , , acNewRec ثالثاً : طريقة للإضافة مع إظهار النموذج والإضافة إليه تلقائيا ثم إغلاقه وكتابة الكلمة أو العبارة المضافة في الحقل والانتقال الى الحقل التالي : ملاحظة لن ترى النموذج لسرعة الإجراء . في حدث عند عدم الوجود في القائمة اكتب : If MsgBox("البند غير موجود بالقائمة ." & vbCrLf & _ "هل ترغب في إضافته الى القائمة ؟", vbYesNo, "بند غير موجود") = vbYes Then Response = acDataErrAdded DoCmd.OpenForm "اسم النموذج الذي ستضاف البيانات فيه", , , , acAdd, acDialog, NewData Else Response = acDataErrContinue End If وفي حدث عند التحميل للنموذج المذكور سابق اكتب : If Not IsNull(Me.OpenArgs) Then Me![اسم الحقل المبنيه عليه القائمة] = Me.OpenArgs DoCmd.Close End If يعيب هذه الطريقة أنك إذا كنت تفتح هذا النموذج مع تحديد OpenArgs من نموذج آخر غير النموذج الذي تم فتح هذا النموذج منه فسوف تتم إضافة القيمة التي تحملها OpenArgs تلقائيا (لغزعبارة غامضه) ولتوضيح ذلك : لنفرض أن اسم النموذج الذي فيه القائمة "نموذج الذي توجد فيه القائمة" والنموذج الذي ندخل فيه البيانات اسمه "نموذج تسجيل بيانات القائمة" لو طبقنا كل الكلام الوارد في ثالثا ستتم الإضافة بدون مشاكل ، ولكن لو كان لدينا نموذج آخر بأي اسم يحتاج هذا النموذج الى فتح "نموذج تسجيل بيانات القائمة" لأي غرض آخر غير الإضافة الى القائمة وكان يستخدم OpenArgs فالنتيجة ستتم إضافة قيمة OpenArgs إلى بيانات القائمة لأن النموذج عنده قصر نظر فلا يفرق بين النماذج أرجو أن تكون المسألة قد وضحت ، وكحل لذلك يمكنك استخدم دالة IsLoaded للتأكد من كون النموذج "نموذج الذي توجد فيه القائمة" مفتوح ، وإليك دالة Isloaded : Public Function IsLoaded(ByValstrformname As String) As Integer Const CondesignView = 0 Const ConObjectClosed = 0 IsLoaded = False If SysCmd(acSysCmdGetObjectState, acForm, strformname) <> ConObjectClosed Then If Forms(strformname).CurrentView <> CondesignView Then IsLoaded = True End If End If End Function ولمعرفة هل نموذج مفتوح أم لا اكتب : If IsLoaded("اسم النموذج المطلوب التأكد من كونه مفتوحاً") Then بقيه الإجراء ... ويعدل حدث التحميل ليكون كالتالي : If IsLoaded("اسم النموذج المطلوب التأكد من كونه مفتوحاً") Then If Not IsNull(Me.OpenArgs) Then Me![اسم الحقل المبنيه عليه القائمة] = Me.OpenArgs DoCmd.Close End If end if ملاحظة : لدي طريقة أخرى للتأكد من كون نموذج مفتوح أم لا ، وكذلك طريقة للتأكد من كون التقرير مفتوحا ، إذا رغبها أحد كتبتها . هناك تشبه الطريقة السابقة ولكن باستخدام متغير عام . رابعا : باستخدام DAO في حدث عند عدم الوجود في القائمة ضع الكود التالي : Dim db As Database Dim rst As Recordset If MsgBox("البند غير موجود بالقائمة ." & vbCrLf & _ "هل ترغب في إضافته الى القائمة ؟", vbYesNo, "بند غير موجود") = vbYes Then ' Response = acDataErrAdded Set db = Application.CurrentDb Set rst = db.OpenRecordset("اسم الجدول الذي تأخذ القائمة البيانات منه") rst.AddNew rst![اسم الحقل المبنيه عليه القائمة] = NewData rst.Update rst.Close db.Close Response = acDataErrAdded [اسم القائمة على النموذج]= DLast("[حقل بيانات القائمة في الجدول]", "[اسم الجدول]") Else Response = acDataErrContinue End If End Sub خامساً : باستخدام ADO في حدث عند عدم الوجود في القائمة اكتب If MsgBox("البند غير موجود بالقائمة ." & vbCrLf & _ "هل ترغب في إضافته الى القائمة ؟", vbYesNo, "بند غير موجود") = vbYes Then Dim rst As New ADODB.Recordset rst.Open "[جدول الأسماء]", CurrentProject.Connection, _ adOpenStatic, adLockOptimistic rst.AddNew rst![اسم الحقل المبنيه عليه القائمة] = NewData rst.Update rst.Close Response = acDataErrAdded [اسم القائمة على النموذج]= DLast("[حقل بيانات القائمة في الجدول]", "[اسم الجدول]") Else Response = acDataErrContinue End If ======================================= هذه هديه خاصة لك أخوي حارث ولا يهون الجميع : ======================================= إظهار البند التالي في قائمة منسدلة عند النقر المزدوج ضع في وحدة نمطية عامة الدالة التالية : Public Function عرض_بنود_القائمة(قائمة As ComboBox) Dim مجموع_الإدخالات As Byte, رقم_فهرس_حالي As Byte مجموع_الإدخالات = قائمة.ListCount If مجموع_الإدخالات = 0 Then DoCmd.Beep MsgBox "لايوجد أي بند مسجل في القائمة .", vbMsgBoxRight + vbMsgBoxRtlReading + vbInformation, "قائمة فارغة" Exit Function End If If قائمة.ListIndex <> -1 Then رقم_فهرس_حالي = قائمة.ListIndex End If If رقم_فهرس_حالي <> مجموع_الإدخالات And قائمة.ListIndex <> -1 Then قائمة = قائمة.ItemData(رقم_فهرس_حالي + 1) Else قائمة = قائمة.ItemData(0) End If If قائمة.ListIndex = -1 Then قائمة = قائمة.ItemData(0) End Function وضع الاستدعاء التالي لها في حدث عند النقر المزدوج للقائمة : Call عرض_بنود_القائمة(Me![اسم القائمة])
    1 point
  32. السلام عليكم ورحمة الله وبركاته أخواني الكرام الملف المرفق مثال من عمل الأستاذ العزيز/ أبو هاجر ، وهو معمول لتمثيل التواريخ المدخله بيانياً على التقرير. أثناء تفحصي له ،،، لاحظت أن ناتج الفرق بين تاريخين يعطي النتيجة ينقصها يوم واحد ، ولذا النتيجة تؤثر على خط التمثيل . فمثلاً إذا كان تاريخ البدء : 1/1/2004 وتاريخ الإنتهاء: 5/1/2004 فتطلع النتيجة 4 أيام والمفترض 5 أيام وهكذا ... فهل من متكرم يقوم بإلقاء نظره فاحصه عليه ويجد الحال ؟ ------------------------- تم حذف الملف القديم -------------------------
    1 point
  33. السلام عليكم و رحمة الله و بركاتة اخوانى من خبرتى التى ليست بكبيرة بأكسيس وجدت ان افضل طريقة لحماية قاعدة البياناتهو ليس تحويلها الى MDE او غيرها من التحويلات التى تم اختراقها الآن و بسهولة. و الطريقة المثلى هو ان تقوم بعمل ملف حماية يكون خارج قاعدة البيانات و بعدها اطرح قاعدة البيانات و اعطى الفرصة لأى فرض أن يقوم بأختراقها و فتح الكود و التعرف على كيفية التصميم و سأرفقق مثال لمحترفى أكسيس لكى يقومو بعمل اختراق لة و معرفة ما قد تك كتابتة بالكود فى حدث ( عند الفتح) كما انه لا يمكنة التعديل بها او حذف الجداول و لا الاستعلامات و لا اى من محتويات القاعدة و الشىء الوحيد الذى يمكنة قرائنة هو الآستعلام و لا يمكنة التعديل به و المثال مرفق و فى انتظار الرد و سأكتب كلمة فى النموذج frmCust_Data_Main و من سيقوم بفتح الكود يرسل الى هذة الكلمة و عن كيفية اختراقة للقاعدة و اتمنى من الله ان لا يكون هناك طريقة لذلك و اريد ان انوه ان هذا المثال ليس تحدى او تباهى او تفاخر او اى شىء من ذلك القبيل لأننى سأقوم بشرح كيفية عمل ذلك و ذلك طبعا بعد أن نتأكذ من أن هذة الطريقة هى المثلى للحماية أخوكم الصغير أيمن عمارة تلميذ و جاى اتعلم Permtions1.zip
    1 point
  34. <span style='font-family:Simplified Arabic'></span><div align="center"></div> سؤال في الالستعلام كيف يمكنني وضع شرط بحيث يحدد عدد خانات الأرقام فمثلاً: لدي قاعدة بيانات ندخل فيها اسم الزبون وأرقام الهواتف وقد خُصص لأرقام الهواتف ثلاث خانات أريد فرز الأشخاص الذين لديهم موبايل في استعلام خاص بذلك فهل بالإمكان تزويدي بالدالة التي تمكنني من تحديد عدد الخانات أي نضع شرط إذا كان رقم الهاتف 9 أرقام يظهر لنا في الاستعلام عاجل جدا جدا جدا جدا
    1 point
  35. بسمه تعالى كيف يتم الغاء تاثير الايقونات الثلاث في النموذج برمجيا minimize restore close مع الشكر مقدما
    1 point
  36. بعد محاولات استطعت اخيرا من جعل كود لتحويل التاريخ معمول على الفيجوال بيسك( وكنت قد حملته من احد المواقع ) يعمل على برنامج الاكسس ولا ادري اذا كان هذا الكود تم انزاله من قبل في هذا المنتدى ام لا ولكن قصدت الفائدة للجميع db5.zip
    1 point
  37. بسم الله الرحمن الرحيم إيه الإخوة الكرم عندي تقرير مسير رواتب أريد إن اجعل المسير يظهر في الصفحة الثانية مجموع الصفحة الأولى وفي الصفحة الثالثة مجموع الصفحة الأولى والثانية والصفحة الرابعة مجموع الصفحة الأولى والثانية والثالثة وهكذا إلى أخر صفحة ووجدت طريقة ‘هي نسخة صافي الراتب ووضعها في تفصيل مع جعلها غير مرية وفي تذيل الصفحة اعمل مربع نص بهذا الشكل[v1] = طبعة v1 هي خانة صافي الراتب الغير مرية التي تم نسخها ؛ وفي رأس الصفحة اعمل بربع نص بهذا الشكل [v]-= طبعة v هي اسم حانة صافي الراتب و b هي اسم مربعة النص الذي تم وضعه في تذيل الصفحة وهكذا يعطي مجموع الصفحة السابقة إلى ألان ممتاز ‘ وقد تم تجربة الفكرة وعمل تقرير بهي أسماء وأرقام وقد تم اظهر النتيجة بشكل جيد ؛ بس المشكلة لدى التقرر الموجود لدينا حيث أنني لا اعرف أين أضع الخانة b التي هي في تذيل الصفحة حيث أن التقرير يحتوي على 1- رأس التقرير2- رأس الصفحة 3- المسي رأس الصفحة 4- نوع الوظيفة رأس الصفحة 5- تفصيل 6- نوع الوظيفة تذيل الصفحة 7- المسي تذيل الصفحة 8- تذيل الصفحة 9- تذيل التقرير . وعند وضع الخانة b في تذيل الصفحة أنها لا تظهر في الصفحة الأولى بل تظهر في الصفحة الثانية أرجوكم المساعدة علماً أن الشخص الذي قد عمل هذا التقرير غير موجود في داخل المملكة وقد حولت الاتصال بهي عدة مرات لكن دون جدوى أرجوكم المساعدة لا أهمة الموضوع حيث أن ألف من البشر ارزقهم متوقفة على هذا التقرير فتخيل كم من الخير سوف يكتب لك إنشاء الله أخي الحبيب والسلام ختام أسف على إطالة الشرح أخوكم فرحان منطنط المسروري ahmedjnfh@hotmail.com
    1 point
  38. بسم الله الرحمن الرحيم عرض أخونا أبو عقيل مثال في الصلاحيات والترميز وعمليات المستخدمين وهو مثال قيم وأردت عرضه على الأعضاء مع التعرض بالشرح لموضوع الصلاحيات وهذا الشرح مجرد اجتهاد فقط فلست أنا من صنع المثال وأتمنى أن أكون عند حسن ظنكم فلست خبيراً كما تظنون ولكني طالب علم أجتهد فقط لا غير كما أرجوا أن يسامحنى أبو عقيل أعاده الله إلينا سالماً على هذا الشرح السيئ لمثال عبقري من أمثلته . ========================================== تعتمد طريقة أبو عقيل في الصلاحيات على طريقة الخيارات للمستخدمين في تحديد من المتاح أو المسموح له فتح النماذج أو التقارير إذا الصلاحيات هي فتح النموذج أو التقرير وبكلامنا العادي أننا إذا صنعنا جدول يتم تحديثه كلما تم فتح البرنامج ليكون موجود به اسم المستخدم الحالي فقط وكلمة السر الخاصة به مع مستويات الصلاحيات له ، وعند فتح أي نموذج يذهب البرنامج إلى الجدول ثم يختبر خلية الصلاحية فإذا كانت بنعم ( أو 1) يفتح النموذج وإذا كانت ( لا أو 2) يغلق النموذج مع رسالة بها اسم المستخدم الحالي تقوله له ليس من حقك فتح هذه الشاشة . ومن الأفضل استيراد الكائنات الخاصة بالصلاحيات ثم نسخ الأكواد اللازمة لعملها على النماذج ولكننا سنبدأ من البداية حتى نتعرف على كيفية بنائها وكيفية تطويرها وملاءمتها لبرامجنا . وفي مثال أخونا أبو عقيل كانت الأدوات كالتالي مع أشكال توضح خصائص الحقول أ- الجداول 1- جدول المستخدمين ( tb5) وهو الذي سيحتوي على معلومات جميع المستخدمين ويحتوي على * حقل Name لاسم المستخدم مفتاح يمنع تكرار أسماء المستخدمين * حقل rmz لرمز المستخدم والغرض الأساسي منه تمييز المدير أو مالك البرنامج بالرمز ( mas ) ليتم تمييزه عن غيره من المستخدمين وهذا التمييز هو الذي سيستخدم لاحقاً في فتح نموذج الصلاحيات نفسه وهو حقل لا يسمح بالتكرار حتى يكون المسئول واحد فقط . * حقل password وهو الخاص بالرمز السري للمستخدم أو الرقم السري وقناع الإدخال يكون password ليكون نجوم ولا يسمح بالتكرار . *بعد ذلك تأتي حقول المستويات ( levels ) وهذا الحقل عبارة عن قائمة من عمودين عمود يحتوي على صفين بهما القيمين (1 ،2) والعمود الآخر قيمتين مناظرتين ( نعم ولا ) وتم تغيير خصائص هذا الحقل ليظهر كعمود واحد به الأربع قيم أسفل بعضهم ويتم تخزين القيمة 1 أو 2 في الحقل وسبب الاختيار لخصائص هذا الحقل بهذا الشكل لأنه سيتم إدخال قيم هذا الحقل من نموذج الصلاحيات وستكون القيم الظاهرة في النموذج هي نعم أولا بينما يتم تخزين القيم في الحقل ب 1مناظره لنعم أو 2 مناظره لـ لا وهكذا حتى المستوى الرابع عشر كما في مثالنا ... أما البيانات التي ستخزن في هذا الجدول فهي اسم المستخدم ورمزه ورقمه السري وصلاحياته والتي سنقرنها بنموذج أو أكثر مقابل لكل level بمعنى أننا لو اعتبرنا أن لدينا نموذج form1 سنقرنه بـ level1 فإذا كانت قيمة حقل level1 =1 سنسمح بفتح النموذج أما إذا كانت قيمته 2 سيتم إغلاق النموذج . الشخص الذي سيوضع رمزه ( حسب مثال أبو عقيل ) = mas هو الذي سيكون له الصلاحيات الكاملة بغض النظر عن اسمه أو كلمة السر الخاصة به . وسنقوم بتغيير جميع مستويات الصلاحية الخاصة به في الجدول إلى الرقم 1 2- جدول fbi وهذا الجدول به نفس الحقول السابقة بحيث أنك تستطيع نسخ الجدول السابق مع تغيير اسمه ثم حذف حقل password منه ولكن أخونا أبو عقيل أضاف حقيلن آخرين وهما date و Time ليستخدمهما في تاريخ وتوقيت الحذف والإضافة والتعديل في البيانات وأعتقد أن هذين الحلقين ليس لهما علاقة مباشرة بموضوع الصلاحيات . هذا الجدول لن يتدخل أحد في كتابة بياناته بل سيقوم البرنامج بتحديث بياناته بناءاً على اسم المستخدم الذي سندخله في شاشة الدخول للبرنامج فعندما نكتب اسم المستخدم وكلمة مروره الصحيحة سيقوم البرنامج بتشغيل استعلام تحديث يأخذ بيانات المستخدم كاملة ويحدث بها سجل جدول fbi وكلما تغير المستخدم تغيرت بيانات سجل الجدول fbi حسب المستخدم الجديد . يليه الجزء الثاني وقد تم تجزأة الموضوع لكثرة عدد الصور
    1 point
×
×
  • اضف...

Important Information