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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    415

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

  1. هناك عدة طرق للتعامل مع رسائل الخطأ ، الطريقة اللي انا استعملها ، هي اصطياد رقم الخطأ ، ثم التعامل معه ، فعليه ، يصبح الكود : Option Compare Database Option Explicit Dim rst_fy As DAO.Recordset Dim rst_n As Integer ' Private Sub xxx_Click() On Error GoTo err_xxx_Click 'take the Recordset one time, use it many times If rst_n = 0 Then Set rst_fy = Forms!fxy!fy.Form.RecordsetClone rst_n = 1 End If rst_fy.MoveFirst rst_fy.FindFirst "yyy='" & Me.xxx & "'" If rst_fy.NoMatch Then MsgBox "لا يوجد تطابق" Else MsgBox "يوجد تطابق" Me.Parent!fy.Form.Bookmark = rst_fy.Bookmark Me.Parent!fy.SetFocus End If Exit_xxx_Click: rst_fy.Close Exit Sub err_xxx_Click: If Err.Number = 3021 Then 'No data Resume Exit_xxx_Click Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub Private Sub Form_Close() Set rst_fy = Nothing End Sub . اما التنسيق الشرطي الذي يمكن استعماله هنا ، فيكون ابسط : . فيه ملاحظة كتبتها بالانجليزي في الكود ، وعليه قمت بهذا العدد من الاسطر ، بالاضافة الى سطر تعريف المتغير Dim rst_n ، بينما كان ممكن ان اكتب سطر واحد من Set rst_fy = Forms!fxy!fy.Form.RecordsetClone والسلام : . السبب هو : رجاء ، لما تشتغل على اي برنامج ، ابدا لا تنظر للبرنامج بعدد بياناته الآن ، وانما انظر كأنك تتعامل مع 10 او 100 الف سجل ، لهذا السبب رفعت قاعدة بيانات للتجربة: . فلما عندك كود تريد تجربه ، ممكن تجربه على هذا العدد الهائل من البيانات ، فعليه ستعرف اذا الكود الذي عملته بطيء او سريع. لما تستخدم الامر Recordset او RecordsetClone ، فانت تأخذ نسخة من بيانات الجدول/الجداول (اذا كان استعلام) ، وتُبقي هذه البينات في ذاكرة الكمبيوتر المؤقته Ram ، فيصبح التعامل مع البيانات من الذاكرة مباشرة ، لذلك من المهم ان تحذف البيانات لما تنتهي من استعمالها ، وعادة نعمل هذا في آخر الكود بالامر Set rst_fy = Nothing . في حالة برنامجنا اعلاه ، في الكود الذي وضعته انا ، فأنا أخذ بيانات الجدول مرة واحدة فقط ، ويبقى في الذاكرة الى ان نغلق النموذج ، فنحذفه من الذاكرة ، ولكن الكود الذي وضعته انت ، فأنت تأخذ البيانات من الجدول كلما تدخل في الكود (لا تنسى قد تكون الجداول في الشبكة ، وقد تكون سجلات الجدول كبيرة) ، وهذا يجعل البرنامج ابطئ !! جعفر
  2. حياك الله 🙂 عملت تغيير طفيف في الكود اعلاه ، حتى يصبح اسرع ، واخف على الكمبيوتر 🙂 جعفر
  3. تفضل 🙂 ضع هذا الكود في النموذج fx Option Compare Database Option Explicit Dim rst_fy As DAO.Recordset Dim rst_n As Integer ' Private Sub xxx_Click() 'take the Recordset one time, use it many times If rst_n = 0 Then Set rst_fy = Forms!fxy!fy.Form.RecordsetClone rst_n = 1 End If rst_fy.MoveFirst rst_fy.FindFirst "yyy='" & Me.xxx & "'" If rst_fy.NoMatch Then MsgBox "لا يوجد تطابق" Else MsgBox "يوجد تطابق" Me.Parent!fy.Form.Bookmark = rst_fy.Bookmark Me.Parent!fy.SetFocus End If rst_fy.Close End Sub . جعفر
  4. بشرك الله بالخير دائما 🙂 همم ، هذه غلطة الدكتور ، ارسل له الفاتورة 😁😅 بالفعل شكرا دكتور حسنين 🙂 جعفر
  5. اذا تغير النماذج الفرعية ، بدل ان تكون نموذج بيانات الى نموذج مستمر ، فالحل سيكون اسهل للجميع 🙂
  6. وعليكم السلام 🙂 عملتها بطريقة تختلف ، عن طريق التنسيق الشرطي: في النموذج fy اضفت حقل مخفي غير مربوط بمصدر بيانات ، اسميته tmp_yyy وفي التنسيق الشرطي للحقل yyy استعملت : . بينما في النموذج fx ، وعلى حدث الحالي ، ارسل قيمة الحقل الذي انقر عليه ، الى الحقل tmp_yyy في النموذج fy : Private Sub Form_Current() On Error GoTo err_Form_Current Me.Parent!fy!tmp_yyy = Me.xxx Exit_Form_Current: Exit Sub err_Form_Current: If Err.Number = 2455 Then 'could not see othe Form on startup Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر 1470.fxy.accdb.zip
  7. مع ان هذا يُعتبر مخالف لقوانين المنتدى: 21. يُمنع منعا باتا الإجابة على سؤالك أو أي حوار فني على الخاص أو إلى بريدك الخاص، الفائدة يجب أن تعم. ولكننا سننظر له على ان نتائج هذه المساعدة سوف تستفيد منها في تنقيح برنامجك ، وستلخص لنا النتيجة هنا ، حتى يستفيد الجميع من ذلك 🙂 جعفر
  8. رجاء لما تستطيع ان تجعل الاداة تعمل barcodex.ocx على النواتين 32 بت و 64 بت ، رجاء تخبرنا الطريقة حتى نستفيد كذلك 🙂
  9. تم تعديل المرفق في الرابط التالي ، وبه الخط (الذي يجب وضعه في مجلد الخطوط في الوندوز C:\Windows\Fonts) والمرفق يحتوي على مثال بصيغة mdb جعفر
  10. وعليكم السلام ورحمة الله وبركاته 🙂 هذه من المواضيع المستجدة علينا مبرمجي الاكسس ، والوصول الى اماكن مخصصة لمبرمجي البرامج الاخرى ، بينما كل اللي نحتاج له هو وسيط او حلقة وصل مثل ما تفضلت به دكتور حسنين ، شكرا جزيلا 🙂 انزلت المرفق وتابعت الفيديو ، وتوقفت عند التسجيل (عندي مشروع لازم اسلمه بسرعة 🙂 ). جعفر
  11. جوابي كان لمشكلتك ، وهو لذلك اعطيتك حل ، وهو في الرابط ، والطريقة في استعمال الخط (code 3 de 9) ، وهو يعمل على النواتين. هذه ليست حل ، وانت محظوظ ان عملائك يسمحون لك بهذا العمل المكلف لهم !! جعفر
  12. صحيح اني ما استعمل Adobe Acrobat Reader ، ولكني استخدم Foxit PDF Reader والظاهر انهم الاثنين يؤدون العمل ، ويسمحون بإظهار الملف في المتصفح في النموذج . جعفر
  13. انا انزلت الملف من الرابط اعلاه ، ووضعت بعض ملفات pdf حسب الاسماء الموجودة في البرنامج ، واشتغلت الملفات 🙂 ولا يوجد عندي Acrobat Reader في الكمبيوتر 🙂 جعفر
  14. وعليكم السلام 🙂 صحيح انك تستطيع تسجيل هذه الاداة وبدون اخطاء في الاوفيس 64بت ، ولكنها لم تعمل معي !! رجاء مراجعة الرابط ، حيث تم مناقشة الموضوع ، والحل جعفر
  15. كلنا في الانتظار ، مو بس اخوي ابوخليل 🙂 جعفر
  16. وعليكم السلام 🙂 بالاضافة الى فتح ملف pdf خارج الاكسس ، يمكننا فتح الملف داخل نموذج الاكسس ، ويكون اسرع في التحميل: . و جعفر
  17. 1. قصدك توسيط عمودي. لا اعرف كيف يمكن ان يتم هذا ، 2. قمت بعمل توضيح اكثر في المشاركة السابقة: . جعفر
  18. اخواني الاعزاء 🙂 رجاء قراءة ما كتبته في الرابط الذي ذكرته ، فهو خاص للمبرمجين مثلي ومثلكم : ولكن وللأسف الشديد ، فأنا ارى ان 99.99% من البرامج ، يتم حذف هذه القائمة وعدم تفعيلها ، والسبب ان المستخدم يستطيع ان يدخل في تصميم النموذج من خلال هذه الاوامر(في الدائرة الحمراء) : . لا تخفي القائمة كاملة ، واجعل المستخدم يستفيد منها ، واستخدم على الاقل هذه القوائم المختصرة : . او . وللتقرير . فهذه القوائم لا تسمح للمستخدم في الدخول في تصميم البرنامج ، ولكنه يعطيه قوة جبارة في الاكسس والتي لا توجد في بعض اقوى برامج الويب ، ان تعمل الفرز والتصفية وبدون برمجة 🙂 في برامجي اثقف واخبر المستخدم عن هذه الميزة ، ولا احتاج الى برمجتها ، ويأتيني احد المستخدمين لاحقا وبإفتخار بأنه استطاع الوصول الى سجل معين طلبه منه رئيسه (يحتاج الى تصفية عدة حقول وفرز) ، باستخدام القوائم بعد ان فشل بقية اصدقائة المستخدمين في الوصول لهذا السجل بالطرق العادية. وفي الرابط اعلاه ، فيه قاعدة بيانات مرفقة بإسم myRight_Click.mdb ، وفيها هذه القوائم جاهزة ، ولا يحتاج لك برمجة ، فقط اتبع الخطوات (بالصور من الرابط) لإستيرادها لبرنامجك من البرنامج المرفق. رجاء اجعلوا برنامجكم يبرز ، واعطوا الاكسس حقه ، ولا تحذفوا القوائم المختصرة 🙂 جعفر
  19. المعلومة كاملة هنا جعفر
  20. شكرا جزيلا على المعلومة 🙂 جعفر
  21. شكرا على التوضيح ، بس لوسمحت تعمل الخطوات الاخرى كذلك (المذكورة اعلاه). جعفر
  22. عملت تغيير على الكود ليصبح: Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Dim i As Integer, UB As Integer Dim x() As String Dim L As Single, T As Single, W As Single, H As Single x = Split(Me.Ev, Chr(13)) UB = UBound(x) If UB = 0 Then Exit Sub L = Me.Ev.Left T = Me.Ev.Top W = Me.Ev.Width H = (Me.Ev.FontSize + 4) * 20 'convert Font size Points to Twips, but the number 4 can be adjusted For i = 1 To UB T = T + H Me.Line (L, T)-(W, T), vbRed 'vbBlack Next i End Sub . والسطر المهم فيه هو ، نأخذ الارتفاع على حسب حجم الخط * 20 (لتحويل حجم الخط الى twips) ، فلا يجب تغيير هذه المتغيرات ، بينما يمكنك تغيير الرقم 4 حسب الحاجة (مع ان تجاربي يتضح منها انه لا يتغير كذلك) : H = (Me.Ev.FontSize + 4) * 20 'convert Font size Points to Twips, but the number 4 can be adjusted . والنتيجة : . او . وحتى اذا جعلنا الخط يساوي 18 نقطة . النتيجة . ونعم ، لتغيير اللون الى اللون الاسود ، بدل vbRed استعمل vbBlack 🙂 جعفر 1468.1.Lines in Report.accdb.zip
  23. وعليكم السلام 🙂 اخي محمد ، ضع عملك في البرنامج او هنا ، حتى نخبرك اين الخطأ ، فهذه الطريقة افضل للتعلم من مجرد حصولك على جواب 🙂 جعفر
  24. شكرا على جميل كلماتك 🙂 نعم الدالة mod_Draw_Box_Lines ليس لها دور الآن. جعفر
×
×
  • اضف...

Important Information