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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. وعليكم السلام ورحمة الله وبركاته 🙂 لقد قام مجموعة من الاعضاء مشكورين بمشاركة اكوادهم وامثلتهم ، ولا يوجد مانع لنيل المزيد منها 🙂 مع مراعاة عدم نشر أية مواد تخالف حقوق الملكية الفكرية 🙂 جعفر
  2. السلام عليكم 🙂 دائما في عمل اي برنامج ، يجب ان تفكر في اسوء الحالات: البرنامج به عشرات الالآف من السجلات ، وعلى شبكة ، وعندك الكثير من المستخدمين 🙂 هناك طريقتين لحل سؤالك: 1. الطريقة المُكلفة ، لأنها يجب ان ترجع للجدول ، وتأخذ القيم منه ، ثم تقوم بعملية الجمع ، بإستعمال DSum ، ومع ان الكود سهل ، ولكني دائما اتفاداه ، 2. وبما ان النموذج (النموذج الفرعي في حالتنا) ، يقوم قد اخذ البيانات من الجدول ، فنستطيع عمل الجمع من واقع بيانات النموذج: أ. عن طريق الامر Me.RecordsetClone ، ونعمل امر دوران لجمع قيم حقل "السعر" ، ب. عن طريق الاستفادة من حقل الجمع t1 في ذيل النموذج الفرعي (بإستعمال الامر Sum) ، وهو كما قمت انت بعمله: صحيح ان حقل الجمع في النموذج الفرعي t1 يقوم بجمع قيم الحقل "السعر" تلقائيا ، ولكنه يحتاج الى وقت لكي يقوم بهذه العملية كل مرة ، فالحيلة هي ان ننتظر الى يتم تعبئة الحقل بالمجموع الجديد ، ثم نعطي هذه القيمة الى الحقل "اجمالي الفاتورة" في النموذج الرئيسي ، وبما انه لديك عمليتين ، اضافة وحذف ، فاليك الكود عند اضافة سجل (بما اننا نستخدم نموذج اضافة مستقل ، فيجب ان ننادي حقل النموذج الفرعي t1 عن طريق نموذجه الرئيسي ثم الفرعي) : Private Sub cmd_Add_Record_Click() 'Save the Record If Me.Dirty Then Me.Dirty = False 'Requery the SubForm to show the new Record Forms!الفاتورة!الاصناف.Requery 'wait until the sum shows in the SubForm Do Until Len(Forms!الفاتورة!الاصناف!t1 & "") <> 0 DoEvents Loop 'transfer the value to the Main Form field Forms!الفاتورة![اجمالي الفاتورة] = Nz(Forms!الفاتورة!الاصناف!t1, 0) 'close the Add Form DoCmd.Close acForm, Me.Name, acSaveNo End Sub . وهذا الكود عند حذف سجل من النموذج الفرعي مباشرة : Private Sub cmd_Delete_Record_Click() 'Delete the Record DoCmd.RunCommand acCmdDeleteRecord 'Requery the Sum Field Me.t1.Requery 'wait until the sum shows in the SubForm Do Until Len(Me.t1 & "") <> 0 DoEvents Loop 'transfer the value to the Main Form field Me.Parent![اجمالي الفاتورة] = Nz(Me.t1, 0) End Sub جعفر 1534.Update_MainForm_with_SubForm_Total.accdb.zip
  3. السلام عليكم 🙂 الظاهر هذا موسم الترقيات ، فرجاء تهنئوا معي اخواي @ابو البشر و @kkhalifa1960 على ترقيتهم لرتبة خبير 🙂 لازلنا نبحث لنزيد رصيد المنتدى من الخبراء 🙂 جعفر
  4. وعليكم السلام 🙂 المشاركة في الرابط التالي ستوضح لك السبب ، وطريقة العلاج جعفر
  5. طريقة جميلة ومبتكرة 😞 انا استخدم احد الطابعات الافتراضية المجانية لطباعة ملف pdf من هذا الموقع: https://www.dopdf.com/ واحد الميزات اللي فيها ، بأنك تستطيع عمل الورقة بالحجم الذي تريده (تكتب طول وعرض الورقة). هناك طريقة اخرى استعملتها في احد برامجي ، وهي استخدام ورقة A4 ، ولكني استعملت سطرين او ثلاثة لكل سجل (فكر فيها كأنك تطبع نموذج مفرد ، بحيث توزيع الحقول يكون بطريقة منطقية ، وليس جنب بعضها البعض) 🙂 جعفر
  6. وعليكم السلام اخوي حمدي 🙂 انزلت المرفق ، ولكنه غير كامل ولم يعمل عندي بسبب عدم وجود العديد من الكائنات !! للاسف انا حاليا مو متخصص في الايميل (قبل حوالي 12 سنه كنت فيها بالثقيل 🙂 ) ، الهمة في الشباب اللي يشتغلون على الايميل 🙂 جعفر
  7. في هذه الحالة اقترح عليك تصدير البيانات الى ورقة اكسل ، ثم برمجيا نقوم بتصغير حجم بيانات الحقول الى الى 70%
  8. بالانجليزي هو On Dirty ومعناه عندما تقوم بعمل تغيير في قيمة/بيانات الحقل (او قيم السجل ، اذا استخدمت الحدث في اعدادات النموذج) ، هذا الرابط به معلومة مفصله . و جعفر
  9. السلام عليكم اخي حمدي 🙂 لا انصح بهذا العمل ، فعند كشف الايميل ورقم الهاتف في المنتدى المفتوح ، فهذا يعرض صاحبه الى استلامه الى رسائل تخريبية واتصالات هو في غنى عنها !! جعفر
  10. وعليكم السلام 🙂 كانت لي محاولة هنا ، قد تستفيد منها جعفر
  11. يا هلا ومرحبا jo 🙂 الخطوتين: 1. الالتزام بالقائمة: نعم ، 2. حدث "عند عدم الوجود في القائمة" ، وتضع هذا الكود Private Sub Combo0_NotInList(NewData As String, Response As Integer) MsgBox "لابد من الاختيار من القائمة" Response = acDataErrContinue Me.Combo0.Undo End Sub . وتستطيع الحصول على هذا الكود وغيره من مساعد الاكسس: . جعفر
  12. السلام عليكم😊 اخوي ابو أحمد كفيت ووفيت، وفي الواقع وبعد عدة من استفسارات اخونا nssj، كنت اعتقد بأنك ستتوقف، ولكنك كنت تبهرني بإجابة وكود أفضل من سالفها، فهذا عهدنا بك، شكرا جزيلا😊 اخوي rockjones33 لك أسلوب غير متعارف عليه في الرد، فما شاء الله عليك مشرّق ومغرّب في نفس اللحظة، لهذا السبب وبسهولة ممكن الواحد يفهمك غلط، وخصوصا ان كلامك وامثلتك غير محددة الاتجاه، وأنا شخصيا ماني ملحق عليك🤔 اعتقد انكم جميعا توجهون كلامكم لصاحب السؤال، واتمنى من اخوي rockjones33 صياغة ردودة بطريقة مفهومه لنا 😊 جعفر
  13. السلام عليكم😊 واهنئك أخي المهندس @Eng.Qassim على هذه الترقية، واهلا وسهلا بك معنا من جديد😊 جعفر
  14. السلام عليكم 🙂 اخونا @سامي الحداد له صولات في المواضيع ، و ردود موفقة ، فأهلا وسهلا به خبيرا بيننا 🙂 ولايزال البحث مستمر لترقية بقية الاعضاء 🙂 جعفر
  15. اخي الفاضل 🙂 كان قصدي بانني ما قادر اتتبع الخطوات للوصول لمشكلتك ، فرجاء تساعدنا علشان نساعدك 🙂 انت صاحب الموضوع ، فرجاء اخذ من وقتك واعمل مرفق آخر فيه بيانات ، ومن واقع مرفقك وبياناتك وحقولك اخبرنا ماذا تريد ان يحدث لأي معلومة ، وكيف يجب ان تكون الصورة النهائية للبيانات 🙂 جعفر
  16. انا اشتريت نسخة مايكروسوفت اوفيس 2021 Pro Plus الذي يحتوي على مايكروسوفت اكسس بمبلغ 39.99$ يعني حوالي 40$ من هنا : https://store.techspot.com/sales/microsoft-office-professional-plus-2021-for-windows?utm_source=techspot.com&utm_medium=referral&utm_campaign=microsoft-office-professional-090922 جعفر
  17. وعليكم السلام ورحمة الله وبركاته 🙂 ولا واحد من القائمة اعلاه موجود في ملفك ، فلا نستطيع مساعدتك !! ويجب عليك اعادة النظر في جدولك ، ويجب تقسيمه الى جدولين او ثلاثة تحتوي جميعها على الحقل EmpCode ، ثم ربط الجداول بحقل EmpCode في استعلام ، وعرض النتائج التي تريدها 🙂 وإلا : 1. جدولك سيكون بطيء لما تصبح البيانات التي به تتعدى 10 الآف سجل ، 2. لن يمكنك ادخال بيانات في جميع الحقول ، فمجموع حروف اي سجل في جدول لا تتعدى 4000 حرف ، واليك هذه المعلومة من مايكروسوفت: . من اعدادات الجدول هنا: . جعفر
  18. شكرا جزيلا على النسخة جعفر
  19. السلام عليكم 🙂 انزلت المرفقين ، ولكن الشجرة ما اشتغلت عندي 🙂 بس الحمدلله تجاربي السابقة افادتك 🙂 وما العيب في هذا الكود ، فهو الاسرع في جلب البيانات 🙂 ولكن تأكد في نهاية الكود ان تفرغ الذاكرة العشوائية من هذه البيانات عن طريق: rst.close: set rst=nothing جعفر
  20. السلام عليكم 🙂 انا استخدم هذه الوحدة النمطية: Option Compare Database Option Explicit '--------------------------------------------------------------------------------------- ' Procedure : EnableArrowsScroll ' Author : Daniel Pineault, CARDA Consultants Inc. ' Website : http://www.cardaconsultants.com ' Purpose : Enable using the up and down arrows to move between records on a ' continuous form ' Req'd Refs: None ' The Form's Key Preview property must be set to True for this code to work. ' ' Input Variables: ' ~~~~~~~~~~~~~~~~ ' iKeyCode : Keycode from the source form from the KeyDown event ' frm : form object to apply the new behavior to ' ' Usage: ' ~~~~~~ ' KeyCode = EnableArrowsScroll(KeyCode, Me) 'This is placed in the KeyDown event ' 'Dont forget to set the Key Preview property to Yes ' ' Revision History: ' Rev Date(yyyy/mm/dd) Description ' ************************************************************************************** ' 1 2011-07-07 Initial Release ' 2 2017-04-08 Added DefaultView check '--------------------------------------------------------------------------------------- Public Function EnableArrowsScroll(ByVal iKeyCode As Integer, frm As Access.Form) As Integer On Error GoTo Error_Handler If frm.DefaultView = 1 Then 'Only process for Continuous forms Select Case iKeyCode Case vbKeyDown ' If CurrentRecord <> RecordsetClone.RecordCount Then 'Restrict to existing records If frm.NewRecord = False Then 'Allow going to new record for data entry DoCmd.GoToRecord , , acNext End If EnableArrowsScroll = 0 Case vbKeyUp If frm.CurrentRecord <> 1 Then DoCmd.GoToRecord , , acPrevious End If EnableArrowsScroll = 0 Case Else EnableArrowsScroll = iKeyCode End Select Else EnableArrowsScroll = iKeyCode End If Error_Handler_Exit: On Error Resume Next If Not frm Is Nothing Then Set frm = Nothing Exit Function Error_Handler: If Err.Number <> 2105 Then MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _ "Error Number: " & Err.Number & vbCrLf & _ "Error Source: EnableArrowsScroll" & vbCrLf & _ "Error Description: " & Err.Description & _ Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _ , vbOKOnly + vbCritical, "An Error has Occurred!" End If Resume Error_Handler_Exit End Function . وتناديها على حدث "الزر الاسفل" للنموذج ، هكذا Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) On Error GoTo Error_Handler KeyCode = EnableArrowsScroll(KeyCode, Me) Error_Handler_Exit: On Error Resume Next Exit Sub Error_Handler: MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _ "Error Number: " & Err.Number & vbCrLf & _ "Error Source: Form_KeyDown" & vbCrLf & _ "Error Description: " & Err.Description & _ Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _ , vbOKOnly + vbCritical, "An Error has Occurred!" Resume Error_Handler_Exit End Sub . جعفر 1532.UseArrow.mdb.zip
  21. والاهم ان المستخدم ما يرجع للمبرمج لما يريد اضافة او تغيير في النصوص 🙂 جعفر
  22. اتفق مع اخي موسى 🙂 ولكن الافضل عمل جدول وادخال هذه البيانات (وغيرها في المستقبل) في حقل ، وحقل آخر للرقم ، ومن ثم استخدام الاستعلام او دالة لقراءة النصوص وتحويلها لارقام 🙂 جعفر
  23. وعليكم السلام 🙂 هناك عدة مواضيع تناقش طلبك ، فالبحث في المنتدى سيعطيك الكثير من النتائج ، اليك احدها جعفر
  24. كفيت ووفيت ، شكرا جزيلا 🙂 الآن مشاركتك اصبحت مرجع للاعضاء 🙂 جعفر
  25. ياريت تكمل جميلك وتخبرنا عن "الملف" اللي حل مشكلتك ، علشان اللي تكون عنده المشكلة يعرف الحل مباشرة 🙂 جعفر
×
×
  • اضف...

Important Information