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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. السلام عليكم 🙂 اليك هذا المرفق ، فيه مثالين: المثال الاول: عندنا جدولين ، tbl_Seq و tbl_New_Seq ، فيهم نفس البيانات ، نريد نأخذ اكبر قيمة من الحقل Seq في tbl_Seq ، ثم نستخدم هذه القيمة ، وندخل بقية البيانات في الجدول tbl_New_Seq ، المثال الثاني: نفس المثال الاول ، ولكن العمل على جدول واحد فقط ، tbl_Sections . المشكلة في لما تستعمل استعلام المجاميع ، والامر Max للحقل Seq ، لتحصل على اعلى قيمة ، ثم تربطه بالجدول الآخر ، فيصبح استعلامك (نموذجك) غير قابل للتعديل ، بينما اذا استعملنا نفس استعلام المجاميع اعلاه ، بالامر Max للحقل Seq ، ولكن استعملناه كإستعلام فرعي ، فيصبح الاستعلام (النموذج) قابل للتعديل 🙂 اترك لك المجال تفحص المثال الاول ونتائجه ، وهنا اوضح عمل المثال الثاني: فنرى اني عملت استعلام فرعي للقيمة Seq : . ونتيجة الاستعلام ، يمكن تعديلها ، للحقل New_Section : . وللتجربة ، اخذ الاستعلام الفرعي اعلاه ، وضعه في استعلام مستقل ، ثم اربط الاستعلام بالجدول ، فلن تحصل على نتيجة صحيحة !! جعفر 1167.SubQuery.mdb.zip
  2. السلام عليكم اخي صالح 🙂 شو اللي جاب هذا الموضوع على بالك بعد حوالي سنتين جعفر
  3. السلام عليكم 🙂 هناك الكثير من الميزات/الاوامر التي يعطينا برنامج الاكسس ، والتي يمكن ان نعمل لها بديل ، ولكن يكون هناك فرق في سرعة تنفيذ كودنا مقارنة مع الكود الاصل من الاكسس !! مثل القائمة المختصرة التي تظهر لنا بالنقر على زر الفأرة الايمن ، والتي بها يمكننا ان نستغني عن الكثير الاوامر ، مثل الفرز والتصفية بأنواعه ، ولكن وللأسف الشديد ، فأنا ارى ان 99.99% من البرامج ، يتم حذف هذه القائمة وعدم تفعيلها ، والسبب ان المستخدم يستطيع ان يدخل في تصميم النموذج من خلال هذه الاوامر(في الدائرة الحمراء) : و . ويضطر المبرمج ان يعوض بقية الاوامر في القائمة ، بمجموعة من الازرار ، او بطرق مختلفة !! ----------------------------------------------------------------------------------------------- الاكسس يسمح لنا ان نعمل قوائم مختصرة Shortcut Menu والتابعة لمجموعة CommandBars ، حسب احتياجنا ، ونختار ما نضعه فيها 🙂 هناك 3 انواع من هذه القوائم : الثابته ، والمؤقته ، والمؤقته التي تحتاج الى كود. الثابته: وهي التي عندما نعملها ، تصبح مستقله عن الكود ، وتُحفظ وتبقى في قاعدة البيانات بعد إغلاقها ، ويمكننا ان نستوردها في قاعدة بيانات اخرى عندما نستورد احد/جميع كائنات قاعدة البيانات الآخرى ، بإستخدام : . ونختارها في النموذج : . او التقرير : . هذا مثال لعمل الكود الاساس لعمل قائمة قطع/نسخ/لصق : Option Compare Database Option Explicit Dim cmb As Object Dim cmbCtrl As Object Dim cmbName As String ' ' ' to use: ' Dim cbr As Commandbar ' Dim cbrButton as CommandbarControl ' ' we have to select in the References: ' Microsoft Office xx.x Object Library ' Public Function SCM_Copy(Optional DeleteMe As Boolean = False) On Error Resume Next 'If menu with same name exists delete cmbName = "cmb_Copy" CommandBars(cmbName).Delete If DeleteMe = True Then Exit Function If Err.Number <> 0 Then Err.Clear Set cmb = CommandBars.Add(cmbName, msoBarPopup, False, False) With cmb .Controls.Add msoControlButton, 21, , , False ' Cut .Controls.Add msoControlButton, 19, , , False ' Copy .Controls.Add msoControlButton, 22, , , False ' Paste End With Set cmb = Nothing End Function . وشرح الكود : 1. اسم القائمة المختصرة ، والتي سوف نختارها في النموذج او التقرير ، 2. هذه المجموعة الاساس منبثقة Popup ، 3. بينما هذه المجموعات عبارة عن ازرار Buttons ، وقد تكون قائمة منسدلة Combobox ، او نص Edit نُدخل فيه قيمة معينة للتصفية مثلا ، 4. هل هذه القائمة مؤقته ؟ False معناها ثابته وتُحفظ في قاعدة البيانات ، بينما True معناها انها مؤقته وتعمل لما ننادي الوحدة النمطية/الكود ، 5. هذه ارقام كل امر ، وملف الاكسل المرفق من مايكروسوفت فيه جدول يضم جميع ارقام الاوامر للاكسس 2010 () ، 6. اذا اردنا ان نحذف هذه القائمة ، فننادي الوحدة النمطية بضم True في امر المناداة المؤقته: ونستعمل True في مكان الرقم 4 اعلاه. وهي التي عندما نعملها ، لا تصبح مستقله عن الكود ، ولا تبقى في قاعدة البيانات بعد إغلاقها ، ولا يمكننا ان نستوردها في قاعدة بيانات اخرى عندما نستورد احد/جميع كائنات قاعدة البيانات الآخرى (كما هو الحال مع القائمة الثابته) ، ويجب ان نستخدم "حدث فتح" النموذج/التقرير لعملها واستخدامها في النموذج/التقرير ، و "حدث اغلاق" النموذج/التقرير لحذفها ، طيب ، خلونا نعمل هذه القائمة : Public Function SCM_Copy_Sort(Optional DeleteMe As Boolean = False) On Error Resume Next 'If menu with same name exists delete cmbName = "cmb_Copy_Sort" CommandBars(cmbName).Delete If Err.Number <> 0 Then Err.Clear Set cmb = CommandBars.Add(cmbName, msoBarPopup, False, False) With cmb Set cmbCtrl = .Controls.Add(msoControlButton, 21, , , False) ' Cut cmbCtrl.Caption = "Cut..." cmbCtrl.FaceId = 21 Set cmbCtrl = .Controls.Add(msoControlButton, 19, , , False) ' Copy cmbCtrl.Caption = "Copy..." cmbCtrl.FaceId = 19 Set cmbCtrl = .Controls.Add(msoControlButton, 22, , , False) ' Paste cmbCtrl.Caption = "Paste..." cmbCtrl.FaceId = 22 Set cmbCtrl = .Controls.Add(msoControlButton, 210, , , False) 'Sort Ascending cmbCtrl.BeginGroup = True cmbCtrl.Caption = "فرز تصاعدي..." cmbCtrl.FaceId = 210 Set cmbCtrl = .Controls.Add(msoControlButton, 211, , , False) 'Sort Decending cmbCtrl.Caption = "فرز تنازلي..." cmbCtrl.FaceId = 211 End With Set cmb = Nothing End Function . وشرح الكود: احنا توسعنا في الكود الاساسي ، واضفنا له : 1. تسمية اختيارية غير الافتراضية ، لاحظ في الصورة اعلاه اني استعملت الانجليزي والعربي ، 3. وهو لعمل خط فاصل في الصورة بين مجموعة قطع/نسخ/لصق ومجموعة فرز تصاعدي/تنازلي ، . 2. ممكن ان نبدل الصورة الافتراضية التي تيجي مع الرقم ، بتبديل هذا الرقم (لاحظ صورة الاسهم للتصاعدي/التنازلي) : . ومرفق ارقام جميع الصور الموجودة في الاكسس : . . . . . . . . . . . في قاعدة البيانات المرفقة myRight_Click.mdb ، بالاضافة الى القوائم الثابته اعلاه ، تم اضافة هذه القائمة ايضا : . والتقرير يحتوي على القائمة المؤقته التالية : . - ملف الاكسل myList.xlsx ، اخترت فيه اهم القوائم في وجهة نظري ، - ملف الاكسل AccessControls_2010.xlsx ، من مايكروسوفت ، يحتوي على جميع الاوامر 🙂 جعفر المصادر: http://dev-soln.com/access-shortcut-right-click-tool/ https://www.experts-exchange.com/articles/12904/Understanding-and-using-CommandBars-Part-II-Creating-your-own.html https://filedb.experts-exchange.com/incoming/2014/02_w06/833359/CommandBars-II.mdb https://www.experts-exchange.com/articles/18341/CommandBars-Part-III-Using-Built-in-Shortcut-Menus.html http://www.skrol29.com/us/vtools.php AccessControls_2010.xlsx myList.xlsx myRight_Click.zip
  4. شكرا جزيلا ، هدية جميلة 🙂 جعفر
  5. السلام عليكم 🙂 . جعفر
  6. همممم مسكتني من يدي اللي توجعني 🙂 مو كل شيء في قاعدة البيانات استعمله ، وهاي منهم 🙂 جعفر
  7. السلام عليكم 🙂 في الواقع احد اهم الاشياء في هذه الدالة هي التفرقة بين الحروف الكبيرة والصغيرة (بالانجليزي طبعا) ، لكلمة السر 🙂 ?Strcomp("A","a",vbBinaryCompare) -1 ?Strcomp("a","a",vbBinaryCompare) 0 ?Strcomp("Jj","jj",vbBinaryCompare) -1 ?Strcomp("jj","JJ",vbBinaryCompare) 1 فإذا النتيجة = 0 ، فتكون كلمة السر مطابقة ، وإلا ، فكلمة السر غلط 🙂 جعفر
  8. وعليكم السلام 🙂 واهلا وسهلا بك في المنتدى 🙂 رجاء مراجعة قوانين المنتدى : قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف اما انا ، فما احب اعمل تغيير في اعدادات العميل ، لأنها تطبق على جميع برامج اكسس اللي يتم تشغيلها في ذلك الكمبيوتر ، ممكن عمل اللي تريده هكذا: على حدث "التركيز" للحقل ABC ، اكتب: me.ABC.sellength = 0 جعفر
  9. السلام عليكم 🙂 لوسمحت افتح موضوع جديد لهذا السؤال ، حفاظا على قوانين المنتدى 🙂 جعفر
  10. شكرا جزيلا على التوضيح 🙂 جعفر
  11. شو كانت المشكلة ؟ وكيف حليت المشكلة ؟ جعفر
  12. الامر SelLength معناه Selected Length ، اي البيانات التي تم اختيارها وتظليلها ، فإذا كانت القيمة في حقل او كومبوبوكس = "123456" ، ثم تم اختيار/تظليل الرقمين 34 ، فقيمة SelLength ستكون 2 ، ولكن لو لم يتم اختيار/تظليل اي رقم ، فقيمة SelLength ستكون صفر !! لذلك ، فهذه الدالة لا علاقة لها بطول النص في الحقل 🙂 جعفر
  13. هذا معناه ان البرنامج معمول على وندوز ليس عربي !! فما هي اللغة اللي كان عليها الكمبيوتر لما عملت البرنامج؟ هل هناك حروف اجنبية (مو انجليزية) في البرنامج ؟ اعمل التالي: اعمل بملف اكسس جديد ، 1. استورد جميع الكائنات من الملف القديم ، وشغل البرنامج ، اذا اشتغل بدون مشاكل ، فقد تم حل المشكلة 🙂 وإلا ، اعمل بملف اكسس جديد ، 2. استورد الجداول فقط من الملف القديم ، وشغل البرنامج ، اذا اشتغل بدون مشاكل: ثم استورد الاستعلامات فقط من الملف القديم (طبعا الجداول ستكون موجودة) ، وشغل البرنامج ، اذا اشتغل بدون مشاكل: ثم استورد نموذج واحد فقط من الملف القديم ، وشغل البرنامج ، اذا اشتغل بدون مشاكل: تابع في استيراد النماذج والتقارير ، واحدا واحد ، الى ان تعرف النموذج/التقرير اليي فيه المشكلة ، فيجب عليك ان تعيد صنعه مرة ثانية. جعفر
  14. همممم ، كنت اعتقد ان شرحي كان واضح ، ولكن مافي مانع من المحاولة مرة خرى : Debug.Print Len("234") = 3 Debug.Print Len("") = 0 Debug.Print Len(Null) = Null Debug.Print Len(Null & "") = 0 في مثالك If Len(Text) < 0 Then Text = "123456" Len(Text) = 6 Text = "انا جعفر" Len(Text) = 7 Text = "" Len(Text) = 0 Text = Null Len(Text) = Null يعني ما نحصل على طول الكلمة ، وانما نحصل على هذه الكلمة ولكن في مثالي If Len(Text & "") < 0 Then Text = "123456" Len(Text & "") = 6 Text = "انا جعفر" Len(Text & "") = 7 Text = "" Len(Text & "") = 0 Text = Null Len(Text & "") = 0 لهذا السبب ، جرب المثال على كمبيوترك ، واحكم بنفسك 🙂 جعفر
  15. جرب واعطنا النتيجة : Debug.Print Len(Null)
  16. وعليكم السلام 🙂 استخدم فاصل الاسطر : vBCrLf مثلا : السطر الاول & vBCrLf & السطر الثاني Constant Value Description ---------------------------------------------------------------- vbCr Chr(13) Carriage return vbCrLf Chr(13) & Chr(10) Carriage return–linefeed combination vbLf Chr(10) Line feed vbCr : - return to line beginning Represents a carriage-return character for print and display functions. vbCrLf : - similar to pressing Enter Represents a carriage-return character combined with a linefeed character for print and display functions. vbLf : - go to next line Represents a linefeed character for print and display functions. جعفر
  17. نعم انا فهمت السؤال ، وجوابي كان ، اذا ABC = Null فسيكون الجواب len([ABC]) = Null ، بينما نحن نريد الجواب ان يكون len([ABC]) = 0 جعفر
  18. الهدف من استعمال سطر واحد بدل عن مجموعة اوامر ، هو لتسهيل الامر والكود علينا ، ومعرفتنا اذا الحقل فيه قيمة ، معناه ان طول القيمة والتي نعرفها عن طريق الامر Len فإننا نريد ان نعرف اذا طول الحقل = 0 او لا اليك نتائج هذه العمليات : Debug.Print Len("234") = 3 Debug.Print Len("") = 0 Debug.Print Len(Null) = Null Debug.Print Len(Null & "") = 0 فالامر Len اعطانا قيمة 0 لما قيمة الحقل تكون "" ولكنه اعطانا Null لما قيمة الحقل تكون Null ، ولكن Null ليس رقم ،مما يجعلنا نضطر نرجع الى الامر IsNull ، معناه انه يجب ان نستخدم اكثر من امر في السطر الواحد (كما اوضحت سابقا). جعفر
  19. وهنا توضيح للدالة بمثال : الطريفة اللي اتبعها انا للتعامل مع الحقل ، سواء الفارغ او Null او بدون قيمة : بدل عن if isnull([ABC]) or [ABC]="" then استعمل if len([ABC] & "") = 0 then جعفر 🙂
  20. هذا لا علاقة له بالاوفيس ، وانما بإعدادات لغة Unicode الوندوز : جعفر
  21. قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف. المنتدى مليء بعدة امثلة لطلبك، فقط استخدم خاصية البحث فيه.
  22. انا اعتذر منك ، فقد انت تشوف انه واضح من وجهة نظرك ، لأنك تشوف كل شيء امامك ، وقد يكون واضح لشخص غيري ، ولكنه غير واضح بالنسبة لي ، لهذا السبب تشوف اني كنت اتكلم عن اغلاق برنامج ، واعطيتك رابط له. على العموم ، اكرر اعتذاري ، وبالتوفيق ان شاء الله 🙂 جعفر
  23. السلام عليكم 🙂 اعمل زر في النموذج الرئيسي علشان يتحكم في النموذج الفرعي ليذهب للسجل التالي ، وضع عليه هذا الكود : اسم النموذج الفرعي.SetFocus DoCmd.GoToRecord , , acNext جعفر
  24. حياك الله 🙂 ومبارك لك جهودك للمضي قُدما ، بدون استسلام 🙂 انا كذلك لا الجئ الى المكتبات لنفس السبب 🙂 جعفر
×
×
  • اضف...

Important Information