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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. آسف أخوي أبو وليد ، بس هذا الكود لا علاقة له بالموضوع هذا وانا بعيد عن كمبيوتري الاصل ، فما اعرف وين الكود الاصل علشان اقارن بينهم اقترح عليك ان تفتح سؤال جديد ، وتعرض الكود الاصل ، ثم تعرض الكود الجديد ، فمنه نستطيع ان نعمل المقارنة ، كذلك يُحبذ ان ترفق بيانات قليلة في برنامجك ، وترفعه كذلك والاهم انك تذكر رابط الموضوع الاصل ، حتى يكون سهل على المتتبع هذا الموضوع يُغلق
  2. وعليكم السلام أخي عمرو ماشاء الله عليك ، وللامام ان شاء الله بس للأسف في بطئ / تأخير في الكود انت كلما قلت if ثم endif ، فالكود يقوم بفحص كل if (لا يقرأ اي كود بين الجملتين ، اذا لم يتحقق الشرط) ، مما يعني ان البرنامج سيتحقق في 4 if في الكود الذي عملته انت ، بينما لو عملت if ثم elseif ثم elseif ثم .... ثم else ثم endif ، فإن البرنامج سيفحصه كله مرة واحدة فقط ، حيث ان if و elseif و else تُعتبر شرط واحد اليك طريقتين بدل الكود الذي استعملته انت: Function Con(x) If Mid(x, 1, 1) = "0" Then Con = Mid(x, 2, 15) ElseIf Mid(x, 1, 2) = "00" Then Con = Mid(x, 3, 15) ElseIf Mid(x, 1, 3) = "000" Then Con = Mid(x, 4, 15) ElseIf Mid(x, 1, 4) = "0000" Then Con = Mid(x, 5, 15) Else Con = Replace(x, " ", "") End If End Function او Function Con(x) If IsNumeric(x) = True Then For i = 1 To 4 If Mid(x, i, 1) = 0 Then Con = Mid(x, i + 1, 15) Else Exit For End If Next i Else Con = Replace(x, " ", "") End If End Function جعفر
  3. السلام عليكم وجدت هذا المثال ، البحث في عدة حقول ، وبين تاريخين ، فاحببت مشاركتم فيه: http://allenbrowne.com/ser-62.html والمرفق من هنا http://allenbrowne.com/binary/Search2000.zip جعفر
  4. وعليكم السلام بما انك تستخدم الاستعلام مباشرة ، فاليك طريقتين: 1. بإستخدام الوحدة النمطية Con: . وهذه هي الوحدة النمطية: Function Con(x) If IsNumeric(x) = True Then 'رقم Con = Val(x) Else 'نص Con = Replace(x, " ", "") End If End Function . والطريقة الاخرى ، هي وضع الكود كله في الاستعلام ، هكذا: . طبعا التغيير على الكود هنا سيكون اكثر صعوبة من التغيرر في الوحدة النمطية ، والنتائج في كِلا الاستعلامين: . جعفر 276.Test.accdb.zip
  5. حياك الله ويُغلق هذا الموضوع
  6. أختي الفاضلة قوانين المنتدى لا تسمح بأكثر من سؤال في موضوع واحد ، فالرجاء فتح موضوع جديد بهذا السؤال يُغلق هذا الموضوع
  7. وعليكم السلام الاكسس لما يفتح الاستعلام ، فانه لا يعطيك بيانات كل السجلات دفعة واحدة ، وانما لتسريع العمل ، فانه يحسب قيم البيانات التي تظهر على الشاشة ، ولما تنزل للاسفل لترى اي سجل ، فيقوم الاكسس بحساب السجلات الجديدة التي على الشاشة مرة اخرى ، طيب والسجلات اللي شفناها سابقا ، ورجعنا نشوفها مرة ثانية ، فكذلك يقوم الاكسس بحساب قيمها ، لأن الاستعلام لا يملك طريقة لحفظ البيانات المحسوبة ، ولأن الاستعلام يستخدم وحدة نمطية تتغير فيها القيم ، فالارقام ستتغير كذلك بس للعلم ، نحن نواجه هذه المشكلة مع الوحدة النمطية ، وذلك بسبب طبيعة عمل الاستعلام في تغيير البيانات على اساس كل سجل ، وإلا ، فلا مشكلة باستخدام الوحدات النمطية للإستعلام لهذا السبب عندك طريقتين لحل هذا الموضوع: 1. عمل جدول مؤقت ، وارسال بيانات الاستعلام مباشرة الى الجدول ، ثم قراءة البيانات من الجدول ، وعمل الخطوة التالية ، 2. ارسال البيانات مباشرة الى التقرير ، جعفر
  8. تفضل لما تختار الملفات ، تستطيع تستخدم زر Ctrl او Shift او الضغط بالماوس والسحب على اسماء الملفات لإختيار الملفات المطلوبة ، وبعدما تختار ملفات من مجلد معين ، تستطيع مرة ثانية/ثالثة ان تختار ملفات اخرى من مجلدات مختلفة (لا تقول ما ادلعكم ) وبعدين في شغلة اريد اقولها ، انا لما قلت: مو تصدقون كل شئ اقوله جعفر 275.4.ImportDegrees.accdb.zip
  9. الله يرحمها ان شاء الله ويسكنها فسيح جنانه ، ويُلهمكم الصبر على فراقها ان شاء الله أحسن الله عزاءكم ، ولا اراكم الله مكروه في من تحبون انا لله وانا اليه راجعون
  10. خلينا نبدأ بالطريقة اللي تريدها انا وضعت الكثير من الامثلة ، فما اعرف ايهم تريدني اشتغل عليه ياريت ترفع البرنامج الصحيح علشان اشتغل عليه ان شاء الله جعفر
  11. الحمدلله ان الامور مشت تمام الرجاء فت ح موضوع جديد ووضع سؤالك هناك ، فشروط المنتدى لا تسمح بأكثر من سؤال في كل موضوع هذا الموضوغ يُغلق
  12. هذا من الاساسيات اللي لازم تعملها لما برنامجك يبدأ يشتغل ، من اول يوم لأن الجداول نادرا يصير لها Corruption ، بينما الطامة تصير في جزء النماذج / التقارير ... ، فلا تضيّع الشغل الكبير (البيانات) بسبب عدم تقسيم برنامجك جعفر
  13. تفضل هذا الرابط فيه حل لمشكلتك: http://www.officena.net/ib/topic/64955-مشكلة-عند-فتح-البرنامج-على-ويندوز-8/ جعفر
  14. لا ، لأن حجم برنامجك بيصير مثل الديناصور ، وبتضطر ان تستخدم الضغط والاصلاح دائما ، لإرجاعه الى حجمه الاصلي وبعدين اذا ما انتبهت ، حجم البرنامج المؤقت يوصل الى 85MB جعفر
  15. وعليكم السلام تفضل ياسيدي واضفت لك حركة ، فلما تريد تحذف بيانات بحث احد الحقلين ، انقر عليه مرتين ، وراح يتصفى Option Compare Database Private Sub cbogender_AfterUpdate() Call searchcriteria End Sub Private Sub cbogender_DblClick(Cancel As Integer) Me.cbogender = "" Call searchcriteria End Sub Private Sub cbotype_AfterUpdate() Call searchcriteria End Sub Function searchcriteria() Dim strtype, strgender As String Dim task, strcriteria As String If Len(Me.cbotype & "") = 0 Then strtype = "[type] like '*'" Else strtype = "[type]= '" & Me.cbotype & "'" End If 'Debug.Print strtype If Len(Me.cbogender & "") = 0 Then strgender = "[gender] like '*'" Else strgender = "[gender]= '" & Me.cbogender & "'" End If 'Debug.Print strgender strcriteria = strtype & " and " & strgender task = "select * from tbl_customers where " & strcriteria Me.customers_subform.Form.RecordSource = task Me.customers_subform.Form.Requery End Function Private Sub cbotype_DblClick(Cancel As Integer) Me.cbotype = "" Call searchcriteria End Sub Private Sub Form_Load() Me.cbotype = "" Me.cbogender = "" End Sub جعفر 263.المحاولة الرابعة.accdb.zip
  16. اعتقد هذا معناه ان نسخة الاكسس اللي انصبتها هي انجليزي فقط ، ولم تقم بنصب الاكسس باللغة العربية كذلك !! جعفر
  17. هذه نفس المشكلة التي اخبرتك عنها عن برنامجك ، انظر ملاحظتي اعلاه !! أفضل طريقة تعملها: اعمل ملف اكسس جديد ، ثم استورد جميع الكائنات (جداول ، نماذج ، ...) من برنامجك القديم الذي فيه المشكلة ، وجرب البرنامج الجديد من هنا تستورد: جعفر
  18. أختي هذه المعلومة لا تساعدنا في معرفة المشكلة ، فرجاء الايضاح ، وارفاق برنامجك ، والذي به التجربة التي قمتي بها ، حتى نُخبرك مكان الخطأ جعفر
  19. السلام عليكم أخي ابو وليد في الواقع برنامجك كان تحدي البارحة لما انزلت البرنامج ، وشغّلت استعلام المجاميع ، بدأت احسب مثل الاطفال ، وعديت العدد 600 (بس جزاك الله خير ، ارجعت الثقة في نفسي اني اقدر احسب لهذا العدد ) ، والاستعلام ما خلص وسيطر على الكمبيوتر ، وما رضى يتسكر ، فاضطررت ان اغلق البرنامج من Windows Task Manager احد الافكار اللي جائتني ، وهي عمل جدول مؤقت ، نخزن فيها البيانات من الاستعلام العادي ، وثم من هذا الجدول نعمل استعلام المجاميع ، وبدأت احسب مثل الاطفال ، وعديت العدد 600 ، والاستعلام ما خلص وسيطر على الكمبيوتر ، وما رضى يتسكر ، فاضطررت ان اغلق البرنامج من Windows Task Manager دخلت في الاستعلام وفككت الكود ، واتضح لي ان المشكلة هي هذا السطر: volume: [close]-Nz(DLookUp("close","Saudistock","ID = " & Nz(DMax("ID","Saudistock","tickerr = '" & [tickerr] & "' And ID < " & [ID]),0))) . يعني احنا ننادي الاوامر DLookup و DMax بعدد السجلات 541906 مرة (ومثل ما المثل العماني يقول: وابويا انا عليك) ، لأن هذه الاوامر اصلا ثقيلة في الاستعمال ، وللعلم ، كل امر من هذه الاوامر (DMax , DLookup, Dcount, Dlast, DMin, DFirst) عبارة عن استعلام ولكنه بصيغة امر تسهيلا للمستخدم ، ولاحظت ان المعادلة عبارة عن أمرين مستقلين ، ففككتهم عن بعض ، وفهمت اللي يعملونه ، ولكني كنت محتاج اشوف نتائج كل امر بطريقة مستقلة ، فشغلت الاستعلام ، وهذه النتيجة: . وبعد عدت تجارب ، استطعت ان اتخلص من هذا الكود ، بوحدة نمطية: ' Public old_i As Long Public old_c As Double Public old_t As Long ' Function Get_Previous(i, t, c) As Double 'i = ID 't = ticherr 'c = close If Val(t) <> Nz(old_t, 0) Then old_i = 0 old_c = 0 End If old_t = Val(t) Get_Previous = Format(c - Nz(old_c, 0), "#.000") 'DM = Nz(DMax("ID", "Saudistock", "tickerr = '" & [tickerr] & "' And ID < " & [ID]), 0) 'volume = [Close] - Nz(DLookup("close", "Saudistock", "ID = " & DM old_i = i old_c = c End Function . وعلشان تشغل الاستعلام (ليس استعلام المجاميع) ، لازم تستخدم النموذج علشان يعطي البيانات نتيجة صفر الاولية المطلوبة ولاحظت كذلك انك عامل فهرسة لجميع الحقول في الجدول ، وهذا يكبر حجم البرنامج وبدون مردود ، فحذفت فهرست هذه الحقول النتيجة: في المرفق برنامجين: برنامجك بدون بيانات ، وبرنامج للجدول المؤقت ، استخدم فهرست الحقول كما في البرنامج المرفق ، واربط الجدول اللي في البرنامج المؤقت ، ببرنامجك ، وعندها عندك طريقتين للعمل (النموذج فيه زرين): 1. سيقوم البرنامج بتفريغ بيانات الجدول المؤقت ، ثم الاستعلام العادي سيُلحق البيانات جديدة بالجدول المؤقت ، وعند الانتهاء ، سيعمل استعلام المجاميع ، 2. وبدون استعمال الجدول المؤقت ، يأخذ استعلام المجاميع بياناته من الاستعلام العادي ، وانا أفضل استخدام الطريقة الاولى ، وخصوصا ان الجدول المؤقت لن يضر برنامجك وافضل شئ في هذه العملية هي نتائج السرعة: 1. والذي فيه استعلام الحاق بيانات في الجدول المؤقت ، ثم عمل استعلام المجاميع = 120 ثانية 2. استعلام المجاميع والذي يأخذ بياناته من الاستعلام العادي = 73 ثانية 3. واذا كانت البيانات موجودة في الجدول المؤقت ، واجرينا استعلام المجاميع = 3 ثوان جعفر 261.1.SaudiSatck2.zip
  20. وعليكم السلام ما فهمت قصدك ممكن تفصيل أكثر ، و مثال لوسمحت جعفر
  21. في الحدث ، عند التنسيق ولا علاقة له بنسخة الاكسس جعفر
  22. رجاء عمل سؤال جديد لهذا الموضوع ، لأن قوانين المنتدى لا تسمح بأكثر من سؤال في كل موضوع جعفر
×
×
  • اضف...

Important Information