بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9975 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
406
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
السلام عليكم 🙂 استاذ فايز ، اذا تذكر الاكواد الطويلة اللي كتبتها لك عند استيراد اكثر من صفحة من ملفات الاكسس ، او اكثر من ملف اكسس ، هذه الاكواد كانت لتنظيف البيانات من السجلات الفارغة (مثل السجل الاول الذي به الاسم ، ثم اخذ الاسم وبقية البيانات من السجل الاول واتسجيله لبقية السجلات التابعة للطالب 🙂 اما وقد رجعنا الى كود استيراد البيانات من الاكسل كما هي ، فوجب علينا ، ومثل ما قال اخي اباجودي ، فعلينا بتعبئة هذه البيانات ، لذا عملت استعلام تحديث ، ليقوم بتعبئة هذه البيانات ، بعد استيرادها مباشرة من ملف الاكسل ، هكذا : 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
-
-
وتكملة للموضوع ، بعض الاوقات نكون محتاجين ان ننادي الحدث من حدث آخر ، سواء من النموذج او خارجه ، فعادة نكتب الحدث بهذه الطريقة (لا داعي له لما ننادي الحدث من نفس النموذج ، ولكن نحتاج له اذا ناديناه من نموذج آخر) : 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) جعفر
-
مافي داعي لهذه الجزئية ،وتابع معنا التعليق التالي 🙂 لتوضيح هذه المعلومة ، فينبغي عليك النظر الى الحدث ، سواء للنموذج او التقرير : . المجموعة رقم 2 ، الاحداث يوجد بها كلمة Cancel ، لذا يمكننا ان نستخدم الامر Cancel = True ، والبرنامج يقبله وينفذه ، بينما في المجموعة رقم 1 ، فالاحداث لا يوجد بها كلمة Cancel ، لهذا السبب الامر Cancel = True لن يعمل 🙂 وهذا يسري على الوحدات النمطية كذلك 🙂 جعفر
-
طبعا لا 🙂 ارفق الكود الذي عملته ، واعطنا اسماء ومسارات الملفات. جعفر
-
ليش ما تنقل عملك كاملا الى الاكسس ؟ اعطنا البيانات ، واخبرنا شو اللي تريد عمله ، ليس بالكود ، وانما بسرد المطلوب ، وياريت من واقع البيانات اللي بترفقها 🙂 جعفر
-
وعليكم السلام 🙂 شو المطلوب؟ جعفر
-
اذا ممكن ترفق برنامجك لهذه الجزئية ، حتى ارى ما تراه 🙂 جعفر
-
سؤال يخص الدوران loop وهل يؤثر سلبا على البرنامج
jjafferr replied to rey360's topic in قسم الأكسيس Access
1. لابد من طريقة لعمل معيار لتصفية البيانات الى عدد محدد ، وممكن انك تعمل استعلام وتعمل فيه هذه المعايير والتصفية ، ومن ثم تعمل الدوران على اساس الاستعلام بالسجلات الباقية 🙂 2. هذا الكلام غير دقيق ، ولكنك قد لا تلاحظ الوقت ، او ان المعالج في السرفر اقوى بكثير من معالج كمبيوترك ، فتلاحظ هذا الفرق في الوقت 🙂 جعفر -
-
سؤال يخص الدوران loop وهل يؤثر سلبا على البرنامج
jjafferr replied to rey360's topic in قسم الأكسيس Access
وعليكم السلام 🙂 كل سطر في الكود يأخذ وقت ليقوم الاكسس بعمله ، وهنا يأتي براعة المبرمج في تقنين عمل الكود ، حتى لا يجعله يعمل اشياء غير ضرورية ، فيضيع الوقت ، والكبيوترات هذه الايام سريعة ، فلا نلاحظ الوقت الذي يأخذه الاكسس للقيام بهذه الاوامر 🙂 جعفر -
وعليكم السلام 🙂 هذا تقرير ، ولو ارفقت لنا برنامجك وبه بيانات كافية لعمله ، لساعدك الشباب هنا 🙂 جعفر
-
هذا اللي يعمل صفحة جديدة 🙂 في قسم "التفصيل" Detail ، على حدث "عند التنسيق" OnFormat اكتب (على فرض اسم كائن فرض الصفحة الجديدة: nPage : if me.Page=me.pages then nPage.visible=false else nPage.visible=true endif جعفر
-
🙂
-
ما فهمت قصدك !!
-
وعليكم السلام 🙂 لا يمكن عمل هذا من الاكسس ، ولكنك تستطيع استعمال برنامج خارجي لعمل الدمج ، بحيث تعطي امر لهذا البرنامج بدمج الملفات الاربعة ، وهذا الامر يكون بعد تصدير ملف pdf الاخير : جعفر
-
وعليكم السلام 🙂 يجب ان يكون عندك جدولين : الجدول 1 فيه الحقول التالية : رقم تسلسل الدواء ، اسم الدواء ، وباقي الحقول التابعة للدواء ، وحقل الرقم يكون مفهرس وغير قابل للتكرار ، مثلا: رقم الدواء اسم الدواء 100 فيتامين D 101 فيتامين متنوع وبه فيتامين D 102 بانادول الجدول 2 فيه الحقول التالية : رقم تسلسل الدواء اعلاه ، رقم الدواء المعارض للدواء اعلاه ، وباقي الحقول التابعة للدواء ، وحقل الرقم يكون مفهرس وقابل للتكرار ، وستكتب جميع الادوية التي تعارض رقم الدواء ، مثلا : رقم الدواء رقم الدواء المعارض 100 101 100 102 والخطوة التالية هي مقارنة الادوية ، وهنا يأتي دور الاستعلام و / او الوحدة النمطية لمقارنة الادوية التي تم اختيارها ومعرفة المعارض. طبعا هاي مجرد فكرة اولية ، بعد استلامي لرسالتك 🙂 جعفر
-
وعليكم السلام 🙂 في التقرير : 1. قبل ان تضع الكود على اي حدث ، تأكد ان تضعه في القسم الصحيح ، والكائنات موجودة عندك في هذا القسم : . 2. الحدث الصحيح لعمل التنسيق المطلوب هو ، إما حدث "عند التنسيق" او "عند الطباعة" ، عليه ، يصبح كودك هكذا : Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) ' Me.Degree1.SetFocus 'Me.TXTEDARI = DLookup("EMP_NAME", "AllEmpInfTbl", "job_title='رئيس القسم الإداري'") Me.CK1.Value = False Me.CK2.Value = False Me.CK3.Value = False Me.CK4.Value = False Me.CK5.Value = False If Me.Degree1 = "ممتاز" Then Me.CK1.Value = True ElseIf Me.Degree1 = "جيد جدا" Then Me.CK2.Value = True ElseIf Me.Degree1 = "جيد" Then Me.CK3.Value = True ElseIf Me.Degree1 = "مقبول" Then Me.CK4.Value = True ElseIf Me.Degree1 = "ضعيف" Then Me.CK5.Value = True End If End Sub جعفر
-
وعليكم السلام 🙂 ستفيدك هذه المشاركة : جعفر
-
كيفية التخلص من رسائل الاكسس الافتراضية
jjafferr replied to نبراس كاظم's topic in قسم الأكسيس Access
وبالعربي جعفر -
طيب ، بما انك ستأخذ هذا الاتجاه ، خلينا نعمله على خطوتين (ووقبل ان نبدأ ، اعمل نسخة من البرنامج واحفظه في مجلد بعيد عن مجلدات العمل) : أ- نعمل على نقل الموظفين من فرع الى آخر ، وذلك بدمج جميع الجداول في جدول crewform ، وعمل حقل اسمه (فرع) Branch : في جميع الجدول المتشابهة ، اعمل حقل اسمه Branch ، عندك طريقتين لتعبئة بيانات حقل Branch ، يا بالطريقة البدائية ، نسخ/لصق او استبدال ، او باستخدام استعلام تحديث مؤقت (مو لازم تحفظه) ، وهو الاسهل ، هكذا (بدل "Officena" اكتب اسم فرع البيانات الموجودة حاليا في الجدول (اختار الجدول الصحيح) ، في الحقل الفارغ Branch) : وبعد اتمام العمل في جميع الجداول ، الآن اعمل نسخ/لصق لجميع سجلات الجداول ، الى جدول crewform ، احذف جميع الجداول ، ما عدا الجدول crewform . بهذه الطريقة ، كل اللي لازم تعمله لتغيير الموظف من فرع الى آخر ، هو تغيير اسم الفرع الى الفرع الجديد ، والسلام 🙂 ويمكنك مواصلة العمل ببرنامجك الى ان تنتهي من الخطوة التالية في تغيير البرنامج. ب- نعمل حسب الخطوات اللي ذكرتها في مشاركتي الأولى : ماهي الحقول الثابتة التي لا تتغير بياناتها ، مثل الاسم وتاريخ الميلاد ، الآن ، خلينا نشوف الحقول اللي ممكن نعمل منها مجموعات (يعني اللي مثل: Number1 ، Expire Date1 ، Remarks1 وتصل الى 15 ) ، اكتب اسم كل مجموعة ، نعمل جدول لكل مجموعة ، ويكون في كل جدول حقل serial : في الجدول الاول مفهرس وغير قابل للتكرار ، وفي جميع الجداول الاخرى الحقل قابل للتكرار ، نعمل علاقة بين الجداول ، نعمل نموذج رئيسي للجدول رقم 1 ، وفيه مجموعة نماذج فرعية (نموذج فرعي (نوع مستمر) لكل جدول) . جعفر