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

عفرنس

04 عضو فضي
  • Posts

    1,069
  • تاريخ الانضمام

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

مشاركات المكتوبه بواسطه عفرنس

  1. 55 دقائق مضت, Barna said:

    اخي ابا ابراهيم الكلام كان موجه للاخ فايز ..... لانه كان يسأل عن طريقة لربط الشعب بالمعلمين والطلاب

    ليس لدي الملف ولكن اردت اعطاء اخي فايز افكار للربط بين المعلمين وشعبهم حتى تسهل عليه تصدير البيانات بدلا من الاختيار في كل مرة ومع كل معلم .... بارك الله فيك

    ننتظر من الاخ فايز لو كان لديه جداول الطلاب والمعلمين للتفكير في الربط

    @أبو إبراهيم الغامدي @Barna 

    هذه ملفات اكسل ( جداول الطلاب - المعلمين ) 

    CS_GetStudentScheduleReport (4).xlsx Teacher Schedule.xls

  2. 18 دقائق مضت, أبو إبراهيم الغامدي said:

    وهذا يعني أنك تستخف بي!

    أخي @أبو إبراهيم الغامدي 

    والذي رفع السماء بلا عمد ما طرأ هذا الكلام على بالي .. غفر الله لي ولك .. 

    * الأمر الثاني فالنسخة التي أعمل عليها فعلا ليست التي عملتها أنت .. وهذا ربما هو الذي أشكل علي .. 

    * وإلى هنا سأتوقف .. 

    * وأسأل الله أن يغفر لي ولك .. 

    • Haha 1
  3. 8 دقائق مضت, أبو إبراهيم الغامدي said:

    أرجو أن تتفهم أنه في هذه المرحلة لا يمكن اختيار شعبة أو شعب بعينها! يجب أن تكون الشعب متسلسة.

    لا تقم باختيار قيمة في مربع الشعبة!

     

    أخي @أبو إبراهيم الغامدي إذا لم أقم باختيار الشعبة في النموذج فلن يظهر لي اسم المادة أو المقرر .. كما ترى في الصورة المرفقة .. 

    إذا كيف أعمل ؟؟ فأنا لم أفهم ما تفضلت به . 

    1.jpg

  4. منذ ساعه, عفرنس said:

    عندما أرحل البيانات إلى القالب لا يضيفها إلا في شيت 2 فقط . لعلك ترفق لي البرنامج بالكود الجديد . فلعلي أخطأت في نسخ الكود .. 

    @kanory 

    هلّا مررت بنا 

    38 دقائق مضت, Barna said:

    الحقيقة لا ادري ولكن الكود يعمل طبيعي لدي

     

    1.png

    ..

  5. الان, Barna said:

    الحقيقة لا ادري ولكن الكون يعمل طبيعي لدي

     

    1.png

    هل في اعتقادك نوع اصدار أكسس ؟؟ 

    اللي عندي 2016

    الان, عفرنس said:

    هل في اعتقادك نوع اصدار أكسس ؟؟ 

    اللي عندي 2016

    ما رأيك ترفق لي النسخة التي عندك ؟؟ 

    2 دقائق مضت, عفرنس said:

    هل في اعتقادك نوع اصدار أكسس ؟؟ 

    اللي عندي 2016

    ما رأيك ترفق لي النسخة التي عندك ؟؟ 

    هذا قالب الرياضيات الذي أعمل عليه .. @Barna

    رياضيات .xlsm

  6. 7 دقائق مضت, Barna said:

    ابحث عن هذا الكود لديك 

    واستبدله بهذا ...

    
       ("SELECT STUDENT.STUACDID, STUDENT.STUNAME FROM STUDENT WHERE (((STUDENT.المادة)='" & text3 & "') AND ((STUDENT.الشعبة)='" & RS_SECTIONS![الشعبة] & "')) ORDER BY STUDENT.STUNAME;")

     

    1.png

    أحسنت الان ضبط عدم تكرار الأسماء .. 

    لكن ما زال عندي مشكلة عدم وضع الشعب في الشيت المحدد لكل شعبة .. 

    1 دقيقه مضت, أبو إبراهيم الغامدي said:

    أعتذر عن هذا الخطأ.. أ. @Barna قام بالواجب

    كلاكما فيه الخير والبركة .. ما قصرتم أخي @أبو إبراهيم الغامدي و أخي @Barna 

    لكن يبقى لدي مشكلة عدم وضع شعبة 2 في شيت 4 وشعبة 3 في شيت 6 وشعبة 4 في شيت 8 

    لا أدري أين الخلل عندي . 

     

  7. 7 دقائق مضت, Barna said:

    الكود شغال في الملف .... انظر ...

     

    1.png

    2.png

    ممتاز لكن ليش كرر اسم الطالب ؟؟ 

    الان, عفرنس said:

    ممتاز لكن ليش كرر اسم الطالب ؟؟ 

    يعني جاء باسم الطالب 7 مرات في الشيت رقم 2 بناء على عدد المواد التي يدرسها .. 

  8. 9 دقائق مضت, عفرنس said:

    @Barna تم إضافة التعديل الذي تفضلة به وعند التجربة تظهر الرسالة المرفقة في الصورة

    1.jpg

    تم حل المشكلة بحذف exit sub لكن هناك مشكلة أخرى وهي : انه تم اضافة جميع طلاب المستوى في الشيت كما ترى في الصورة المرفقة .. 

    نحتاج تصفية الطلاب بحيث ما يعطي الا طلاب الشعبة فقط 

     

    1.jpg

  9.  

     

    13 دقائق مضت, Barna said:

    تم التوصل الى المطلوب وهذا هو التعديل ....

    
    
      Dim fldrname As String
      Dim fldrpath As String
      Dim LExcelOriginal      As String
      Dim LExcelCopyOf        As String
      Dim WHERE$ '.. اللاحقة $ تعني أن المتغير نصي
      
      Dim RS_SECTIONS As DAO.Recordset
      Dim RS_STUDENTS As DAO.Recordset
      Dim fso As Object
      Dim objExcel     As Object
      Dim objWorkbook  As Object
      
      '-- إنشاء مجلد للمقرر
      Set fso = CreateObject("scripting.filesystemobject")
      fldrname = Me.[text3]
      fldrpath = CurrentProject.Path & "\السجل الالكتروني\" & fldrname
      If Not fso.FolderExists(fldrpath) Then
        fso.createfolder (fldrpath)
      End If
        
      '-- التأكد من توفر البيانات الأولية
      If Len(Me.text2) Then
        WHERE$ = " WHERE (Student.المادة='" & Me.text3 & "')AND (Student.الشعبة='" & Me.text2 & "')"
      ElseIf Len(Me.text3) Then
        WHERE$ = " WHERE (Student.المادة='" & Me.text3 & "')"
      Else
        MsgBox "بينات التصدير غير مكتملة"
        Exit Sub
      End If
      
      '-- إيجاد الشعب
      Set RS_SECTIONS = CurrentDb.OpenRecordset _
      ("SELECT  DISTINCT [الشعبة] FROM Student " & WHERE$ & "ORDER BY [الشعبة]")
      
      If RS_SECTIONS.RecordCount = 0 Then
        MsgBox "لا توجد بيانات لتصديرها"
        Exit Sub
      End If
      '-- نسخ قالب مصنف البيانات إلى مجلد المقرر
      LExcelOriginal = sXlsFile
      LExcelCopyOf = CurrentProject.Path & "لسجل الالكتروني\" & fldrname & "\" & Me.[text3] & "_.xlsm"
      Call FileCopy(LExcelOriginal, LExcelCopyOf)
      
      Set objExcel = CreateObject("Excel.Application")
      Set objWorkbook = objExcel.Workbooks.Open(LExcelCopyOf)
    
      '-- تدوير البيانات بناء على الشعب
      Dim SHEET%
      SHEET% = 2
      Do Until RS_SECTIONS.EOF
      
      
      
        '-- إيجاد أسماء الطلاب بناء على الشعبة
        Set RS_STUDENTS = CurrentDb.OpenRecordset _
        ("SELECT STUACDID,STUNAME FROM STUDENT WHERE [الشعبة]='" & RS_SECTIONS![الشعبة] & "' ORDER BY STUNAME")
        ' تعديل اسم صفحات الاكسل حسب اسماء الاستعلامات
        objWorkbook.Sheets(SHEET%).Name = RS_SECTIONS![الشعبة]
    
        
        
        '-- بيانات الترويسة
        objWorkbook.Sheets(SHEET%).range("B1").Value = _
        "اسماء طلاب الصف " & "(" & Me.[text1] & ")" _
        & " -- " & "(" & RS_SECTIONS![الشعبة] & ")" _
        & " المادة " & "(" & Me.[text3] & ")" _
        & " معلم المادة / " & "(" & Me.[text4] & ")"
    
        '-- بيانات الطلاب
        objWorkbook.Sheets(SHEET%).range("c5").CopyFromRecordset RS_STUDENTS
        SHEET% = SHEET% + 2
    
    
        '-- الانتقال إلى الشعبة التالية
        RS_SECTIONS.MoveNext
      Loop
      '-- حفظ البيانات
      objExcel.DisplayAlerts = True
      objWorkbook.Close SaveChanges:=True
      
      '-- إغلاق المصادر
      objExcel.Quit
      Set objWorkbook = Nothing
      Set objExcel = Nothing
      Set RS_SECTIONS = Nothing
      Set RS_STUDENTS = Nothing
    
    '  VBA.Shell "Explorer.exe " & Chr(34) & LExcelCopyOf & Chr(34), vbNormalFocus"هذا السطر لفتح ملف الاكسل بعد التصدير"
    '  DoCmd.DeleteObject acTable, "temp"
      MsgBox "تم تصديرالبيانات بنجاح"

    تم اضافة هذه الشيفرية ....

    
    
        ' تعديل اسم صفحات الاكسل حسب اسماء الاستعلامات
        objWorkbook.Sheets(SHEET%).Name = RS_SECTIONS![الشعبة]

     

    لعلك أخي @Barna ترفق البرنامج بعد التعديل الذي تفضلت به .. 

  10. 7 دقائق مضت, Barna said:

     

    اخي @أبو إبراهيم الغامدي 

    هل يمكن تعديل الشيفرة السابقة ليكون اسم الشيت هو اسم الشعبة المصدرة لتلك الورقة ......

    بارك الله فيك ..

    👍👍

    ننتظر رد الأخ الفاضل @أبو إبراهيم الغامدي 

  11. إخواني الفضلاء .. @أبو عبدالله الحلوانى @أبو إبراهيم الغامدي 

    تحية طيبة لكم .. 

    بعد تجربة الكود الذي تفضل به أخي @أبو عبدالله الحلوانى فقد وجدته هو المطلوب ويفي بالمقصود مع بعض التعديل في حال الحاجة . وفقكم الله جميعا .. ولا حرمكم الأجر . 

    If ShabaNo <= 4 Then
        shetNo = Val(ShabaNo * 2)
    Else
        Select Case ShabaNo
        Case 5
            shetNo = 2
        Case 6
            shetNo = 4
        Case 7
            shetNo = 6
        Case 8
            shetNo = 8
        End Select
    End If

     

  12. 15 دقائق مضت, عفرنس said:

    افعل ما تراه مناسبا .. المهم نصل الى النتيجة .. 

    يسر الله امرك .. 

    البرنامج عندي مكتمل لا غبار عليه .. فقط اريد اضافة بيانات الشعب في القوالب المرفقه كما ذكرت مسبقا .. 

    وأشكر لك مشاركتك واهتمامك .. 

    الان ارفق لك البرنامج وفيه بعض البيانات .. 

    @أبو إبراهيم الغامدي

    تجربة.rar

  13. 9 دقائق مضت, أبو إبراهيم الغامدي said:

    بعدها هذا التوضيح، لدي اقتراح فيما يتعلق بتصفية البيانات..

    في اعتقادي أننا لسنا بحاجة إلى إنشاء جدول مؤقت لترحيل البيانات إلى أكسل! بل يمكن استخدام جدول الطلاب مباشرة! 

    المنهج CopyFromRecordset له محددان إضافيان هما عدد الأعمدة، وعدد الصفوف المطلوب جلب البيانات منها في مصدر السجل.. إذا أردنا مزيدا من التحكم..

     

    افعل ما تراه مناسبا .. المهم نصل الى النتيجة .. 

    يسر الله امرك .. 

    8 دقائق مضت, ابو البشر said:

    كلامك كله صيحيح لأنه يعمل على موقع نور ....

    فيموقع نور يتم تصدير جداول المعلمين وجداول الطلاب ومنها يمكن الربط بين جداول الطلاب والمعلمين بطريقه تسهل عليك كا ما تريد فهله فيما بعد .... لكن طالما انك بدأت بطرقك هذه إذا لابد من البحث من مخرج ..... وقد تجد لها حل من الاخوة الخبراء ...

    البرنامج عندي مكتمل لا غبار عليه .. فقط اريد اضافة بيانات الشعب في القوالب المرفقه كما ذكرت مسبقا .. 

    وأشكر لك مشاركتك واهتمامك .. 

    4 دقائق مضت, أبو إبراهيم الغامدي said:

    ورقة بيانات الطلاب التي تستوردها من أكسل يوجد بها معلومات كثيرة ومن ضمنها اسم معلم المادة! وبالتالي يمكن تضمين اسم المعلم ضمن جدول بيانات الطلاب، كما هو الحال مع اسم الشعبة والمادة...

    لكن ليس لديّ منها شيء حتى أطبق عليها  

    الان ارفق لك البرنامج وفيه بعض البيانات .. 

  14. 1 دقيقه مضت, ابو البشر said:

    أخي فايز ...

    المفروض كل شعب المعلم الواحد تكون مرتبطة بالمعلم نفسه من خلال علاقة يفهمها البرنامج .... حتى اذا كتبت الكود في التصدير للاكسل يبدأ بالمعلم س وينفذ تصدير كل شعبه بالترتيب الى ملف الاكسل ثم يبدأ بمعلم آخر وهكذا تكون العملية صحيحة في رأي الخاص .... بارك الله في الجميع

    أخي @ابو البشر 

    البرنامج يتم استيراد البيانات اليه من خلال جدول الطلاب .

    البيانات تشمل ( المستوى -الشعبة - والمادة - واسم الطالب ) وكل هذه مجتمعة في الجدول .. 

    أما أسماء المعلمين فهي مستقلة ولذلك تلاحظ انها في جدول مستقل .. 

    فمن الصعب اضافة كل معلم في الجدول 

  15. 9 دقائق مضت, أبو إبراهيم الغامدي said:

    أحسنت البيان أ. محمد..

    وفي نظري أن بقاء كل شعبة في ورقة مستقلة أرتب للبيانات وأسهل في التعامل!

     

    أخي @أبو إبراهيم الغامدي 

    الأخ @أبو عبدالله الحلوانى استطاع ايجاد الحل للشعب من 1الى 4 

    بقي شعبة 5 الى 8  كنت أريدها بنفس الطريقة .. 

  16. 1 دقيقه مضت, أبو عبدالله الحلوانى said:

    أولا- باعتذر لتأخري بالرد فانا لا أزور الموقع الا بشكل متقطع هذه الأيام

    ثانيا- لنصل الي الحل الذي يرضيك أعد النظر فيما قال أستاذنا أبو ابراهيم.

    ما هي الآلية التي ستضيف بها بيانات الشعبتين في الشيت الواحد هل ستكون اسماء الشعبة الأولي أولا ثم بيانات الشعبة الثانية تحتها بنفس الأعمدة أم سيتم تغير موضع ادخال كل شعبة 

    أوضح لنا هذه الجزئية لكي نستطيع المساعدة؟ كيف تريد أن يكون شكل بيانات الشعبتين داخل الشيت الواحد؟؟

     

    أخي @أبو عبدالله الحلوانى  حتى تتضح الصورة

    الان كل قالب اكسل يحوي 8 شيتات .. 

    وعندي كمثال مادة الرياضيات يدرسها معلمان . 

    المعلم الاول يدرس من شعبة 1 الى 4 

    المعلم الثاني يدرس من شعبة 5-8 

    كل معلم سأعطيه طلابه في ملف اكسل 

    فالمعلم الاول سيكون طلاب شعبة 1 في شيت رقم 2 وطلاب الشعبة 2 في شيت رقم 4 وهكذا شعبة3 في شيت 6 وطلاب شعبة 4 في شيت 8 

    _______

    المعلم الثاني / اريد يكون طلاب شعبة 5 في شيت 2 

    وطلاب الشعبة 6 في شيت رقم 4 وهكذا شعبة 7 في شيت 6 وطلاب شعبة 8 في شيت 8 

    ان شاء الله اكون وضحت مرادي 

  17. 4 ساعات مضت, أبو إبراهيم الغامدي said:

    بحسب قالب البيانات في ورقة أكسل لا يمكن تطبيق الفكرة التي أشرت إليها أعلاه..

    أنت بحاجة إلى إعادة نسخة تنسيق القالب ولصقه في الأسفل لتتمكن من إضافة الشعبة الثانية! ولا  أظن أنه يوجد طريقة أخرى لتطبييق الفكرة..

    وهناك إشكالية أخرى ؛ وهي طريقة تصفية البيانات التي تعمل بها في النموذج لا تسمح باختيار قيم متعددة!

     

    جزاك الله خيرا أخي الفاضل @أبو إبراهيم الغامدي على مرورك ..

    هذا هو البرنامج وقوالب اكسل .. 

    ** ملحوظة : كنت أضفت ماهو في المستطيل الأحمر المرفق في الصورة .. فأحيانا تنجح الطريقة وأحيانا أخرى لا تنجح .. 

    إليكم القوالب مرفقة .. 

    @Shivan Rekany

    1.jpg

     

    تجربة.rar

    البرنامج.rar

×
×
  • اضف...

Important Information