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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    408

كل منشورات العضو jjafferr

  1. حياك الله وطريقة اخرى لحل الموضوع: http://www.officena.net/ib/topic/64219-كيف-يمكننى-انشاء-وحدة-نمطية-أريد-أن-أتعلم-كل-شئ-عن-الوحدات-النمطية/?do=findComment&comment=421978 جعفر
  2. الى هنا والحديث كله عن API ، ولكن استخدام الوحدات النمطية بشكل يومي يتعدى هذه المعلومة ، فمعظم برامجنا تحتاج الى حساب او معادلات او ... ، فهنا يأتي الوحدة النمطية ، وبالذات عند مناداتها من الاستعلام (او النموذج او التقرير)، ففي الاستعلام قد تكون محتاج الى اجراء عملية حسابية لحقل معين ، وقد تكون خطوات هذه العملية كثيرة ، ولا يمكنك عملها في سطر واحد في الاستعلام ، مثلا: الحقل items في الجدول tbl_AHF يحتوي على 3 معلومات مكررة وهي A, H, F نريد ان نقسم الحقل qty على عدد معين (يعتمد على قيمة الحقل items) ، نقسم qty على 7 ، اذا كانت قيمة items تساوي A ، نقسم qty على 6 ، اذا كانت قيمة items تساوي H ، نقسم qty على 5 ، اذا كانت قيمة items تساوي F ، هنا من الصعوبة ان نضع كود العملية كلها في الاستعلام في سطر واحد ، واذا وضعناه ، فلن نستطيع تعديله بسهولة لاحقا ، لأنه سيكون معقدا ، فالطريقة المثلى هنا ، هي عمل وحدة نمطية ، وارسال قيم الحقول items , qty اليها ، وعمل الكود بها ، واسترجاع النتائج منها ، الوحدة النمطية ستكون هكذا: Function Get_Values(i, q) 'i = items 'q = qty If i = "A" Then Get_Values = q / 7 ElseIf i = "H" Then Get_Values = q / 6 ElseIf i = "F" Then Get_Values = q / 5 End If End Function . والاستعلام يكون بهذه الطريقة: . والنتيجة: . وهنا نلاحظ من النتيجة ان تنسيقها للجهة اليسار ، مما يعني ان النتيجة نص وليست رقم ، لذا نرجع للوحدة النمطية (ودون المساس بالاستعلام) ونجري عليها التعديل المطلوب ، وبكل سهولة ، لتغيير النتيجة من نص الى رقم ، وتصبح الوحدة النمطية: Function Get_Values(i, q) As Double 'i = items 'q = qty If i = "A" Then Get_Values = q / 7 ElseIf i = "H" Then Get_Values = q / 6 ElseIf i = "F" Then Get_Values = q / 5 End If End Function . والنتيجة جعفر 258.modulesANDcommands.mdb.zip
  3. شكرا أخي الاستاذ رمهان على هذا الشرح والان الى الجانب العملي لا تستطيع ان تنادي هذه الوحدات بالطرق التقليدية ، وكل لغة (مثل VB, VBA, C++, ...) لها طريقتها الخاصة في مناداة هذه الوحدات ، وبالنسبة الى اكسس ، فالرابط التالي يعطينا امثلة في كيفية استخدامها: http://access.mvps.org/access/index.html وملك الوحدات النمطية وبالذات للرسومات في الاكسس: http://lebans.com/ جعفر
  4. تفضل الظاهر انك ما شفت الرابط اللي وضعته لك التقرير لا يحترم فرز الاستعلام ،والطريقة لعمل الفرز هي: . والنتيجة جعفر 257.الرصيد.accdb.zip
  5. حياك الله أخوي عبدالرحمن
  6. ومشاركة لأخي رمهان ، اليك الرابط التالي في شرحي لفرز التقرير: http://www.officena.net/ib/topic/63319-التسلسل-التصاعدي-لحقل-في-تقرير-اكسيس/#comment-411276 جعفر
  7. وعليكم السلام أختي احذفي الكود من حدث التحميل ، اعملي حدث الحالي Current ، واوضعي الكود هناك (وبدون تغيير في الكود) جعفر
  8. وعليكم السلام المشكلة عندك في الشرط في الاستعلام klm . فالشرط يأخذ قيمته من الحقل mol في النموذج moaa ، فالنموذج moaa عندما يكون مفتوحا مباشرة ، فالاستعلام يعمل ، ولكن عندما يكون : . النموذج moaa داخل النموذج mm ، فهنا تحدث المشكلة ، فالشرط في الاستعلام في هذه الحالة يجب ان يتغير الى Forms!mm!moaa!mol (هاي ماحسبنا لها حساب ) لذلك ، واذا اردنا التقرير يُفتح من كل النماذج ، فطريقتي هي: 1. نحذف الشرط من الاستعلام: . 2. عملت زر جديد في النموذج: . وكود فتح التقرير هو: Private Sub cmd_Print_Preview_entema_Click() If Len(Me.mol & "") = 0 Then MsgBox "Please Select a name first" Exit Sub Else DoCmd.OpenReport "entema", acViewPreview, , "[name]='" & Me.mol & "'" End If End Sub جعفر 255.saa.accdb.zip
  9. وعليكم السلام الافصل ان تعمل جدول جديد ، تضع فيه حقلين: الاسم ، والقيمة للقسمة ، ثم في الاستعلام تربط الجدولين بواسطة حقل الاسم ، هكذا: الجدول: . الاستعلام: . والنتيجة: جعفر 254.Test.accdb.zip
  10. بس بالطريقة هذه يا أستاذ علي ، أنت حكمت أن البرنامج لا يمكن إستخدامه إلا على الاكسس 2013 فما أعلى :-) جعفر
  11. وش هالكلام أستاذنا الفاضل رمهان (طبعا بعد الحمدلله على السلامه) كنت اسرح وامرح على كيفي ، والكل كان يظن اني عبقري ، وبكود سطر منك كشفتني جعفر
  12. تفضل جرب الاستعلام: . والنتيجة: . جعفر 253.TestMd.accdb.zip
  13. تفضل . والنتيجة: . وفي الحدث الحالي على النموذج الرئيسي ، هذا الكود يقوم بالعمل: Private Sub Form_Current() 'N = Negative 'P = Positive Dim rst As DAO.Recordset Set rst = Me.تابع4.Form.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount N = 0 P = 0 For i = 1 To RC If rst!الرصيد < 0 Then N = N + Nz(rst!الرصيد, 0) Else P = P + Nz(rst!الرصيد, 0) End If rst.MoveNext Next i rst.Close: Set rst = Nothing End Sub جعفر 251.الرصيد.accdb.zip
  14. وعليكم السلام التنسيق الشرطي = 3 الوان + اللون الاصلي للحقل = 4 الوان البديل اللي ممكن اقترحه هو عدم تلوين الحقل ، وانما جنب الحقل خلي حقلين صغيرين للتلوين فقط (3 الوان لكل حقل) مجرد اقتراح جعفر والطريقة الاخرى هي تخزين الوان (صور) في قاعدة البيانات ، وهذا الرابط (من صديقي القديم نلسون) به نموذج ومثال: http://www.thenelson.name/ImbededImageDemo.zip جعفر
  15. الروابط فيها معلومات ، وبدل ما تبدأ من الصفر ، شارك في الرابطين وواصل من هناك :-)
  16. تفضل الظاهر يا بيه انك عندك حساسية من تسمية الملفات جعفر 249.تاريخ اخر معاملة.accdb.zip
  17. وعليكم السلام انت وضعت المعادلة في حقل النموذج ، فعليه ، فان اكسس لا يعرف بقية القيم ، لان كل قيمة تُحسب على حدة حذفت المعادلة من الحقل ، وادخاتها في استعلام النموذج: . وفي النموذج ، جعلت حقل الرصيد يأخذ قيمته من الاستعلام: . والان اصبح بالامكان الفرز: . جعفر 248.السائل_لم_يعطيني_اسم.accdb.zip
  18. بكرة الصباح ان شاء الله اعدل في الوحدة النمطية ، واشوف النتائج جعفر
  19. شكرا لك استاذ هاني بالفعل عمل الدالة Round في الاكسل تختلف عن الاكسس واذا اردنا عملها في الاكسس ، فستكون كما شرحت: جعفر
  20. اكتب المعادلة هنا لوسمحت ، او ارفق ملف الاكسل جعفر طريقة رفعك للملف صحيحة
  21. حياك الله أخي الاستاذ هاني . ممكن تنورنا بهذه المعلومة ، بارفاق ملف الاكسل لوسمحت جعفر
  22. شكرا على مشاركتك استاذ علي ، فانت تشاركني الرأي أخي أبوعارف: . اذا تسمح لي اوضح لك كيف وصل الرقم 250.904998 الى ما اشرت عليه (كما هو فهمي لتوضيح الاخ هاني): الرقم الاصلي 250.904998 ، تقريبه الى 3 خانات ، فيصبح 250.905 الان الرقم المراد تقريبه هو 250.905 ، تقريبه خانتين ، فيصبح 250.91 جعفر
  23. وعليكم السلام أخي ابوعارف . ولكن الاخ هاني قال: . وهذا لا يتماشى مع مفهومك اللي انا اعتقده هو ، ان الاخ هاني يريد ان يبدأ التقريب من 4 خانات (مثلا) ، ثم يستخدم نتيجة التقريب ، ويقربه الى 3 خانات ، ثم يستخدم التقريب ، ويقربه الى خانتين !! نعم ، يمكنه عمل ما يشاء في برنامجه (خصوصا اننا لا نعرف ماهية برنامجه) جعفر
×
×
  • اضف...

Important Information