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

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

  1. Foksh

    Foksh

    أوفيسنا


    • نقاط

      5

    • Posts

      4120


  2. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      2

    • Posts

      9998


  3. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      1

    • Posts

      13285


  4. Lamyaa

    Lamyaa

    03 عضو مميز


    • نقاط

      1

    • Posts

      104


Popular Content

Showing content with the highest reputation on 10/02/25 in مشاركات

  1. او هذا بما ان القيم الافتراضية = 0 يمكن ان نستخدم int بدلا من nz اصل الخلل ان اكسس ينظر الى علامة + وكأنها العلامة & اوفسنا2.rar
    1 point
  2. أخي @عبد اللطيف سلوم ، لا تبخل علينا في ملف بسيط للإطلع عليه والإستفادة 😊
    1 point
  3. تم استخدام جوجل شيت كسيرفر يتم فيه تسجيل جميع الحركات والتفعيلات والاستيراد حسب رقم معرف جهاز العميل ، والتالي صورة توضيحية سابقة :- استخدم النسخة التي في هذه المشاركة هنا . بحيث احذف النسخة السابقة ( الأولى ) وقم بتشغيل ملف حذف ملفات التفعيل السابقة أولاً ، ثم قم بتشغيل النسخة الجديدة بعد تنقيحها من جميع الأخطاء السابقة الإحترازية ( بناءً على ردود الأخوة المشاركين ) . وهذه صورة لطريقة التفعيل عند المطور :-
    1 point
  4. وعليكم السلام ورحمة الله وبركاته .. تسعدني مشاركتك أستاذنا أبو عبدالله طبعاً انت قمت بتشغيل الملف بدون اتصال بالانترنت ، ولذلك لم يتم تسجيل جهازك على السيرفر . في النسخة الأصلية من الفكرة ، فعلاً لن يتم عمل البرنامج بعد انتهاء النسخة التجريبية وهي 14 يوم . وبالتالي انت مضطر لتفعيل النسخة من الاتصال بالانترنت ، وليس في فكرتي اي رقم يتم تزويده للعميل ، فقط اتصالك بالانترنت ويتم التفعيل في وقت قصير من تسجيل الجهاز في السيرفر . كما أخبرتك ، من المفترض ان يتوقف العمل على البرنامج . حتى أن التلاعب بالتاريخ بتقديمه أو تأخيره لن يجدي نفعاً ( في النسخة الكاملة من أداة التفعيل ) . الفكرة باختصار :- عند تشغيل البرنامج لأول مرة على الجهاز عند العميل ، يتم قراءة معرف خاص . بعد تسجيل النسخة على السيرفر ، والتواصل مع المطور ، يمكن للعميل اختيار المدة التي يريدها ( أسبوع ، شهر ، 3 أشهر ، 6 أشهر ، سنة ، كامل ) . هنا دور المطور من خلال السيرفر يتم التفعيل لرقم معرف الجهاز بالمدة ، ومطالبة العميل بالنقر على زر استرداد بيانات التفعيل . ويتم التفعيل بصمت دون اي تدخل من العميل . ولنفترض جدلاً انك طلبت تفعيل 1 شهر بدءاً من تاريخ 01/10/2025 وتنتهي في 01/11/2025 . وجئت بتاريخ 05/10/2025 ، وطلبت التفعيل لشهر آخر . هنا سيصبح لديك ( الباقي 25 يوم ، + 30 يوم شهر التمديد = 55 يوم ) أي بعد تاريخ الانتهاء سيتم اضافة 30 يوم وبهذا ينتهي التفعيل بتاريخ 01/12/2025 . في فكرتي يوجد أيضاً حماية حق العميل حتى بعد الفورمات ، بحيث . ولنفترض انك قمت بعمل فورمات وتنصيب نسخة ويندوز جديدة ، هنا عند تشغيلك للبرنامج سيتم قراءته التشغيل على انه نسخة جديدة ، وبالتالي عند النقر على زر استرداد بيانات التفعيل ، سيتم الاتصال بالسيرفر والبحث عن آخر تفعيل موجود لك مسبقاً ، وبالتالي تسترجع تفعيلك بنفس التاريخ دون اي تدخل .... على العكس ، يسعدني هذه الحديث بتوضيح ما ترغب بالإستفسار عنه لتكتمل الصورة لك .
    1 point
  5. السلام عليكم ورحمة الله وبركاته جهد مشكور جزاكم الله خيرا اولا - اريد ان اشارك في التجارب 🙂 وهذا هو كود الجهاز ID-0223222033115563284723564 ثانيا لي بعض التساؤلات لو تسمحون 1- لو لم يكن الجهاز لدي العميل متصلا بالانترنت عند تشغيل البرنامج لأول مرة ما المتوقع من البرنامج حدوثه هل سيعمل خلال الفترة التجريبية ثم يتوقف ويطالب العميل بالاتصال بالانترنت؟ 2- وماذا لو عمل بدون اتصال بالانترنت حتي نهاية الفترة التجريبية ولم يكن قد تم تسجيله للمرة الأولي علي السرفر هل سيستمر عمله كنسخة تجريبية ام سيتوقف عند نهاية الفترة؟ ربما كانت أسألة بديهية ولكن أحببت أن أثرثر كالعادة 😀😀 3- وهذا الأهم أطالب بشرح للفكرة بشكل مفصل لو اتسع وقتكم وجزاكم الله خيرا
    1 point
  6. وعليكم السلام ورحمة الله وبركاته ,, إذا سمح لي بالمشاركة الأولى 🤗 ، خطر ببالي انشاء استعلامين بدايةً ، حيث :- الاستعلام الأول ( qry_Tahseel_By_Mada ) خصصته لعرض التحصيل حسب المواد ( عدد المهارات لكل درجة داخل كل مادة ) . وهدفي منه تحليل توزيع درجات المهارات داخل كل مادة . SELECT mada_id, AA, COUNT(AA) AS عدد_المهارات FROM tbl_Mharat_tqyeem GROUP BY mada_id, AA; أما الاستعلام الثاني ( qry_Tahseel_By_Mharah ) ، تم تخصيصه لعرض التحصيل حسب المهارات ( عدد الطلاب لكل درجة في كل مهارة ) . والهدف منه تحليل أداء الطلاب في كل مهارة على حدة . SELECT tbl_Mharat_tqyeem.Mhr_id, tbl_Mharat_tqyeem.Mharh_Nm, tbl_Mharat_tqyeem.AA, Count(tbl_Mharat_tqyeem.AA) AS عدد_الطلاب FROM tbl_Mharat_tqyeem GROUP BY tbl_Mharat_tqyeem.Mhr_id, tbl_Mharat_tqyeem.Mharh_Nm, tbl_Mharat_tqyeem.AA; وبناءً على هذين الإستعلامين ، قمت بإنشاء المخطط البياني لينتج لدي الشكل التالي :- والمرفق بهذه الفكرة :- Database2.zip
    1 point
  7. وعليكم السلام ورحمة الله وبركاته إذا كنت تقصد من الأكسيس مباشرة ، فنعم ممكن ولكن بإصدارة قديمة مصممة للعمل بنمط ActiveX ، ابحث عنها في النت وستجدها ، وستجد أمثلة للعمل على VB6 تعمل بنفس الأكواد على VBA إن أردت سأبحث عنها لك في جهازي القديم فقد استعملتها من قبل
    1 point
  8. لحضرتكم بعض الارقام للعمل لوحه المفاتيح مفاتيح الأسهم KeyCode = 37 ' السهم لليسار ← KeyCode = 38 ' السهم للأعلى ↑ KeyCode = 39 ' السهم لليمين → KeyCode = 40 ' السهم للأسفل ↓ مفاتيح الوظائف KeyCode = 112 ' F1 KeyCode = 113 ' F2 KeyCode = 114 ' F3 KeyCode = 115 ' F4 KeyCode = 116 ' F5 KeyCode = 117 ' F6 KeyCode = 118 ' F7 KeyCode = 119 ' F8 KeyCode = 120 ' F9 KeyCode = 121 ' F10 KeyCode = 122 ' F11 KeyCode = 123 ' F12 مفاتيح التحكم KeyCode = 27 ' ESC KeyCode = 13 ' Enter KeyCode = 32 ' Space KeyCode = 9 ' Tab KeyCode = 8 ' Backspace KeyCode = 46 ' Delete KeyCode = 36 ' Home KeyCode = 35 ' End KeyCode = 33 ' Page Up KeyCode = 34 ' Page Down KeyCode = 45 ' Insert مفاتيح الأرقام KeyCode = 48 ' 0 KeyCode = 49 ' 1 KeyCode = 50 ' 2 KeyCode = 51 ' 3 KeyCode = 52 ' 4 KeyCode = 53 ' 5 KeyCode = 54 ' 6 KeyCode = 55 ' 7 KeyCode = 56 ' 8 KeyCode = 57 ' 9
    1 point
  9. إلى كل من ساهم في إنجاح فكرتي ، والتي ترتكز على تطوير فكرة التفعيل من خلال الإنترنت ( دون الحاجة إلى أي رمز تفعيل يتلقاه المستخدم أو العميل من خلال مطور ومبرمج قاعدة البيانات ) . وقد تم من خلال التجارب التي شاركتموني إياها الحصول على جميع الأخطاء ، وحلها بشكل كامل وجذري بإذن الله . وقد تم تحديث الملفين السابقين ( للإصدارين 64 و 32 ) ليتعاملا مع الأخطاء المكتشفة سابقاً . فعلى من يرغب باستمرار دعمه بتجربة الملف بعد إصلاح الأخطاء فله وللجميع جزيل الشكر على دعمه لي . الملف بإصدار النواة التي توافق إصدار الأوفيس لديك .. سخة تعمل على النواة 64 :- Officena 64.zip سخة تعمل على النواة 32 :- Officena 32.zip المشاركة إختيارية وليست إجبارية ، ولا عتب على من لا يرغب ، يكفينا أنه أنار المنتدى بمروره الكريم ، وسيتم تفعيل اشتراك أي مستخدم تلقائياً لحذف ملفات التفعيل السابقة ، استخدم ملف الحذف التالي حسب إصدار الأوفيس لديك . Clear64.zip أو Clear32.zip
    1 point
  10. هناك ملاحظتين : 1. الاكسس لا يستطيع تكوين حقل نص او اي حقل آخر اثناء العرض ، فتكوين الحقول تتم فقط في وضع التصميم ، لذا ومن التجربة ، ترى اني وضعت في النموذج 38 حقل نص جاهزين للعمل. 2. وفي التقرير ، الاكسس لا يستطيع ان يجعل التقرير عمودي او افقي برمجيا (ونصيحة ، لا تهدر وقتك بمحاولاتك) ، لذا اعمل تقريرين ، افقي وعمودي ، واجعل في النموذج زرين: واحد لطباعة التقرير افقيا ، والاخر لطباعة التقرير عموديا.
    1 point
  11. 2. تحريك الكائنات في النموذج هناك عدة طرق لتحريك الكائن ، ولكنها جميعا تعتمد على الحدث/الاحداث التالية: للكائن: . او حدث القسم اللي فيه الكائن ، والكائن هنا في قسم التفصيل Detail . ولكن من الخطأ استعمال الحدث للنموذج ، فالكائن موجود في قسم : . اول عمل قمت به (اعتقد في سنة 2005) كان على مثل هذا النموذج ، وفيه ملصق (مع اضافة المربع الان) . لاحظ انك تستطيع تحريك الملصق بمسكه من اي مكان في الكائن ، ولكن المربع الاجوف تستطيع تحريكه عند مسك حوافه/اطرافه فقط . ولما غيرنا خلفية المربع من شفاف (اجوف) الى خلفية عادية ، استطعنا تحريك المربع بمسكه من اي مكان . الكود الذي يمكننا من التحريك الملصق هو التالي ، واحد اهم الاسطر في الكود هو اول سطر (Dim lblDrag_X As Long, lblDrag_y As Long) ، بحيث هذه القيم تكون مخزنه لكل مرة يتحرك فيها الملصق Option Compare Database Option Explicit Dim lblDrag_X As Long, lblDrag_y As Long ' Private Sub lblDrag_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo err_lblDrag_MouseMove Static InitX As Single Static InitY As Single If Button = acLeftButton Then If InitY <> 0 And InitX <> 0 Then lblDrag.Top = (Y - InitY) + lblDrag.Top lblDrag.Left = (X - InitX) + lblDrag.Left Else InitX = X InitY = Y End If Else InitX = 0 InitY = 0 End If lblDrag_X = lblDrag.Top lblDrag_y = lblDrag.Left lblMouseMove_Resume: Exit Sub err_lblDrag_MouseMove: If Err.Number = 2100 Then Resume lblMouseMove_Resume Else MsgBox Err.Number End If End Sub . 2.Basic_Move.mdb . ولما زاد عدد حقول النص (كانت تجينا مناقصات ولازم نعبئ المناقصات على اوراق الشركة ، يعني سعر كل مادة يجب تضبيطها حسب مكانها في ورقة المناقصة ، مع كتابة ملاحظاتنا حسب نوع المنتج) . وكان لابد من توسيع الحقل ، فاستعملت مفتاح الشفت (او Ctrl) مع الاسهم (يمين - يسار - اعلى - اسفل) . اصبح الكود اعلاه هو الاساس في تحريك حقول النص بجعله في دالة (في وحدة نمطية في مشروعي الاخير) ، ودالة اخرى لتوسيع الحقول ، اما مناداة هذه الدوال فكانت من حدث كل كائن على حدة: Private Sub Form_Current() ' Load the position and the size of the 38 TextBoxes Me.Drag01.Top = [Drag01_PositionY] Me.Drag01.Left = [Drag01_PositionX] Me.Drag01.Width = [Drag01_Width] Me.Drag01.Height = [Drag01_Height] Me.Drag02.Top = [Drag02_PositionY] ..... end sub Private Sub Drag01_KeyDown(KeyCode As Integer, Shift As Integer) Call KeyMe(KeyCode, Shift, ActiveControl, iWidth, iHeight) [Drag01_Width] = iWidth [Drag01_Height] = iHeight End Sub Private Sub Drag01_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single) Call DragMe(Button, Shift, x, Y, ActiveControl, PosX, PosY) [Drag01_PositionY] = PosY [Drag01_PositionX] = PosX End Sub ثم الدوال Public Sub DragMe(Button As Integer, Shift As Integer, x As Single, Y As Single, Drag As Control, PosX, PosY) ' Drag position Static InitX As Single Static InitY As Single If Button = acLeftButton Then If InitY <> 0 And InitX <> 0 Then Drag.Top = (Y - InitY) + Drag.Top Drag.Left = (x - InitX) + Drag.Left Else InitX = x InitY = Y End If Else InitX = 0 InitY = 0 End If PosX = Drag.Left PosY = Drag.Top End Sub Public Sub KeyMe(KeyCode As Integer, Shift As Integer, Drag As Control, iWidth, iHeight) 'Typical key down event handler : ' Right Arrow = Increase the Width ' Left Arrow = Reduce the Width ' Down Arrow = Increase the Height ' Up Arrow = Decrease the Height Select Case KeyCode Case 37 'Left arrow Drag.Width = Drag.Width - 72 Case 39 'Right arrow Drag.Width = Drag.Width + 72 Case 38 'Up arrow Drag.Height = Drag.Height - (1440 * 0.1667) Case 40 'Down arrow Drag.Height = Drag.Height + (1440 * 0.1667) End Select iWidth = Drag.Width iHeight = Drag.Height End Sub . 3.Group.mdb . ومع تعديل بسيط حتى يقبل التنسيق في حقول النص للاكسس 2007 فما فوق Drag_Drop_Locations.accdb . والان بعد ان عرفنا كيف نحرك المربع ، سنتحدث عن : طريقة تحريك اطرافه افقيا وعموديا ، تغيير مؤشر الفأرة حسب مكان المؤشر. هنا سأشير الى الفكرة ، واترككم مع البرنامج: من طول او عرض اي ضلع ، 0-25% و 75-100% يكون المؤشر لتحريك المريع. يعني اذا طول الضلع 10 ، اذن من 0-2.5 و من 7.5-10 يكون المؤشر لتحريك المربع. اما من 26-74% يكون لتحريك الضلع نفسه (من حوالي 3-7) ، وعليه يتغير المؤشر. اساس الكود هنا هو نفس الموجود في اول المشاركة هذه ، ومنه تم التوسع حسب الحاجة. . 4.Size_Move.accdb . وبعد تجارب كثيرة ومختلفة ، اتضح ان استعمال الاحداث اعلاه لكائن المربع لا تفي بالغرض لمشروعي ، والسبب هو ان الحدث يبدأ بالعمل عندما يكون المؤشر على احد اضلع المربع ، بينما لا يمكن الاستفادة من منتصف المربع ، فعليه ، تم تحويل الكود الى حدث قسم التفصيل Details ، ومنها بدأ العمل بالتبلور بصورة مرضية 🙂 الذكاء الاصطناعي كان وبالا/مشكلة عليّ في هذا المشروع ، وذلك لشح البيانات عن مثل هذا العمل في الانترنت ، فكنت اضطر الى عمل الكود الاساسي لضلع واحد ، ومن ثم الطلب منه بعمل باقي الاضلاع ، او تقييده في عمل الكود بين اسطر معينة من الكود. جعفر
    1 point
  12. بالتأكيد، هذه مشكلة شائعة عند دمج المراسلات من Excel إلى Word، وتحدث لأن Word لا يتعرف تلقائيًا على تنسيق التاريخ الصحيح من Excel في بعض الأحيان، ويعامله على أنه رقم تسلسلي (وهو كيفية تخزين التواريخ داخليًا في Excel). إليك خطوات لحل هذه المشكلة: الطريقة الأولى: استخدام محولات الحقول (Field Switches) في Word (الأكثر شيوعًا وفعالية) أكمل عملية دمج المراسلات: قم بدمج المراسلات كالمعتاد حتى تظهر التواريخ كأرقام في مستند Word المدمج. حدد حقل التاريخ في Word: في مستند Word المدمج، حدد الرقم الذي يمثل التاريخ (مثل 44321). اضغط على Shift + F9: هذا سيحول الحقل من عرضه العادي إلى عرضه الكودي (مثل { MERGEFIELD "تاريخ_الميلاد" }). أضف محول التنسيق (Date-Time Picture Switch): داخل الأقواس المعقوفة، بعد اسم الحقل، أضف محول تنسيق التاريخ. يكون بالشكل التالي: للتاريخ الكامل (يوم/شهر/سنة): \@ "dd/MM/yyyy" لليوم والشهر فقط: \@ "dd MMMM" للتاريخ مع اسم الشهر (مثلاً: 25 مايو 2024): \@ "dd MMMM yyyy" مثال: إذا كان الحقل هو { MERGEFIELD "تاريخ_الميلاد" }، فبعد التعديل سيصبح: { MERGEFIELD "تاريخ_الميلاد" \@ "dd/MM/yyyy" } أو { MERGEFIELD "تاريخ_الميلاد" \@ "dd MMMM yyyy" } ملاحظة: تأكد من أن هناك مسافة واحدة بين اسم الحقل و\@. اضغط على F9: بعد إضافة المحول، اضغط على F9 (أو Fn + F9 على بعض لوحات المفاتيح) لتحديث الحقل. سيتم الآن عرض التاريخ بالشكل الصحيح. كرر العملية لكل حقول التاريخ: ستحتاج إلى تكرار هذه العملية لكل حقول التاريخ التي تظهر بشكل غير صحيح. حفظ التغييرات في المستند الرئيسي (Master Document): إذا كنت تريد تطبيق هذا التغيير على جميع عمليات الدمج المستقبلية، قم بإجراء هذه التعديلات في مستند دمج المراسلات الرئيسي (قالب Word) قبل حفظه. الطريقة الثانية: تغيير تنسيق الخلايا في Excel (أقل شيوعًا في حل هذه المشكلة بالتحديد) على الرغم من أنك ذكرت أن التواريخ مكتوبة بشكل صحيح في Excel، إلا أنه في بعض الأحيان يمكن أن يساعد إعادة التأكد من تنسيق الخلايا في Excel: افتح ملف Excel: افتح ملف Excel الذي تستخدمه كمصدر للبيانات. حدد عمود التاريخ: حدد العمود الذي يحتوي على التواريخ. انقر بزر الماوس الأيمن: اختر "تنسيق الخلايا" (Format Cells). اختر "تاريخ" (Date): تأكد من أن الفئة محددة على "تاريخ" (Date) واختر التنسيق المطلوب (مثل 14/3/2012 أو 14 آذار 2012). تأكد من نوع البيانات: في بعض الأحيان، قد تكون البيانات مكتوبة كنص على الرغم من أنها تبدو كتواريخ. لتجنب ذلك، حاول إدخال تاريخ جديد في خلية فارغة بالعمود الذي تريد تنسيقه، ثم اسحب مقبض التعبئة (Fill Handle) لأسفل لتطبيقه على باقي الخلايا، أو استخدم "نص إلى أعمدة" (Text to Columns) لتحويلها. احفظ ملف Excel: احفظ التغييرات في ملف Excel. أعد دمج المراسلات في Word: أعد تشغيل عملية دمج المراسلات في Word. نصائح إضافية: تجنب نسخ التواريخ ولصقها كنصوص: إذا كنت تقوم بنسخ التواريخ من مكان آخر، تأكد من لصقها كقيم أو كتواريخ، وليس كنصوص. اختبار على مجموعة صغيرة: قبل دمج مستند كبير، اختبر التغييرات على مستند دمج مراسلات صغير يحتوي على بضعة سجلات فقط. إعادة توصيل مصدر البيانات: في بعض الأحيان، قد يساعد فصل مصدر البيانات عن مستند Word وإعادة توصيله مرة أخرى. (من تبويب "المراسلات" -> "تحديد المستلمين" -> "استخدام قائمة موجودة" ثم إعادة تحديد ملف Excel). الخلاصة: الطريقة الأولى (باستخدام محولات الحقول \@ "dd/MM/yyyy") هي الأكثر فعالية والأسهل لتصحيح تنسيق التواريخ في دمج المراسلات. آمل أن يساعدك هذا الحل
    1 point
×
×
  • اضف...

Important Information