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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. انا كنت عامل كود بسيط لتفكيك الاسم ، يحسب حساب كلمة "عبد" ، فياريت ترفق لنا مرفق فيه بعض الاسماء علشان نجرب عليها 🙂 وطبعا ، ادخال الاسماء الاربعة مفككة هي الطريقة الصحيحة 🙂 جعفر
  2. انا اعمل لك البرنامج في الاكسس ، وتقريبا خلص ، ولكني واصل في التقرير : Positive ، negative ، All ;كيف طريقته ؟
  3. الحقول لم تكن Null وانما كانت فارغة !! استعمل هذا الاستعلام : . UPDATE Tabl_1 SET Tabl_1.A1 = f_A1(IIf(Len([A1] & "")=0,"|",[A1])), Tabl_1.A2 = f_A2(IIf(Len([A2] & "")=0,"|",[A2])), Tabl_1.A3 = f_A3(IIf(Len([A3] & "")=0,"|",[A3])), Tabl_1.A4 = f_A4(IIf(Len([A4] & "")=0,"|",[A4])), Tabl_1.A5 = f_A5(IIf(Len([A5] & "")=0,"|",[A5])); . جعفر 1312.Database2.accdb.zip
  4. كله تمام يا بشمهندس 🙂 جعفر
  5. اعطنا الملف وخلينا نشوف !! المفروض يشتغل على طول 🙂 جعفر
  6. انزل المرفق الذي به النسخة 2.02 ، فهي تدعم اللغة العربية ، او اتبع طريقة الاستاذ محمد ومرفقه 🙂 جعفر
  7. 😬 وانت عرفت ازاي ، يخرابي ، سر وانكشف 😬
  8. شوف يا أمير 🙂 الليلة كريسمس ، فالجماعة اللي يطيروا ، واللي اناديهم بالبخور ، ويجون يساعدوني ، مشغولين عني الليلة ، عماني واعرف شغلي 😁 فإذا اردت ان اساعدك ، فالمساعدة لازم تيجي منك مباشرة 😁 ارفق الكود اللي عندك فيه مشكلة ، او البرنامج ، لأني عملت التعديل على البرنامج اللي انت ارفقته 🙂 جعفر
  9. السلام عليكم 🙂 استاذ فايز ، اذا تذكر الاكواد الطويلة اللي كتبتها لك عند استيراد اكثر من صفحة من ملفات الاكسس ، او اكثر من ملف اكسس ، هذه الاكواد كانت لتنظيف البيانات من السجلات الفارغة (مثل السجل الاول الذي به الاسم ، ثم اخذ الاسم وبقية البيانات من السجل الاول واتسجيله لبقية السجلات التابعة للطالب 🙂 اما وقد رجعنا الى كود استيراد البيانات من الاكسل كما هي ، فوجب علينا ، ومثل ما قال اخي اباجودي ، فعلينا بتعبئة هذه البيانات ، لذا عملت استعلام تحديث ، ليقوم بتعبئة هذه البيانات ، بعد استيرادها مباشرة من ملف الاكسل ، هكذا : Private Sub command1_Click() Dim ImportFileName As String ImportFileName = CurrentProject.Path & "\CS_FinalMarksReport" & ".xlsx" CurrentDb.Execute ("Delete * From Tabl_1") If MsgBox("هل تريد استيراد البيانات من جديد ؟", vbYesNo + vbMsgBoxRight, "تنبيه") = vbYes Then DoCmd.TransferSpreadsheet acImport, 8, "Tabl_1", ImportFileName, True DoCmd.SetWarnings False '| DoCmd.OpenQuery "qry_Filled" '| <------- DoCmd.SetWarnings True '| MsgBox "تم استيراد البيانات بنجاح" Else MsgBox "تم إلغاء عملية الاستيراد " End If End Sub . وهذا هو الاستعلام : . وهذه جملة SQL الاستعلام: UPDATE Tabl_1 SET Tabl_1.A1 = f_A1(Nz([A1],"|")), Tabl_1.A2 = f_A2(Nz([A2],"|")), Tabl_1.A3 = f_A3(Nz([A3],"|")), Tabl_1.A4 = f_A4(Nz([A4],"|")), Tabl_1.A5 = f_A5(Nz([A5],"|")); . وهذه هي الوحدات النمطية التي تناديها للعمل: Option Compare Database Option Explicit Public p_A1 As String Public p_A2 As String Public p_A3 As String Public p_A4 As String Public p_A5 As String ' Public Function f_A1(A1 As String) As String If A1 = "|" Then f_A1 = p_A1 Else p_A1 = A1 f_A1 = p_A1 End If End Function Public Function f_A2(A2 As String) As String If A2 = "|" Then f_A2 = p_A2 Else p_A2 = A2 f_A2 = p_A2 End If End Function Public Function f_A3(A3 As String) As String If A3 = "|" Then f_A3 = p_A3 Else p_A3 = A3 f_A3 = p_A3 End If End Function Public Function f_A4(A4 As String) As String If A4 = "|" Then f_A4 = p_A4 Else p_A4 = A4 f_A4 = p_A4 End If End Function Public Function f_A5(A5 As String) As String If A5 = "|" Then f_A5 = p_A5 Else p_A5 = A5 f_A5 = p_A5 End If End Function . ومن هنا ، فيمكنك عمل استعلام عادي لأي شيء يخص البيانات ، مثل طلبك في هذا الموضوع 🙂 ونعم تستطيع استعمال الاستعلام لتعبئة بيانات جدولك الحالي ، وبدون استيراده مرة اخرى 🙂 جعفر 1312.Database2.accdb.zip
  10. جرب هذا التعديل If len(me.Filddate & "")=0 then Me.Allowedits = true else Me.Allowedits = false endif جعفر
  11. وهاي مشاركتي 🙂 . جعفر Exams.zip
  12. وتكملة للموضوع ، بعض الاوقات نكون محتاجين ان ننادي الحدث من حدث آخر ، سواء من النموذج او خارجه ، فعادة نكتب الحدث بهذه الطريقة (لا داعي له لما ننادي الحدث من نفس النموذج ، ولكن نحتاج له اذا ناديناه من نموذج آخر) : 1. Public Sub Form_Load() 2. Public Sub Form_BeforeUpdate(Cancel As Integer) فإذا اردنا ان نناديهم ، يمكننا ان نناديهم هكذا (لاحظ للأمر رقم 2 ، اننا استعملنا صفر (0) ، لأننا يجب ان نضع متغير لهذا الحدث ، وإلا فأننا نحصل على رسالة خطأ 🙂 ) : 1. Form_Load او Call Form_Load 2. Form_BeforeUpdate (0) او Call Form_BeforeUpdate(0) جعفر
  13. مافي داعي لهذه الجزئية ،وتابع معنا التعليق التالي 🙂 لتوضيح هذه المعلومة ، فينبغي عليك النظر الى الحدث ، سواء للنموذج او التقرير : . المجموعة رقم 2 ، الاحداث يوجد بها كلمة Cancel ، لذا يمكننا ان نستخدم الامر Cancel = True ، والبرنامج يقبله وينفذه ، بينما في المجموعة رقم 1 ، فالاحداث لا يوجد بها كلمة Cancel ، لهذا السبب الامر Cancel = True لن يعمل 🙂 وهذا يسري على الوحدات النمطية كذلك 🙂 جعفر
  14. طبعا لا 🙂 ارفق الكود الذي عملته ، واعطنا اسماء ومسارات الملفات. جعفر
  15. ليش ما تنقل عملك كاملا الى الاكسس ؟ اعطنا البيانات ، واخبرنا شو اللي تريد عمله ، ليس بالكود ، وانما بسرد المطلوب ، وياريت من واقع البيانات اللي بترفقها 🙂 جعفر
  16. وعليكم السلام 🙂 شو المطلوب؟ جعفر
  17. اذا ممكن ترفق برنامجك لهذه الجزئية ، حتى ارى ما تراه 🙂 جعفر
  18. 1. لابد من طريقة لعمل معيار لتصفية البيانات الى عدد محدد ، وممكن انك تعمل استعلام وتعمل فيه هذه المعايير والتصفية ، ومن ثم تعمل الدوران على اساس الاستعلام بالسجلات الباقية 🙂 2. هذا الكلام غير دقيق ، ولكنك قد لا تلاحظ الوقت ، او ان المعالج في السرفر اقوى بكثير من معالج كمبيوترك ، فتلاحظ هذا الفرق في الوقت 🙂 جعفر
  19. شو قصدك بهذا ؟ انا كنت اعتقد انه PageBreak ، ويكون له اسم ، فأنا اسميته nPage 🙂 جعفر
  20. وعليكم السلام 🙂 كل سطر في الكود يأخذ وقت ليقوم الاكسس بعمله ، وهنا يأتي براعة المبرمج في تقنين عمل الكود ، حتى لا يجعله يعمل اشياء غير ضرورية ، فيضيع الوقت ، والكبيوترات هذه الايام سريعة ، فلا نلاحظ الوقت الذي يأخذه الاكسس للقيام بهذه الاوامر 🙂 جعفر
  21. وعليكم السلام 🙂 هذا تقرير ، ولو ارفقت لنا برنامجك وبه بيانات كافية لعمله ، لساعدك الشباب هنا 🙂 جعفر
  22. هذا اللي يعمل صفحة جديدة 🙂 في قسم "التفصيل" Detail ، على حدث "عند التنسيق" OnFormat اكتب (على فرض اسم كائن فرض الصفحة الجديدة: nPage : if me.Page=me.pages then nPage.visible=false else nPage.visible=true endif جعفر
×
×
  • اضف...

Important Information