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

Foksh

الخبراء
  • Posts

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

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

  • Days Won

    219

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

  1. فيديو توضيحي لميزة الـ Add-in ، وكيفية إضافة الأداة إلى آكسيس ودمجها في الواجهة .
  2. وما أوتينا من العلم إلا قليلا .. الحمد لله على نعمه التي أنعمها علينا وعليكم مما علمنا . ونسأل الله أن تكون علماً ينتفع به وشفيعاً لنا 😇
  3. 1️⃣ إضافة زر لمعاينة القائمة التي تم انشائها ، بدلاً من الدخول إلى تقرير أو نموذج وتعيينها وتجربتها . 2️⃣ إضافة فكرة القوائم الفرعية . بحيث يكون زر داخل القائمة الرئيسية يتفرع منه قائمة فرعية أخرى ... وهكذا . 3️⃣ إضافة مميزة بحفظ القائمة كـ VBA داخل ملف نصي يتم حفظه على سطح المكتب . بحيث يمكنك من نسخه وتشغيله مرة واحدة فقط في مشروعك لإنشاء القائمة المختصرة التي انشأتها من خلال الأداة ، أو استوردتها من قاعدة أخرى 😉 . 4️⃣ إضافة زر لتعيين/إزالة قائمة مختصرة لعدد من النماذج أو التقارير مرة واحدة ، دون الحاجة لتعيينها واختيارها يدوياً لكل نموذج أو تقرير . 5️⃣ إضافة ميزة مسح جميع القوائم المختصرة من جميع كائنات ( نماذج وتقارير ) قاعدة البيانات الحالية . وليس بتحديد كائنات محددة كما في النقطة4️⃣ . 6️⃣ إضافة الميزة الذهبية الجديدة وهي دمج الأداة إلى إضافات آكسيس وكأنها جزء منه وتجدها داخل الإضافات - Addin . كما في الصورة الموضحة :- 7️⃣ إضافة زر لإزالة الأداة من الـ Addin بشكل كامل ونهائي . 📸 واجهة الأداة بعد التحديث :- كل هذه الميزات وأكثر في المرفق التالي للنسخة المحدّثة :- Menu Builder.zip فيديو توضيحي لطريقة استخدام القوائم الفرعية :-
  4. نعم أخي أحمد ، انا طرحت 3 نقاط من الإضافات ، وأبقيت الباقي كمفاجأة فعلاً.. فما خفي أعظم 🤗. أهلاً وسهلاً معلمنا الفاضل أبو خليل ، تمت إضافتها ، وجاري إضافة فكرة ستعجبك ، وهي جعل الأداة كـ Addin في آكسيس 😉 .
  5. ...|• تحديث جديد بإضافات ممتعة ، قريباً •|... 1. معاينة القائمة المختصرة داخل النموذج . يعني ما في داعي بعد إنشائها ان تحددها داخل تقرير او نموذج. 2. دعم للقوائم الفرعية بأكثر من مستوى. يعني ممكن إضافة زر رئيسي باسم تقارير ، وبداخله زر بإسم صفحات وزر تصدير ... إلخ ؛ وهذا زر الصفحات يحتوي 3 أوامر . وزر التصدير يحتوي أوامر مختلفة ... إلخ . 3. إضافة ميزة تصدير القائمة المختصرة ككود VBA ( وحفظه في ملف نصي على سطح المكتب ) ، واستخدامه في أي قاعدة بيانات لإنشاء القائمة من خلال الكود دون الحاجة لنسخ أدوات الأداة الى مشروعك ، او استخدام التصدير مثلاً 😁
  6. أهلاً أخي جعفر سرني مرورك وإعجابك .. وأتمنى أن تكون الفكرة في الأداة مساعدة بوظيفتها التي صممت لها 💐
  7. أهلا بأخي العزيز .. أسعدني مرورك .. ونسأل الله أن ينفعنا بعلمنا وإياكم أخي ناقل ، أهلاً بمرورك العطر .. نتمنى أن تكون فعلاً أداة مفيدة ننتفع منها بصالح دعائكم لنا أخي ابو البشر ،، تقبّلك الله بصالح أعمالك .. شكراً لمرورك
  8. شكراً لك أخي منتصر .. مروركم هو الأروع . وهذا بعض ما عندكم صدقني .. شكراً لك على مرورك أخي أبو الحسن قليل مما عندكم أخي محمد .. شكراً لمرورك العطر مهندسنا الغالي .. بانتظار تجربتك أولاً والنتيجة ، وسلاسة الاستخدام ... إلخ .
  9. مشاركتي في هذا الموضوع الجديد ، وأرجو أن ينال الإعجاب ..
  10. أخواني وأساتذتي ومعلمينا ( دون استثناء ) .. الكثير من المواضيع التي ناقشت موضوع التحكم بالقوائم المختصرة داخل التقارير أو النماذج .. وكان للكثيرين من الأساتذة والخبراء والموهوبين أفكار جميلة جداً حول كيف تصنع قائمة مختصرة عند النقر على الزر الأيمن داخل نموذج أو تقرير . ومن هنا اليوم أضع بين أيديكم أداة تقوم بهذه المهمة بشكل سحري . 1️⃣ القدرة على إنشاء قوائم مختصرة دون أن تكتب أي أمر برمجي أو حتى البحث عن الخيارات داخل آكسيس لإضافة قائمة مختصرة .... إلخ . 2️⃣ القدرة على استيراد قوائم مختصرة من قاعدة بيانات أخرى إلى قاعدة بياتك الحالية من خلال الأداة . 3️⃣ القدرة على تصدير قوائم مختصرة إلى قواعد بيانات أخرى . 4️⃣ التحكم بالترتيب للأوامر داخل القوائم بحرية وسهولة ، وإتاحة إمكانية تسمية الأوامر كما تحب . 5️⃣ إتاحة إمكانية إعادة تسمية قائمة مختصرة موجودة مسبقاً . 6️⃣ التحكم بحذف قوائم معينة لا تريدها من خلال زر واحد . 7️⃣ إتاحة الفرصة لإضافة أوامر خاصة من خارج آكسيس ، أو ماكرو . أي أنك تستطيع استدعاء دوال عامة من مشروعة داخل زر في القوائم التي تصنعها . والكثير من الميزات التي يجب عليك اكتشافها بنفسك . 📸 واجهة الأداة المتواضعة :- فيديو توضيحي لطريقة الاستخدام بشكل سريع .. ملف الأداة مفتوح المصدر ، للتحميل :- Menu Builder.zip لمعرفة وظيفة كل زر ، فقط قف على الزر وستظهر لك الوظيفة المخصصة له .
  11. وإياكم يا صديقي ، ولكن انت تعتقد ما لم تقم بتوضيحه وشرحه . اشرح النتيجة التي تريدها حتى استوعب الخلل 🤗
  12. كان لدي هذه الفكرة القديمة ولم اتابعها للأسف ، ولكن سؤالك هذا عدت لها وقمت ببعض التعديلات وتحديثها حتى أصبحت بالشكل التالي .. وسأقوم بإذن الله بإضافتها كموضوع مستقل خلال اليوم إن شاء الله
  13. وعليكم السلام ورحمة الله وبركاته .. هذه فكرة بسيطة للورقة الثانية في الخلية D4 ( المطلب الأول ) ، جربه :- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$4" Then Dim cell As Range, n As Long Range("B6:B35, D6:D35").ClearContents If IsDate(Target.Value) And Target.Value <> "" Then For Each cell In Sheets("بيانات العاملين").Range("B2:B" & Sheets("بيانات العاملين").Cells(Rows.Count, "B").End(xlUp).Row) If cell.Value = Target.Value Then n = n + 1 Cells(6 + ((n - 1) Mod 30), 2 + ((n - 1) \ 30) * 2).Value = cell.Offset(0, 1).Value If n = 60 Then Exit For End If Next cell End If End If End Sub المطلب الثاني في الورقة الثالثة ، جرب استعمال الفكرة التالية بحيث لتحديد العدد جعلت الخلية G4 لتحديد العدد بدلاً من 5 والتقيد به . وبالتالي اذا لم تحدد قيمة في G4 سيكون الافتراضي = 5 أسماء ، والكود كالتالي في الورقة الثالثة :- Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("F4:G4")) Is Nothing Then Dim cell As Range, n As Long, limit As Long Dim status As String Range("C7:C" & Rows.Count).ClearContents status = Range("F4").Value If status = "ناجح" Or status = "راسب" Then limit = IIf(Val(Range("G4").Value) <= 0, 5, Val(Range("G4").Value)) For Each cell In Sheets("بيانات العاملين").Range("E2:E" & Sheets("بيانات العاملين").Cells(Rows.Count, "E").End(xlUp).Row) If cell.Value = status Then n = n + 1 Cells(6 + n, "C").Value = Sheets("بيانات العاملين").Cells(cell.Row, "C").Value If n = limit Then Exit For End If Next cell End If End If End Sub لاحظ أنني قمت بإضافة احتمال آخر = راسب من باب التوسعة في خيارات البحث بالنتيجة اللجنة.xlsm
  14. كمحاولة لتنفيذ المطلوب ، بحيث يتم البحث من خلال رقم الطالب ، أو من خلال اسم الكتاب أو نت خلال البحث بين تاريخين .. استعملت الاستعلام التالي :- SELECT st_mstr.st_no, st_mstr.st_name, st_mstr.Curr_Grp, st_trns.crs_cd1, st_mstr.Id_No, st_mstr.Tele_No, books.book_desc, "C:\BookImages\" & [st_trns].[crs_cd1] & ".jpg" AS BookImagePath, st_trns.chkSelect, st_trns.ReturnDate, st_trns.Status, st_trns.BookCondition FROM books INNER JOIN (st_mstr INNER JOIN st_trns ON st_mstr.st_no = st_trns.st_no) ON books.crs_cd1 = st_trns.crs_cd1 WHERE (st_mstr.st_no = [Forms]![Search]![T1] OR [Forms]![Search]![T1] Is Null OR [Forms]![Search]![T1] = "") AND (books.book_desc = [Forms]![Search]![T2] OR [Forms]![Search]![T2] Is Null OR [Forms]![Search]![T2] = "") AND (st_trns.ReturnDate >= [Forms]![Search]![DFrom] OR [Forms]![Search]![DFrom] Is Null OR [Forms]![Search]![DFrom] = "") AND (st_trns.ReturnDate <= [Forms]![Search]![DTo] OR [Forms]![Search]![DTo] Is Null OR [Forms]![Search]![DTo] = ""); returnbooks.zip
  15. ما هي المشكلة بالضبط !!!
  16. عمل جميل ومتقن ، وبديل عن شريط أدوات التقارير بفكرته الأولى 💐
  17. وعليكم السلام ورحمة الله وبركاته .. هذه مساهمة بسيطة كبداية . استكمل باقي العمل حتى تشعر بمتعة العمل 😊 . St.Sys.accdb
  18. طلبك الأول ، شرحه موجود في الموضوع التالي :- طلبك الثاني شرحه فيما يلي ..
  19. وعليكم السلام ورحمة الله وبركاته.. ما عليك التحقق منه اولاً هو لغة الترميز العربية . ثاني حاجة وهي تفعيل تمكين المحتوى ومركز التوثيق والماكرو .
  20. حاولت قراءة الباركود على أكثر من تطبيق وأكثر من جهاز ، ولم استطع فعلاً قراءته ... متابع بصمت
  21. وعليكم السلام ورحمة الله وبركاته .. اعجبتني الفكرة ، و وددت المشاركة بالتالي .. ما عليك فعله بيدك حتى تنجح الفكرة .. في المديول :- الخطوة الأولى اذهب للدالة :- Private Function ExitTimer() As Boolean وقم بحذف السطر :- Call DeleteObject(hRgn1) الخطوة الثانية أيضاً اذهب للدالة :- Public Function GenerateExit() 'MyForm As Form) وأضف بعد هذا السطر :- Do Until ExitTimer() السطر DoEvents ، لتصبح جملة الحلقة :- Do Until ExitTimer() DoEvents Sleep clngTimerInterval Loop وبعد هذه الحلقة مباشرة ، أضف السطر التالي :- Call DeleteObject(hRgn) وعليه ، فأن الملف كاملاً بعد هذه التعديلات يصبح :- db.mdb
  22. الإصدار الثاني من لعبة الدومينو والتي تدعم الشبكة ( النسخة الأولى التي تعتمد على الربط بقاعدة بيانات الجداول الخلفية ) . مميزات الإصدار الأول :- إمكانية لعب اللعبة من خلال الشبكة المحلية ( 4 لاعبين = 4 أجهزة ) إمكانية إضافة الكمبيوتر كلاعب للعبة الشبكة . يعني بتقدر تلعب انت وصديقك وتضيف الكمبيوتر كلاعب ثالث أو رابع . أو إنك ممكن تلعب مع 3 لاعبين كمبيوتر 😁 . إتاحة دخول لاعب على الشبكة ،واستبدال لاعب كمبيوتر بإدارة كاملة من المضيف ( صاحب اللعبة الحالية = الهوست Host ) . في حال خروج أحد اللاعبين ( خلينا نسميهم البشريين ) سيتم ملئ مقعده بلاعب كمبيوتر لاستكمال اللعب بدلاً منه . في حال رغبة اللاعب الذي خرج ( لأي سبب من الأسباب ) ، سيتم منحه الإذن بالدخول للعبة إما متفرج أو بدل لاعب كمبيوتر آخر موجود ( أو الذي تم إدخاله بدلاً منه ) ... إلخ من سيناريوهات الخروج والعودة . كل لعبة تسمى غرفة لعب ، لها رقم خاص بها للإنضمام . وذلك لمنع تداخل اللعب في الغرف . في حال كان هناك أكثر من غرفة . يعني بتقدر تلعب اللعبة على 8 أجهزة على سبيل المثال وكل 4 في غرفة منفصلة . في حال انقطاع أو خروج المضيف = الـ Host ، رح يكون معه 60 ثانية للعودة للغرفة نفسها . بشرط أن يتم كتابة نفس الإسم السابق له قبل خروجه . وهذا ينطبق أيضاً على اللاعبين البشريين - كما أسميناهم وللتمييز بينهم وبين الكمبيوتر - عند خروج أحدهم والعودة الى نفس الغرفة = بنفس الإسم . بتقدر كمضيف = Host تحديد قيمة نتيجة الفوز التي تحدد الفائز بالغرفة . طبعاً القيمة الإفتراضية = 500 . وسيكون التجميع تراكمياً بمجموع أرقام الحجارة في يد اللاعب الذي يملك أقل عدد . في لعبة الشبكة بتقدر تختار صورة لشخصيتك من خلال قائمة منسدلة = Avatar . لنفترض انك كلاعب بشري سجلت انضمامك للغرفة - قبل بداية اللعبة طبعاً - وكنت بدك تعدل اسمك أو تغيره . كل اللي عليك انك ترجع تسجل انضمام جديد بفتح اللعبة من جديد لنفس الغرفة . لن تظهر أي حجارة عندما يكون عدد الاعبين أكثر من 2 . وإلا فسيأخذ اللاعب الثاني ( إذا كانت اللعبة تضم لاعبين اثنين فقط ) مكان الكمبيوتر وستظهر حجارة كلا اللعبين مقابل بعضهما البعض . ستظر صورة لشخصية ترفع يدها في واجهة اللاعبين للدلالة على أن الدور له ، حتى لو كان الكمبيوتر احد اللاعبين المنضمين الى لعبة الشبكة . لنفترض أن الغرفة فيها 3 أو 4 لاعبين ، وأراد لاعب رابع الإنضمام الى اللعبة . فسيتم إظهار رسالة في واجهة المضيف الـ Host فقط ، تخبره أن هناك لاعب يرغب بالإنضمام الى الغرفة . وستكون الخيارات للمضيف كالآتي :- * استبدال لاعب كمبيوتر باللاعب الجديد فوراً = في حال وجود لاعب كمبيوتر * قبول اللاعب كمتفرج حتى الفوز التام = سيتم إدخاله كمتفرج فقط ، و ينتظر حتى يحقق أحد اللاعبين القيمة التي تحدد الفائز في الغرفة * رفض الانضمام = عدم إدخاله أساساً * قبول الانضمام والبدء بلعبة جديدة كلياً = تصفير اللعبة والبدء من جديد بانضمام اللاعب الجديد محاكاة كاملة لسير اللعب والحركة والسحب وتمرير الدور عند جميع اللاعبين . إذا كان عدد الاعبين أكثر من 2 ، فسيتم إظهار عدد الحجارة في يد كل لاعب ، والنتيجة التي حققها من فوز في كل لعبة ؛ في واجهة كل اللاعبين . والكثير من المميزات سأترك لكم اكتشافها بأنفسكم 😉 . وسأكتفي بهذا القدر من النقاط . ما عليك فعله لضبط اللعب في الشبكة :- ربط جميع واجهات اللعب بالملف المرفق TBL ، وهو قاعدة بيانات الجداول التي تخص الشبكة على السيرفر فقط . وهنا في التحديث الجديد لاحقاً سيتم الاستغناء عنه كلياً بحيث يتم اللعب على الشبكة من خلال وسيط يعمل كسيرفر يربط اللعبة من خلال رقم الغرفة بشكل ديناميكي عجيب . وقد تم بناؤه من خلال لغة C# . المرفق مفتوح المصدر لعشاق البحث والتقصي 😁 . وليس هنا أي أسرار هذه المرة 😜 . ويسعدني تعليقاتكم حول آلية تطبيق اللعبة . Domino Network.zip
  23. بارك الله فيكم أستاذنا الكبير .. يفي بالغرض بالطبع . وأتفق معكم بهذا التفكير تماماً .. ويسعدنا أن نشارك به جميعنا إن أمكن . لكم كل الشكر والإحترام على تجاوبكم معنا . وفقكم الله ورعاكم
  24. 😮 رأيي الفني 😅!! فكرة أخونا الأستاذ أبو عبدالله جميلة بلا شك وأحييه على الفكرة التي خرج بها . ولكنك ستشعر الفرق عندما تتعامل مع سجلات كثيرة .. فالفكرة الأساسية التي اعتمد عليها وهي rpt.Line الأساسية ستكون بطيئة جداً لو افترضنا التعامل مع تقرير يحتوي 100 سجل على سبيل المثال . ولكن في فكرة التعديل الذي قمنا به وابتعادي عن الفكرة السابقة هي باستخدام GDI APIs التي أتت من المرفق A2KPictureBoxVer35.accdb الذي شاركنه أخي جعفر . يعني افتح التقرير rpt_BG_img_Barcode في مرفق الأستاذ عبدالله ، وانتقل لعرض الصفحة الثانية !!! ستشعر الفرق 100% وختاماً لست في مكان أقييم به عمل أحد من الأساتذة والأعضاء ، فأخوكم ما زال يتعلم ولله الحمد 😇
×
×
  • اضف...

Important Information