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

jjafferr

أوفيسنا
  • Posts

    9,903
  • تاريخ الانضمام

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

  • Days Won

    404

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

  1. وعليكم السلام اخي فؤاد اذا رايت ان موضوعك صار له يومين ، وفيه قراءات ، وما فيه رد ، فمعناه: يا موضوعك صعب ، او الموضوع مبهم ، ويجب اعادة شرح المطلوب بطريقة ثانية ، واذا ممكن بمثال للمقارنة 🙂
  2. اتفق مع فكرتك ، لهذا السبب قلت: https://emojis.wiki/telegram/
  3. الحمدلله اخوي عبداللطيف ، بس ياريت تشاركنا الحل حتى نعرف وين كان الخطأ في الحلول المقترحة 🙂
  4. اخوي ابوخليل قصدك صاحب الموضوع لازم يخبرنا سبب طلبه ، ومن ثم ممكن نتوصل الى افكار اخرى 🙂
  5. اخوي ابو احمد شكرا جزيلا لك على هذا التحليل ، ولكن عندي اضافة : فكرة تحديث جميع البيانات الى 0 كانت بسبب فكرة اخونا الشايب ، ولكن للاختيار بين السجلات ، فيجب ان يكون عندنا كود محلي ، اي بمعنى آخر ، يجب عمل كود لتحديث الكل في اول اختيار ، ومنها فيجب ان يكون هناك كود آخر للتنقل العادي. اخوي ابو عارف: CurrentDb.Execute تعمل مع الاصدارات القديمة للاكسس ، ولكن مشكلتها انها لا تعطيك رسالة الخطأ (اذا كان فيه خطأ) ، فتعتقد انها لا تعمل!! والخطأ الذي حدث لمعظم الاكواد اعلاه ، هو في تحديث سجل مقفل (السجل الذي عليه حقل y_n الحالي). و كود "Do While Rc > 0" يكون جدا بطيء في العمل على سجلات التجربة بمئات الألاف او اكثر. واعتقد بهذه النتائج ، اصبح لدى اخونا abofayez1 عدة خيارات يختار منها ما يناسبه. ويا ابو احمد ، اذا لقيت صورتي في بريدك ، فمو شرط معناه اني زعلان من ان كودي طلع الثاني في اختباراتك جعفر
  6. بسبب تقارب طرق الكود ، تم الاستعانه بـ 300,000 سجل ، ووضع البيانات على كمبيوتر آخر على الشبكة ، وللأسف كود ابو عارف ما اشتغل بالطريقة الصحيحة ، فلم اجربه. الثلاث مرات الاولى ، اشغل الاستعلام ليعمل حوالي 40,000 صح ، ثم اغير في النموذج ، والثلاث مرات التالية ، هي وانا في النموذج ، اختار سجل واعمله صح. والنتيجة بالثواني +----------------+----------------+----------------+ | AbuuAhmed | jjafferr_2 | ابو جودي | +================+================+================+ | 4.43701171875 | 4.421875 | 4.828125 | +----------------+----------------+----------------+ | 4.468994140625 | 4.406005859375 | 4.110107421875 | +----------------+----------------+----------------+ | 4.468017578125 | 4.406005859375 | 4.31201171875 | +----------------+----------------+----------------+ | 0.546875 | 0.468994140625 | 4.31201171875 | +----------------+----------------+----------------+ | 0.531005859375 | 0.468994140625 | 4.31298828125 | +----------------+----------------+----------------+ | 0.546875 | 0.468994140625 | 3.984130859375 | +----------------+----------------+----------------+ جعفر تم الاستعانه بالموقع التالي لعمل الجدول: https://www.tablesgenerator.com/text_tables 1624.Stress_Test.mdb.zip
  7. فكرة جيدة ، ولكن لوسمحت ارفع السقف الى 50000 سجل او اكثر ، حتى نرى الفارق بسهولة 🙂
  8. مافي داعي لهذه الجزئية ، فالكود يعمل بدونها ، إلا اذا فيه شيء تحب تخبرنا عنه 🙂 وطبعا Me.Refresh = DoCmd.RunCommand acCmdSaveRecord = If Me.Dirty Then Me.Dirty = False واذ تحب تخبرنا عن الخدعة 🙂
  9. الله يسلمك ، الموضوعين يعطوك ملف الاكسل بشكل استعلام محلي في الاكسس ، ومنها تقدر تعمل اللي تريد
  10. السلام عليكم لا ما خلص الموضوع تذكرون لما قلت: . انزلت قاعدة بيانات التجربة: واستعملت 9,999 سجل فقط ، واضفت جميع الاجابات في هذا الموضوع: . ارجو من اللي يريد يشارك ويعدل الكود حقه ان : 1. يشغل الاستعلام qry_Half_y_n_True واللي يختار حوالي 5000 سجل ويعملهم صح ، 2. يشغل نموذجه ويشوف سرعته ، ويقارنه مع سرعة النماذج الاخرى. طبعا انا كان عندي وقتي من الصبح ، واضفت النموذج الثاني حقي ، وهو الاسرع (مثل ما يقول المثل: مَحَّد يقول دِبْسي حامِض ) جعفر 1624.Stress_Test.mdb.zip
  11. وعليكم السلام بالاضافة الى رابط اخوب فادي، راجع الرابط التالي
  12. اخوي ابوخليل نعم الثمار متنوعة وتعطيك نفس النتيجة ، ولكني افضّل الحل الذي استطيع التعديل عليه وبسهولة ، لذا: انا افضّل الحل في هذه المشاركة ، حيث تستطيع عمل التغيير المطلوب مستقبلا على استعلام التجميع query1 ، وتلقائيا استعلام التحديث query3 سيعمل ، وسيأخذ المستجد من query1 تلقائيا ، كونه استعلام فرعي اما اذا ادخلت جملة SQL استعلام التجميع مباشرة كاستعلام فرعي في استعلام التحديث ، واردت ان تعمل تغيير على جملة SQL استعلام التجميع ، فالخطوات كثيرة ، ومو شرط تضبط جعفر
  13. تم اضافة رابط المشاركة الاخرى في الرابط اعلاه
  14. مافي داعي تعمل معيارين على حقلين ، وانما اجعل الشرطين في استعلام واحد ، هكذا : UPDATE Table1 SET Table1.chek1 = 0 WHERE (((Table1.userID) In ( SELECT T2.user_ID FROM Table2 AS T2 GROUP BY T2.user_ID, T2.card_No HAVING (Sum([price1])-Sum([price2]))=0 AND Table1.userID=T2.user_ID AND Table1.cardNo=T2.Card_No)) );
  15. اوووه وانا اعتمدت على على العموم ، هذا الاستعلام بعد اضافة pp=0 UPDATE Table1 SET Table1.chek1 = 0 WHERE (((Table1.userID) In (SELECT [user_ID] FROM Query1 as Q1 WHERE Table1.userID=Q1.user_ID AND Table1.cardNo=Q1.card_No AND Q1.pp=0))); 1623.Database2.accdb
  16. تفضل الاستعلام UPDATE Table1 SET Table1.chek1 = 0 WHERE (((Table1.userID) In (SELECT [user_ID] FROM Query1 as Q1 WHERE Table1.userID=Q1.user_ID AND Table1.cardNo=Q1.card_No))); . وهنا وقعت في المحظور ايضا !! بياناتك كلها متشابهه ، فعلشان احصل على سجل واحد ، عملت تغيير لبيانات cardNo في الجدول Table1 وابقيت سجل واحد فيه قيمة الجدول Table2 1623.Database2.accdb.zip
  17. لا ، هو السجل الاخير ، ثم عمل الصح في السجل الاول: واشوف انك تداركت الخطأ في النسخة الاخيرة 🙂
  18. السلام عليكم اذا ممكن اشارك معاكم 🙂 الاستعلام الفرعي هو الجواب بدلا عن الجدول المؤقت. رجاء تجربة هذا الاستعلام: UPDATE Table1 SET Table1.chek1 = 0 WHERE (((Table1.userID) In (SELECT [user_ID] FROM Query1 as Q1 WHERE Table1.userID=Q1.user_ID AND Q1.pp=0))); . وقد قام بالتحديث (ولكن انتبه ن فقيمة p=0 موجودة فقط في السجل bb وهو غير موجود في الجدول Table1 ، لذا فلن تظهر لك اي نتيجة ، وهذا ما اشار اليه اخوي ابو جودي) ، وللتجربة ، غيّر قيمة P=0 في الاستعلام الفرعي الى p=15 وستترى النتيجة 1623.Database1.accdb.zip
  19. 1. للأسف ما توصلت الى طريقة لعمل جميع التغييرات في النموذج اسرع من تغييرها من الجدول مباشرة عن طريق استعلام. للعلم ، عند تقديمي لإقتراح ، فانا انظر لقاعدة البيانات وكأن بها على الاقل 10,000 سجل. 2. في انتظار مشاركتك
  20. في هذا الموضوع ، اتضح جليا ان مقولتي صحيحة (للعلم ، اخونا العود @ابوخليل هو الذي صحح واخرج هذه الجملة بهذه الديباجة الجميلة ، شكرا لك 🙂 ) : ولا يهمك ، وهاي طريقة بحدث واحد فقط Private Sub y_n_BeforeUpdate(Cancel As Integer) '- اشارة الى سجلات النموذج With Me.RecordsetClone '- حذف الصح السابق .FindFirst "[y_n]=-1" .Edit !y_n = 0 .Update End With End Sub . ولا يزال قيد التجربة 🙂
  21. احسنت اخوي ابو عارف بس ياريت تحل الخطأ: اختار صح في آخر سجل ، ثم روح لأول سجل واعمل صح ، بتحصل على خطأ. يحتاج لها مزاج 🙂
  22. اهلا بالشايب الخبير 🙂 ولحل هذ النقطة ، هذا الكود على حدث تحميل النموذج سيحل المشكلة (نحن قمنا باختيار سجل واحد سابقا ، فالبحث يتم لسجل واحد فقط) Private Sub Form_Load() '- Find the Checked y_n field Me.y_n.SetFocus DoCmd.FindRecord "-1", , , , , , True Me.myID = Me.id End Sub . اما النقطة الثانية ، فالمفروض ان يتم تغيير البيانات من النموذج فقط ، وإلا ، فيجب تحدبث الجدول (سيكون اسرع من تحديث آلاف السجلات في النموذج)
  23. السلام عليكم اجابات الشباب كانت تغير القيم في الجدول ، بينما احاول جاهدا التقليل من زيارات الجدول ، بسبب الشبكة والتقليل من الضغط على الجداول ، فيكون عملي على النموذج فقط 🙂 طريقة العمل: في النموذج اعمل حقل مخفي اسمه myID ، ثم نعمل حدثين على الحقل y_n : قبل التحديث: يتأكد انك اخترت صح ، وانك على سجل غير السجل السابق ، فعليه ، يغير قيمة الصح من السجل السابق (ID السجل موجود في myID) ، الى 0 بعد التحديث: نعطي رقم ID السجل للحقل myID Private Sub y_n_BeforeUpdate(Cancel As Integer) If Me.y_n = -1 And Me.id <> Me.myID Then '- y_n checked, and Record ID <> myID With Me.RecordsetClone .FindFirst "[ID]=" & Me.myID .Edit !y_n = 0 .Update End With End If End Sub Private Sub y_n_AfterUpdate() Me.myID = Me.id End Sub . 1622.aa.accdb.zip
  24. السلام عليكم ابو احمد افتقدناك في منتدى الاكسس ، وفاز بك منتدى الاكسل. طرح جديد ومميز ، كالعادة ، شكرا على المشاركة. جعفر
×
×
  • اضف...

Important Information