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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    411

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

  1. السلام عليكم الجزء الاول هو المرجع لتوضيح عمل القائمة المختصرة : . في الموضوع السابق ، تحدثنا عن القائمة الثابتة ، وفي هذا الموضوع سنتكلم القائمة المؤقتة ، وعن طرق اخرى لإستعمال القائمة. وللعلم ، هناك قائمة مختصرة للنموذج واخرى للحقل ، سواء قائمة ثابته او مؤقته . القائمة الثابتة هي التي تجدها جاهزة للاستعمال ، وبدون عمل اي كود لها ، سواء في النموذج او التقرير ، مثلا : . اما القائمة المؤقته فيحتاج تناديها بالكود لكل استعمال ، ولما تغلق النموذج/التقرير ، يحتاج تحذفها ، والسبب مثل ما بتشوفون في المرفق ، نستعمل نفس القائمة ببعض الاختلافات بين النموذج/التقرير وحقوله. . التحدي الاكبر في القائمة المؤقته ليس البرمجة ، وانما معرفة الحدث الصحيح للحصول على النتيجة ، ثم تمرير النتيجة ، مثلا ، للحصول على عدد صفحات التقرير ، يجب استعمال الحدث On Page ، ومنها اخذ عدد الفحات وتمريرها الى دالة القائمة المؤقته. حاولت عمل اكبر قدر من التشكيلات ، وبأبسط طرق البرمجة ، حتى يكون تغييرها سهل للمبرمج. وفي المرفق وحدة نمطية لتصدير/استيراد كائنات قاعدة البيانات ، وحسب طلب اخي العزيز @ابوخليل ققد اضفت لها دالة لإرجاع كود القائمة المختصرة (اذا صارت الحاجة اليه). myRight_Click_Shortcut_Menu.zip
      • 4
      • Like
      • Thanks
  2. رجاء ارجع الى مشاركتي السابقة التي ارسلت فيها مرفق ، وافتح المرفق وشوف الدالة . والاهم من هذا ، شوف الرابط اللي عرضته هناك ، فهو الموضوع الاصل للقائمة المختصرة
  3. الفكرة الثانية جميلة للحالات الخاصة 🙂 قبل فترة بسيطة قمت بعمل متصفح للصور وملفات pdf ، بعرضها على المتصفح في نموذج الاكسس ، لعرض ملفات الموظف (يعني مثل الحالة الثانية من اقتراحك). ولأني لما ابرمج ، اضع نفسي كمستخدم ، واشوف شو التحديات اللي بيواجهها المستخدم ، اقوم بتطوير الاداء/البرنامج ليلائم تطلعاتي/رغباتي وهي عادة اكبر من حجمي/طاقتي ، فاللي اقدر عليه ابرمجه ، واللي ما اكون مقتنع فيه اوقفه . مبدئياً ، قمت بعرض ملفات الصور و pdf ، بصيغة pdf ، ولي عودة لها لما افرغ شوي ، وعندي فكرة تراودني وان شاء الله يكون عندي الوقت لعملها
  4. اخوي احمد ارفقت لك الكود الاصل لعمل هذه القائمة ، وقمت بتوقيف القوائم التي لا تحتاج لها ، وبتعديل ارقام القوائم التي تريدها ولم تظهر لك. 1. استورد القائمة الى برنامجك ، وجربها ، 2. اذا ما اشتغلت القائمة بالطريقة الصحيحة ، قم باستيراد الدالة ، وخلينا بعدين ننظر في تعديل القوائم اللي ما تشتغل. خلي عندك هذه الروابط حتى نرجع لها وقت الحاجة: . https://mskb.pkisolutions.com/kb/213552 Shortcut Menu_MDB_Report.mdb
  5. الحمدلله تم عمل الدالة ، وان شاء الله ارفقها في الموضوع الجديد
  6. وعليكم السلام ورحمة الله وبركاته شكرا على المشاركة اخوي موسى ، مرفقات متعوب عليها
  7. اخي احمد @أحمد العيسى نظرا لأن مشاركتك لا تخص الموضوع ، فقد فتحت موضوع خاص لها ، هنا :
  8. وعليكم السلام اخي احمد ولكوني لا املك اكسس 2003 ، فقد اعطيتك اقتراح من احد المواقع ، ولكن صادفت بعض الامور الاخرى البارحة (لا علاقة لها بهذا الكود) ، فأعدت التفكير مرة اخرى ، واليك النتيجة: جميع هذه الاوامر هي جزء من الاكسس ، فإذا مو موجودة في الاكسس ، فلن تعمل وستجدها باللون الرمادي (مثل التصدير الى PDF والتي لا توجد في اكسس 2003) ، ولاحظت اني لما فتحت التقرير بوضع Report View ، فاصبح امر close في القائمة رمادي ، فهاذ معناه ان الاكسس يعتبر هذا الوضع وضع نموذج وليس وضع تقرير !! عليه طلبت من الذكاء الاصطناعي ، فاعطاني هذه الدالة حتى تعمل على الصيغتين mdb و accdb ، وهي تعتمد في عملها على التأكد من صيغة البرنامج mdb او accdb ، فهذا معناه ان الدالة لا تكون ثابته (لا تحتاج الى الكود بعد تصنيعها) ، وانما هي مؤقته وتعمل كل مرة تشغل فيها الدالة : Public Function SCM_Zoom_Pages_Print_Export_TEMPORARY() Dim cmbName As String Dim cmb As Object Dim cmbCtrl As Object ' Variable IDs to handle MDB vs ACCDB compatibility Dim idQuickPrint As Long Dim idPrintDialog As Long Dim idExportWord As Long Dim idExportExcel As Long Dim idClose As Long On Error Resume Next 'If menu with same name exists delete cmbName = "rpt_Zoom_Pages_Print_Export_TEMPORARY" CommandBars(cmbName).Delete If Err.Number <> 0 Then Err.Clear On Error GoTo 0 ' Determine Control IDs based on file format (MDB < 12, ACCDB >= 12) If CurrentProject.FileFormat < 12 Then ' Classic Control IDs for MDB format idQuickPrint = 4 idPrintDialog = 19 idExportWord = 5535 idExportExcel = 5534 idClose = 1813 Else ' Modern Control IDs for ACCDB format idQuickPrint = 2521 idPrintDialog = 15948 idExportWord = 11725 idExportExcel = 11723 idClose = 923 End If ' Create the shortcut menu as TEMPORARY (The final parameter is set to True) Set cmb = CommandBars.Add(cmbName, msoBarPopup, False, True) With cmb ' Add Zoom Set cmbCtrl = .Controls.Add(msoControlPopup, 21, , , True) 'Zoom Set cmbCtrl = .Controls.Add(msoControlPopup, , , , True) cmbCtrl.Caption = "Zoom Report" cmbCtrl.Controls.Add msoControlButton, 15681, , , True 'Zoom Fit to window cmbCtrl.Controls.Add msoControlButton, 1834, , , True 'Zoom 10% cmbCtrl.Controls.Add msoControlButton, 1833, , , True 'Zoom 25% cmbCtrl.Controls.Add msoControlButton, 1832, , , True 'Zoom 50% cmbCtrl.Controls.Add msoControlButton, 1831, , , True 'Zoom 75% cmbCtrl.Controls.Add msoControlButton, 7, , , True 'Zoom 100% cmbCtrl.Controls.Add msoControlButton, 1830, , , True 'Zoom 150% cmbCtrl.Controls.Add msoControlButton, 1829, , , True 'Zoom 200% cmbCtrl.Controls.Add msoControlButton, 6463, , , True 'Zoom 500% cmbCtrl.Controls.Add msoControlButton, 6464, , , True 'Zoom 1000% ' Add Pages Set cmbCtrl = .Controls.Add(msoControlPopup, 176, , , True) 'Pages Set cmbCtrl = .Controls.Add(msoControlPopup, , , , True) cmbCtrl.Caption = "Pages View" cmbCtrl.Controls.Add msoControlButton, 5, , , True '1 page cmbCtrl.Controls.Add msoControlButton, 639, , , True '2 Pages cmbCtrl.Controls.Add msoControlButton, 1801, , , True '4 Pages cmbCtrl.Controls.Add msoControlButton, 1800, , , True '8 Pages cmbCtrl.Controls.Add msoControlButton, 1799, , , True '12 Pages ' Add the Print command. Set cmbCtrl = .Controls.Add(msoControlButton, idQuickPrint, , , True) cmbCtrl.BeginGroup = True cmbCtrl.Caption = "Quick Print" ' Add the Print command. Set cmbCtrl = .Controls.Add(msoControlButton, idPrintDialog, , , True) cmbCtrl.Caption = "Select Pages and Printer" ' Add the Page Setup... command. Set cmbCtrl = .Controls.Add(msoControlButton, 247, , , True) cmbCtrl.Caption = "Page Setup" ' Add the Mail Recipient (as Attachment)... command. Set cmbCtrl = .Controls.Add(msoControlButton, 2188, , , True) cmbCtrl.BeginGroup = True cmbCtrl.Caption = "Email Report as an Attachment" ' Add the PDF or XPS command (Only available if running Access 2007 or newer) If Val(Application.Version) >= 12 Then Set cmbCtrl = .Controls.Add(msoControlButton, 12499, , , True) cmbCtrl.Caption = "Save as PDF/XPS" End If Set cmbCtrl = .Controls.Add(msoControlButton, idExportWord, , , True) cmbCtrl.Caption = "Export to Word..." cmbCtrl.FaceId = 42 Set cmbCtrl = .Controls.Add(msoControlButton, idExportExcel, , , True) cmbCtrl.Caption = "Export to Excel…" cmbCtrl.FaceId = 263 ' Add the Close command. Set cmbCtrl = .Controls.Add(msoControlButton, idClose, , , True) cmbCtrl.BeginGroup = True cmbCtrl.Caption = "Close Report" End With Set cmb = Nothing Set cmbCtrl = Nothing End Function . وعلشان تشتغل القائمة ، فيمكنك مناداتها في حدث فتح التقرير ، وتتلغيه عند المغادة ، هكذا : Private Sub Report_Open(Cancel As Integer) Call SCM_Zoom_Pages_Print_Export_TEMPORARY Me.ShortcutMenuBar = "rpt_Zoom_Pages_Print_Export_TEMPORARY" End Sub Private Sub Report_Close() Call SCM_Zoom_Pages_Print_Export_TEMPORARY End Sub
  9. البرمجة مثل الطبخ ، هناك عدة طرق للطبخ ، وانا هذه طبختي لهذا الموضوع قد تكون مشاركتي مخالفه بوضع مادة تختلف عن طلب صاحب السؤال ، ولكنها بديل. هذه الفكرة لم تخطر على بالي لم يعطني الكود كاملا بحيث اعمل نسخ/لصق. انا تعمّدت عدم وضع الكود الذي عملت به القائمة المختصرة ، حتى يعرف المستخدم ان الكود غير ضروري لنسخ القوائم المختصرة بين قواعد البيانات. ان شاء الله سأفتح موضوع جديد تكملة لموضوعي السابق عن القائمة المختصرة (باقي اشياء بسيطة ، حتى اغطي اكبر كمية من الاختيارات) ، واحاول ايجاد كود يُرجع القائمة المختصرة الى ملف نص.
  10. السلام عليكم اذا الاكسس يعمل شيء معين ، فعادة انا لا عمل شيء بديل عنه ، مثل الانتقال من صفحة الى اخرى ، فالاكسس به هذه الخاصية ، وكما ان لون النص وحجمه ، هما من عمل المبرمج ، فلن تراني اضعه في يد المستخدم. بدلا عن هذا الشريط ، اليكم طريقة اسهل في التعامل ، ولست بحاجة الى سطر من البرمجة. من برنامجك استورد البرنامج المرفق (البرنامج لا يحتوي على اي كائن ، غير القائمة المختصرة) . . وفي تقريرك في وضع التصميم : . الآن افتح التقرير في وضع معاينة ، وبالنقر على زر الفأرة اليمين ستأتيك هذه القائمة (والتي تشمل على ايقونات شريط الطباعة في هذا الموضوع) . Shortcut Menu.accdb
  11. يالله يا شباب ، الهمة الهمة 🙂 اهم شيء في التعامل مع الذكاء الاصطناعي هو ، توجيهه غصبا عنه بما تريد ، ولا تخليه يشطح (بالعمانية ، يتصرف على كيفه 🙂 ) ، بس يحتاج حزم في التعامل معاه
  12. شكرا جزيلا اخوي موسى سأستخدم الكود/الفكرة التي تفضلت بها ، ولكن هذه التسميات تعتمد على مبرمج الجداول ، فانا مثلا لم استعمل هذه الخاصية في جداولي ، مطلقاً !! بما انك وضعت البرنامج هنا ، ليش ما تفرد له موضوع خاص وتشرحه ، بحيث يأخذ حقه
  13. شكرا على التوضيح ، ولكن عندي صعوبة في فهم المطلوب !! . اليك طريقة استرجاع الصورة المضمنة في النموذج ، وان شاء الله اعمل موضوع خاص به ، لأن هذه جزئية صغيرة من الموضوع 🙂 اذا كان النموذج غير مرتبط بجدول او استعلام ، اعمل اي جدول ، ثم اجعل الجدول مصدر بيانات النموذج ، ثم ضع الحقل في النموذج ، واحفظ النموذج. . ثم اعمل تصدير للنموذج: . ثم اختار مكان الحفظ ، ثم تأتيك هذه النافذة فيجب ان تختار الاختيار الثالث كذلك (حسب السهم) ، تنقر OK . . ثم اذهب الى المجلد الذي حفظت فيه الملف ، وابحث عن المجلد Images ، وستجد جميع صور النموذج هناك (هذه الصور اللي ظهرت لي) : . للعلم ، الاكسس يحول الصور الى bitmap ، لهذا السبب سترى ان جميع الصور تم تغيير صيغتها
  14. وكما ترى في الصورة اللي ارفقتها انا ، لم تظهر عندي . على العموم ، حل المشكلة كما اخبرتك في مشاركتي السابقة.
  15. السلام عليكم ورحمة الله وبركاته ولازلنا في انتظار مشاركة ناجحة 100% لهذا التحدي
  16. اين الصورة ؟ . لا تستخدم Stretch ، فهو لا يلتزم مقياس طول وعرض الصورة ، وانما يشد ويشوه الصورة ويجعل الصورة في طول وعرض الكائن (الزر في حالتك). لهذا ، يجب ان تغير حجم الزر حسب اطوال الصورة ، حتى لا ترى التشوه.
  17. وعليكم السلام ورحمة الله وبركاته 1. المعذرة ، اي برنامج تتكلم عنه 2. شو البديل/البرنامج اللي تستعمله ، واذا ممكن تعطينا مثال للرقم الذي تطبعه على الملصق
  18. لأن الموضوع صار سهل ، فأخاف من الخطأ ، وخطأ واحد و وايلاه ، لهذا السبب حسيت بقشعريرة وشعر جسمي كله وقف جميل ، اذن نحسب حساب : اذا القيمة مو موجودة على القائمة اليمين ايضا . 1. اعتقد ممكن القيام بالعمل بدون استيراد شيء ، الكل بيشتغل في مكانه ، 2. ما اعتقد يمكن عمل هذا ، لأن قواعد البيانات اللي نتعامل معاها مو جديدة ، نحن نتعامل مع تعديل/تنظيف بيانات الجداول فقط.
  19. حسب تجربتي ، اعمل العمل بالطريقة التي تناقشها مع المستخدم ، و اتركه يستعمل البرنامج ، وبعد فترة ستجد افكار جديدة تنقلك الى النسخة التالية ، والتالية ... 🙂 وهكذا عينا لما تشارك الفكرة مع الخبراء 🙂 طيب سؤال: كلما اردت استعمال هذه الاداء على بيانات قاعدة بيانات ، اضطر الى نسخ الكائنات اليها !! ليش ما اعمل برنامج خارجي مستقل بهذه الكائنات ، كما عملته في التعامل مع ملفات الاكسل: . وبهذه الطريقة تعطي المستخدم برنامج واحد ، وهو يستعمله لكل برامجه (ما ادري ليش حسيت بقشعريرة و شعر جسمي كله وقف )
  20. السلام عليكم بمناسبة هذه الايام المباركة ، حبيت اشارك بهذه الجزئية المستقطعة من احد برامجي 🙂 في بعض الاحيان ما يقدر المبرمج من سد جميع ثغرات البرنامج لمنع المستخدم من عمل خطأ في ادخال البيانات ، فتكون نفس المعلومة مكتوبة بعدة طرق ، مثلا: . ومثال من جدول آخر . عادة يُطلب من المبرمج تنظيف هذه البيانات ، جدول جدول / حقل حقل / معلومة معلومة ، والمشكلة في هذا العمل هو معرفة الحقول المطلوب تنظيفها ، ثم معرفة البيانات الخطأ والبيانات الصحيحة (لإستبدالها) ، وهذا العمل يتطلب وجود المبرمج والمستخدم لمعرفته بالبيانات الخطأ والصحيحة. وبعد هذا التنظيف ، وبعد مرور مدة ، يجب تكرار العملية طبيعتي ، لما اشوف فيه تكرار لعمل معين ، اقوم ببرمجته ، وهذا اللي حصل في هذا المشروع 🙂 الان المستخدم (طبعا المسؤول) هو الذي يقوم بهذا العمل من خلال نموذج. انت محتاج الى نقل هذه الكائنات الى قاعدة بياناتك للقيام بالعمل ، ثم تشغيل النموذج frm_Clean_Data . 1. عند دخول النموذج ، تجد اسماء جميع الجداول في حقل اسم الجدول ، وبعد ان تختار اسم الجدول ، تجد اسماء جميع حقول الجدول في حقل اسم الحقل ، ثم تختار الحقل المطلوب تنظيف بياناته ، فتأتيك البيانات بدون تكرار . . 2. يجب عمل تصفية في اختيار "القيمة الحالية" للبيانات المطلوب تنظيفها ، وتختار "القيمة الجديدة" لها ، . 3. ثم تنقر على زر "جميع الاسماء المختار" ، فتاتيك رسالة تأكيد لعملية التنظيف التي سيقوم بها البرنامج ، وعند التأكد من هذا العمل والنقر على "نعم" ، فسيقوم البرنامج بعمل التغييرات المطلوبة ، ولا يوجد تراجع . 3. فنحصل على هذه النتيجة . 4. ونستمر بإختيار القيمة التالية من هذا الحقل ، او اختيار جدول/حقل آخر ، التغيير لقيمة الحقل كاملة وليست لجزء من الحقل يجب اعطاء هذا البرنامج للمسؤول ، ويجب ان يعرف عواقب العمل ، وقبل كل شيئ يجب اخذ نسخة من قاعدة البيانات Clean_Data.zip
  21. . احسنت اخوي ابوخليل ، قطعت الشك باليقين 🙂 وبالفعل ، وكما يقول المثل العربي: ليس الخبر كالمعاينة ، او كما يقول المثل الانجليزي: الصورة تساوي ألف كلمة
  22. والان اليكم نتائج قراءة الباركود نحن نستعمل خط Code39 (الخط موجود في مرفق المشاركة) لطباعة الباركود ، وبالحجم الموجود في صورة الهوية في الاسفل. 1. في مشاركة الاخ فادي ، كان فيه مساحة بيضاء زيادة في الصورة ، مما يجعل حجم الباركود حقيقي (الخطوط ليست عريضة لتملئ كائن الصورة) . عليه قمت بطلب طباعة الباركود على هوية حقيقة وقراءة الباركود بواسطة اجهزة قارئ الباركود (وليس الموبايل وتطبيقاته) ، والنتائج كانت: 1. الباركود Code128 و QR التي عملها كود اخي فادي ، تم قراءتها ويشكل سريع للقيمتين ، 2. بينما قارئ الباركود لم يقرأ قيمة Code39 الموجودة داخل المريع الاحمر (اعتقد كان يحتاج الى توسيع حقل النص الخاص به). . 3. وبعد تجارب كثيرة ودقيقة ، اتضح ان الباركود العمودي V لا يعتمد في عمله على حجم كائن الصورة ، وإنما يعمل الخطوط حسب قيمة الباركود ، ولكن قراءته لا تكون صحيحة دائما ، بينما الباركود الافقي قراءته دائما صحيحة. 4. الباركود الافقي H يعرض نتائج صحيحة ، ولكنه مزاجي ، تلاحظ في الصورتين في الاسفل ، قمت بزيادة عرض كائن الصورة حبه/تكه واحدة ، واذا الباركود (خطوط الباركود) اتسعت بحجم كبير . 2. ثم طبعنا الباركود حسب كود المشاركة التالية للاخ فادي (وهو نفس الكود لبقة المشاركات) ، وحسب الصورة التالية ، والنتيجة كانت: 1. تم قراءة جميع انواع الباركود للقيمة 123456 2. تم قراءة QR فقط للقيمة H12345D ، ولم يتم قراءة Code128 و Code39 . عليه ، يجب الرجوع الى الكود واعادة العمل عليه لتعديل النقاط اعلاه ، اي ، لايزال المجال مفتوحا لبقية الاعضاء لمشاركات ومحاولات جديدة
×
×
  • اضف...

Important Information