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

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

أوفيسنا
  • Posts

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

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

  • Days Won

    13

كل منشورات العضو أبو إبراهيم الغامدي

  1. أهلا بك أ. جعفر أهم شيء أنها أجبتك.. سبب مشاركتي هو التطرق لمعالجة البطئ الناتج عن تحميل الملفات الكبيرة! وليس الاستعراض بصفحة الويب.. يعتمد المرفق الذي أدرجة في المشاركة على سبب البطئ وكيفية معالجته. ولتسهيل الأمر؛ فإن البطء يكمن في أن معالجة البحث في البيانات الكبيرة التي تعتمد على (SELECT...... WHERE) تحتاج إلى تحميل مصدر السجل بعدد الحروف التي تبحث عنها! وهذا يرهق قاعدة البيانات وقد يؤدي إلى أغلاقها.. ولهذا نحن بحاجة إلى تحميل مصدر السجل مرة واحدة، ومن ثم نقوم بترشيح البيانات حسب الطلب.. وإذا ما جعلناه هذا الأمر يجري في الخلفية ثم عرضنا النتائج على النموذج المستمر فلن نشعر بالتأخر أو الثقل..
  2. أهلا بكم جميعا.. عندي طريقة يمكن أن تعجبكم! افتح ملف الورد وقم بحفظه على هيئة ملف Html بالإمتداد (html,htm) ومن ثم قم باستراده أو ربطه بأكسس! إذا استخدمت أسلوب الربط، فإن بإمانك العمل بين الورد والأكسس! لكن هذا الأسلوب يتميز بأنه بطيء. ولتجنب هذا الأمر يمكن تجربة المرفق. ImportFromWordTable.zip
  3. لماذا تضع علامات التنصيص😬 على العموم هذه الطريقة مطروقة من قبل.. ولي مشاركة بهذا الخصوص أهلا أبا جود.. سوف أعود إلى المرفق وأقوم بالطبيق عليه ورفعه.. انتظرني بعض الوقت..
  4. أهلا بك.. أعتذر عن هذا الخطأ بسبب العجلة Const strDefTagStart = "<strong><font color=black>" Const strTagStart = "<strong><font color=red>" Const strTagEnd = "</font></strong>" Public Function StrHighLight(ByVal strFieldName As String, ByVal FindAsType) As String StrHighLight = IIf(Len(strFieldName), Replace(strFieldName, FindAsType , strTagStart & FindAsType & strTagEnd ),strFieldName) End Function
  5. أهلا بك.. أحسنت.. ضع الشفرة التالية في وحدة نمطية عامة Const strDefTagStart = "<strong><font color=black>" Const strTagStart = "<strong><font color=red>" Const strTagEnd = "</font></strong>" Public Function StrHighLight(ByVal strFieldName As String, ByVal FindAsType) As String StrHighLight = IIf(Len(strFieldName), Replace(strFieldName, FindAsType , strTagStart & FindAsType & strTagEnd )) End Function
  6. أهلا بك.. الوضع الطبيعي للشفرة بهذا الشكل.. Public Function StrHighLight(ByVal strFieldName As String, ByVal FindAsType) As String StrHighLight = IIf(Len(strFieldName), Replace(strFieldName, FindAsType , strTagStart & FindAsType & strTagEnd )) End Function لكن لديك متغيرات ليست مدرجة ضمن الوظيفة! وليست ضمن محددات الوظيفة! هل هي متغيرات عامة؟ من أين تأخذ القيم؟
  7. تحليل جدول الحصص دراسة البيانات عند دراسة البيانات المتوفرة في الجدول يمكن أن نكتشف أن الشعب الدراسية هي المجمعة للبيانات الأخرى، وبالتالي سننطلق من هذا التصور إلى مناقشة باقي العناصر ومدى ارتباطها بهذا التصور.. يمكن للشعبة الدراسية أن تحتوي على العناصر التالية: المقررات. الطلاب. القاعات. يمكن أن يكون هناك عناصر أخرى، لكنها ليست ظاهرة في جدول البيانات.. تحليل العناصر الشعبة: بما أن الشعبة هي أولى العناصر التي يمكنها تجميع العناصر الأخرى فإن معرف الشعبة سيكون حاضرا في العناصر التي ستندرج تحت هذا المجمع. المقرر: هو المادة الدراسية التي تقررها المنشئة التعليمية للدراسة في هذه الشعبة. وبما أن المقرر لا ينفك عن المعلم؛ إلا أن هذا الأخير يسبب إشكالاً في تكوين العلاقة بين المقرر والشعبة! ولهذا لابد من فهم الإشكال وإيجاد الحلول المناسبة له. يكمن هذا الإشكال فيما يلي: وجود مقرر يقوم بتدريسه أكثر من معلم! وجود معلم يقوم بتدريس أكثر من مقرر! وجود معلم يدرس مقرر ليس خارج عن اختصاصه! وفي نظري أن دمج معرف المقرر مع معرف المعلم لإيجاد معرف جديد مدمج وفريد لكل مقرر مع معلمه؛ هو الأفضل. القاعة: هي المكان الذي تُؤدى فيه العملية التعليمية، وهي في الغالب الفصل الدراسي، وفي الغالب يكون مسمى القاعة صوريا، إذا لم يكن هناك انتقال للطلاب بين القاعات. الطلاب: هم مجموعة من الدارسين ينتمون في الغالب إلى مستوى دراسي واحد، وتجمعهم مقررات دراسية موحدة. جداول نقل البيانات لا يخفى أن البيانات التي في جدول الحصص تنتمي إلي جداول بيانات متعددة، كما أن ورقة البيانات التي لدينا ليست هي جدول بيانات الحصص بالتأكيد. سوف نقوم بإنشاء عدة جداول تحتوي على الحد الأدنى من الحقول التي يمكن نقل البيانات إليها.. جدول الشعب.. يتألف هذا الجدول من الحقول التالية المعرف عنوان الشعبة (مسمى الشعبة) وصف الشعبة جدول المقررات.. المقررات ليست هي المواد، وبالتالي سوف يكون هناك جدول آخر للمواد. يتألف جدول المقررات من الحقول التالية المعرف رمز المقرر.. يتألف من مقطعين؛ المقطع الأول للمادة، والثاني للمعلم. عنوان المقرر (مسمى المقرر) وصف المقرر جدول القاعات.. يتألف هذا الجدول من الحقول التالية المعرف عنوان القاعة وصف القاعة جدول الطلاب.. يتألف جدول الطلاب على الحقول التالية المعرف رمز الطالب (الرقم الأكاديمي) اسم الطالب جدول المواد.. يتألف جدول المواد من الحقول التالية المعرف رمز المادة الوصف جدول الحصص.. هذا الجدول من أكثر الجداول استهلاكاً للبيانات، وأقواها تمرداً على التطبيع! يتكون هذا الجدول من الحقول التالية المعرف رمز الشعبة.. سيكون موضع اعتراض إذا كان في الشعبة أكثر من صف دراسي رقم الأسبوع (الدراسي).. سيكون موضع اعتراض إن لم هناك خطة دراسية متغيرة رقم اليوم رقم الحصة رمز المقرر.. (وليس المادة) هذا هو التحليل الأولي للجداول، وسف يتم تحسينها في الوقت المناسب، عند مناقشة الجداول تكوين الجداول المرتبطة. هذه البيانات مبنية على التصور المجرد لبيانات جدول الحصص، وليس عن خلفية مسبقة بنظام نور التعليمي! ولذا فإن هذا التصور هو بالتأكيد عارٍ عن الخبرة المتوقعة، وبالتالي نسبة الصواب ضئيلة جدا بالنسبة لهذا المشروع.. Noor Data Processing.zip
  8. أهلا بكم.. لماذا لم أقم بتنفيذ إجراء إنشاء جدول الحصص مباشرة، ولما أنفذه من خلال النموذج؟! السبب هو: إعطاء معالج البيانات فرصة لإعادة تسمية الأعمدة أو ترتيبها أو دمجها قبل التنفيذ! ومن أمثلة ذلك.. _ حذف عمود اسم الطالب.. _ إعادة تسمية عمود الرقم الأكاديمي.. _ دمج عمود القاعة مع عمود المقرر والشعبة، وإعادة تسميته بأسماء الحصص.. الشفرة المتعلقة بهذا الإجراء في التالي.. Sub FILL_MISSING_STID() Dim RS As DAO.Recordset Dim STID As Variant Dim I As Integer '-- Set RS = CurrentDb.OpenRecordset("TBL_SCHEDULE", dbOpenDynaset) '-- Do Until RS.EOF STID = RS!STID If Len(STID) Then For I = 1 To 4 RS.MoveNext ' RS.Edit Debug.Print I, STID ' RS!STID = STID ' RS.Update Next End If RS.MoveNext Loop End Sub الشفرة بهذا الوضع معطلة عن إرسال البيانات إلى الجدول، بل ترسل البيانات إلى الشاشة السريعة.. إذا تيقنت أنها تقوم بالعمل على وجه صيحيح؛ قم بإزالة التعطيل.. يمكنك وضعها في زر أمر تحت تبويب (QUERY COMMAND) مع رسالة إشعار باكتمال الإجراء.. لا يوجد مرفقات..
  9. أهلا بك أ. @ابوخليل الهدف هو البقاء متصلا .. __ الاطلاع على تقارير برنامج نور، لاكتشاف كيف يفكر مطوروا النظام.. __ استقطاب مهارات الزملاء في معالجة البيانات.. __ تطوير مهاراتي الفردية والسعي لمعرفة الجديد.. __ جني الفوائد من مداخلات الزملاء.. __ تجميع ماسبق ووضعه في قاعدة بيانات بمسمى (المعلم النشط Active Teacher)..
  10. أهلا بكم.. قبل أن أبدأ في تناول موضوع التخلي عن الأعمدة الفارغة برمجياً؛ أود أن أتحدث عن مقطعين أساسيين في جملة الاستعلام... __ المقطع الأول: مسمى ورقة البيانات والمحددات التابعة لها [SCHEDULE$B17:END] فهذا المقطع يبين مسمى ورقة البيانات باللون الأرجواني في الشق الأيسر، واللون الأحمر في الشق الأيمن هو لمحددات موضع البيانات.. فالجزء الأيسر يشير إلى العمود (B) والسطر (17) في ورقة البانات، والجزء الأيمن (END) فيشير إلى أدنى مستوى من الخلايا التي بها بيانات.. وهذا يعني أن أعلى مستوي تبدء منه البيانات هو السطر (17)، وهذا السطر هو أول سطر للبيانات وليس قبله أي بيانات منتظمة تصلح أن تكون عناوين للعمدة، ولهذا نحتاج في المقطع الثاني أن نخبر أكسس كي يقوم بتجاهل سطر العناوين هذا ويضع عناوين من قبله! __ المقطع الثاني: يتضمن هذا المقطع بيانات متتعددة، وما همنا منها الآن هما جزآن [EXCEL 12.0;HDR=NO]؛ اللون الأرجواني يدل على مصدر البيانات ورقم الإصدار، وأما اللون الأحمر فهو يأمر أكسس بالتخلي عن أخذ السطر الأول كعناوين للأعمدة.. الوضع الافتراضي أن أكسس يسمى السطر الأول عناوين للأعمدة إذا كان مصدر البيانات هو أكسل.. ولهذا احتجنا إلى تقييدة.. __ أما مايتعلق بالتخلي عن الأعمدة الفارغة فنحن بحاجة إلى هذا الإجراء من أجل تهيئة البيانات لإنشاء جدول الحصص ولا نريد أن تكون الأعمدة الخالية موجدة ضمن الجدول عند الإنشاء.. من النموذج اضغط زر الأمر (QUERY COMMAND) ثم اضغط (MAKE SCHEDULE TABLE).. من النموذج اضغط زر الأمر (QUERY STATMENT) سوف تجد جملة إنشاء جدول الحصص ظاهرة أمامك.. اضغط زر الأمر (RUN QUERY).. وسوف يتم إنشاء الجدول خاليا من الأعمدة الفارغة.. __ يتبقى علينا ملئ حقل الرقم الأكاديمي بالبيانات المفقودة حتي يتم ربط هذا الجدول بجدول الطلاب بطريقة صحيحة.. Noor Data Processing.zip
  11. أهلا بكم.. جملة الاستعلام السابقة تقوم بعمل استعلام بأسماء الطلاب من ملف أكسل STUDENTS.XLXS ؛ ومن ورقة البيانات STUDENT هذا الملف موجود في الدليل الاقتراضي لقاعدة البيانات.. ولكي تصل إلى الدليل الافتراضي لهذه القاعدة، ولجميع قواعد البيانات الأخرى؛ غير الدليل الافتراضي لمجلد قاعدة البيانات إلى النقطة الفارزة (.) كما في الصورة.. إذا غيرت الدليل الافتراضي إلى ماهو موضح في الصورة، لن تحتاج إلى استخدم (CurrentProject.Path) في قاعدة البيانات الإ في حالات خاصة. بمعنى أنك تشير إلى اسم الملف مباشرة دون كتابة المسار! لكي نجعل جملة الاستعلام السابقة تقوم بإنشاء جدول بأسماء الطلاب نستبدلها بالجملة التالية.. SELECT DISTINCT F25 AS STID, F24 AS STNAME INTO TBL_STUDENTS FROM [SCHEDULE$B17:END] AS STUDENTS IN 'SCHEDULES.XLSX' [EXCEL 12.0;HDR=NO] WHERE (NOT ISNULL(F25)); بما أننا سنقوم في الغالب بتنفيذ جمل عن طريق الشفرة؛ فسوف يكون المرفق التالي مساعدك الأول في إنشاء جمل الاستعلام وتسميتها وحفظها.. وتنفيذها! لا يلزم كتابتة الجملة في سطر واحد.. لتنفيذ الاستعلام إضغط زر الأمر (RUN QUERY).. Noor Data Processing.zip
  12. معالجة بيانات جدول الحصص في المشاركة السابقة لم أفعل شيء لمعالجة البيانات سوى أني قمت بإلة التنسيق المطبق على ورقة البيانات.. أما عن استخلاص البيانات من ورقة البيانات؛ فهذا يخضع للمتطلبات التي يحددها المبرمج.. وكمثال على ورقة بيانات: __ الطلب الأول استخلاص أسماء الطلاب وأرقامهم الأكاديمية.. في هذه الحالة لدينا خيارين: _ الأول استخلاص البيانات وعمل جدول جديد بتلك البيانات. _ الثاني استخلاص البيانات وإرسالها إلى جدول موجود مسبقا. __ الإشكالية التي تواجهنا بهذا الخصوص هي الاستطر الفارغة تحت كل اسم.. من واقع ورقة البيانات نعلم أن الأسطر الفارغة هي بيانات تكرارية لنفس الطالب أعلى الفرغات.. لحل هذا الاشكال ننشي استعلام مع حذف الفراغات، أما إذا كان هنالك بيانات متكررة فإننا نستخدم مع سبق عبارة DISTINCT __ التطبيق يمكن عن طريق معالج الاستعلامات، وأيضا عن طريق الشفرة وفي كلا الحالتين نستخدم جملة الاستعلام التالية SELECT DISTINCT F25 AS STID,F24 AS STNAME FROM [SCHEDULE$B16:END]AS STUDENTS IN 'schedules.xlsx'[EXCEL 12.0;] WHERE (NOT ISNULL(F25)) سوف أقوم بالشرح في المشاركة التالية Noor Data Processing.zip
  13. أهلا بكم.. قبل التعامل مع البيانات يجب الرجوع إلى ملف أكسل وإزالة جميع التنسيقات المفروضة على الملف، وذلك عن طريق إزالة كافة التنسيقات.. هذا الإجراء يعطي تصورا واضحا للمعالج عن موضع الأعمدة؛ لأن الغالب في تقارير نور المنسقة أنها تقوم بدمج الأعمدة! آمل مراجعة المرفق لمعرفة الفرق بين التقارير المنسقة وغير المنسقة.. Noor Data Processing.zip
  14. أهلا بكم.. هذه المشاركة مفتوحة لمن يريد المساهمة في ابتكار وسائل لمعالجة البيانات المستوردة من نظام نور التعليمي وطرق عرضها في قواعد بيانات أكسس.. أرجو من الذين لهم علاقة بنظام نور وضع أمثلة للبيانات للمساعدة في تحقيق هذا الهدف الذي يخدمهم بالدرجة الأولى.. مثال لجدول الحصص.xlsx
  15. نعم يمكن.. لكن نحن بحاجة مزيد من التفصيل فيما يتعلق بالبيانات المتعلقة بالعميل، وأيضا البيانات المرتبطة بالعميل، وأيضا البيانات المتعلقة بالصور وعلاقة هذه البيانات بالعميل.. الأشياء المبهمة لا تثير اهتمام الأعضاء! وشيئا آخر وهو ما يتعلق بقاعدة بيانات المثال نريدها خفيفة الظل مع ما يكفي من البيانات التي تساعد في إيجاد الحل المناسب..
  16. هل لدي ملف أكسل لهذا الجدول؟ يكون كرما منك لو أرفقته
  17. المرفق السابق به خطأ.. أعتذر! Active Teacher.zip
  18. أهلا @عفرنس في المرة القادمة قم بنسخ النموذج الذي في المرفق والصقه في قاعدة البيانات خاصتك مع تغيير الاسم.. هذا الاجراء يوفر عليك الوقوع في الخطأ غير المقصود من نسخ الشفرة ولصقها.. أرجو بعد الانتهاء من الإجراء أعلاه أن تجرب اختيار شعب عشوائية وتصدرها إلى أكسل لترى النتيجة... لا تنسخ الشفرة .. انسخ النموذج بالكامل..
  19. لو رجعت إلى مشاركي وإلى قاعدة البيانات المثال التي أرفقتها مع التعديلات التي أجريتها لوجدت أني قد أجريت تعديل على النموذج ونبهت على السبب الذي أوجب هذا التعديل! وهذا يعني أنك تستخف بي!
  20. لحل هذه الاشكالية وتمكين اختيار شعب بعينها يلزم تبديل الشفرة يالتالي Public Sub barnaExcelFile(sXlsFile As String) 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% Do Until RS_SECTIONS.EOF SHEET% = Choose(CInt(RS_SECTIONS![الشعبة]), 2, 4, 6, 8, 2, 4, 6, 8) '-- إيجاد أسماء الطلاب بناء على الشعبة Set RS_STUDENTS = CurrentDb.OpenRecordset _ ("SELECT STUACDID,STUNAME FROM STUDENT " _ & "WHERE (Student.المادة='" & Me.text3 & "') AND (Student.الشعبة='" & 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 '-- الانتقال إلى الشعبة التالية 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 "تم تصديرالبيانات بنجاح" End Sub Active Teacher.zip
  21. أرجو أن تتفهم أنه في هذه المرحلة لا يمكن اختيار شعبة أو شعب بعينها! يجب أن تكون الشعب متسلسة. لا تقم باختيار قيمة في مربع الشعبة!
  22. أعتذر عن هذا الخطأ.. أ. @Barna قام بالواجب
  23. @Barna @عفرنس أهلا بكما.. نعم.. يمكن ذلك! لكني بحاجة إلى مزيد من التوضيح! لأن التبويبات مسماة مسبقا يأسماء الشعب! ما الذي يحيركما؟! أريد أن أعرف أكثر.. قد كانت عندي اشكالية فيما إذا اختار المستخدم شعبا محددة بعينها لا تتوافق مع هو مقدر في قالب أكسل إما بزيادة أو نقص،أو كانت الشعب المقررة للمعلم ليست متسلسلة..
  24. من حقك أن تتحفظ أو تعترض متى وكيف شئت، على الرحب والسعة.. كان الحديث منصب على حالة معينة لأعمدة متنوعة في استعلام التوحيد.. ولعلك لاحظت أن القيم قد جمعت في استعلامات منفردة ضمن استعلام التوحيد! وهذا ما جعل مراجعة البيانات وتصحيحها غاية في الصعوبة.. نعم البيانات ذات العمود الواحد يمكن تجميعها رأسياً؛ بل لا يمكن إلا ذلك! لكن الأعمدة المتعددة لا يمكن تجميعها رأسياً! إنما هو رصها فوق بعضها باستخدام استعلام التوحيد! بعد تجميعها في استعلامات منفصلة، إما ضمناً أو خارجاً عن استعلام التوحيد. أما يتعلق بالسجلات المتعدد فلا يلزمك سوى استخدام خاصية التجميع فقط!
×
×
  • اضف...

Important Information