اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

أوفيسنا
  • Posts

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

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

  • Days Won

    13

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

  1. أهلا بالجميع.. الفكرة التي تناولتها حسب البيانات المتوفرة كاللآتي بما أن المقرر الدراسي يمكن أن يكون في أكثر من شعبة، والطلاب يتبعون للشعب فسوف يكون ترشيح البيانات كما يلي _ المقرر - شعبة1 - طلاب - شعبة 2- طلاب وهكذا حسب الشعب المدرجة لكل مقرر إليكم الشفرة بعد التعديل.. أرجو عدم اختيار الشعبة في هذه المرحلة لأنها بحاجة إلى المناقشة 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% 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%).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 "تم تصديرالبيانات بنجاح" End Sub إليكم المرفق Active Teacher.zip
  2. تجميع البيانات بالطريقة الرأسية أوقعك في مشكلة إعادة تسمية رمز الشركة إلى رمز الموظف! وهذا ما صعّب فرز البيانات! لأن رمز الشركة؛ بيانات نصيه، ورمز الموظف؛ بيانات رقمية. وكان من الأفضل تجميع البيانات بطريقة أفقية! هذا هو الأفضل، لأنه يمكنك من قراءت وتجميع البيانات بطريقة سليمة وصحيحة.. دقق في الصورة لترى مدى تطابق البيانات المتتعلقة بمجموع المبلغ.. في الواقع رصف البيانات بهذه الطريقة يبدو مألوفاً بالنسبة لي! فإن كان الغرض هو تبادل البيانات عن طريق ملفات نصية ذات بيانات ثابتة الطول كما هي توقعاتي! فهناك طرق لعمل ذلك دون الحاجة إلى التقرير! أرجو أن تكون هذه المعلومات مفيدة لك.. Trans CD.mdb
  3. ورقة بيانات الطلاب التي تستوردها من أكسل يوجد بها معلومات كثيرة ومن ضمنها اسم معلم المادة! وبالتالي يمكن تضمين اسم المعلم ضمن جدول بيانات الطلاب، كما هو الحال مع اسم الشعبة والمادة... لكن ليس لديّ منها شيء حتى أطبق عليها
  4. أذن صار لكل معلم ملف خاص! هذا سهل.. سهل الله أمرك.. الآن، نعم.. بعدها هذا التوضيح، لدي اقتراح فيما يتعلق بتصفية البيانات.. في اعتقادي أننا لسنا بحاجة إلى إنشاء جدول مؤقت لترحيل البيانات إلى أكسل! بل يمكن استخدام جدول الطلاب مباشرة! المنهج CopyFromRecordset له محددان إضافيان هما عدد الأعمدة، وعدد الصفوف المطلوب جلب البيانات منها في مصدر السجل.. إذا أردنا مزيدا من التحكم..
  5. أحسنت البيان أ. محمد.. وفي نظري أن بقاء كل شعبة في ورقة مستقلة أرتب للبيانات وأسهل في التعامل!
  6. بحسب قالب البيانات في ورقة أكسل لا يمكن تطبيق الفكرة التي أشرت إليها أعلاه.. أنت بحاجة إلى إعادة نسخة تنسيق القالب ولصقه في الأسفل لتتمكن من إضافة الشعبة الثانية! ولا أظن أنه يوجد طريقة أخرى لتطبييق الفكرة.. وهناك إشكالية أخرى ؛ وهي طريقة تصفية البيانات التي تعمل بها في النموذج لا تسمح باختيار قيم متعددة!
  7. أهلا @كريمو2 كان بإمكانك تكوين علاقات بين الجداول ضمن الاستعلام واستخدام الحقول مباشرة دون اللجوء إلى استخدام دوال التجميع! لدي تحفظ على هذا المقطع من الاستعلام QryCD ...FROM (SELECT Company.CompanyID AS EmployeeID... راجع المرفق رجاءً.. Trans CD.mdb
  8. أهلا بك أبا عبدالرحمن.. كيف أستطيع أن أساعد؟ لم أجد في الملفات المرفقة ما أشرت إليه أدناه ولم استطع أن أفهم طلبك
  9. أستاذ @محمد طاهر لله ما أخذ وله ما أبقى.. فلتصبر ولتحتسب.. وتذكر.. "إنا لله وإنا إليه رجعون.. اللهم أجرني في مصبتي هذه واخلفني خيراً منها.." اللهم عافه واعف عنه.. واكرم نزله.. ونور له في قبره ووسع له فيه.. ونقه من الذنوب والخطايا كما ينقى الثوب الأبيض من الدنس.. اللهم اخلفه في عقبه في الغابرين.. واجعله من ورثة جنة النعيم.. واحشره في زمرة النبيين..
  10. أهلا بك.. غير نوع البيانات في الترقيم التلقائي من LongInteger إلى Replication ID إذا كانت نسخة أكسس لديك عربية أعتقد أنها (رقم طويل) والآخر أظنه (عشوائي)
  11. أهلا أ. أبا جودي.. المبهر أن جُل علماء مصر صعايدة.. كفاك فخر بنفسك!!! في أكسس: هناك فرق في الوصول إلى البيانات بين ماهو شائع بين المطورين وبين ماهو متقدم! وفي الغالب نحن لا نراعي النواحي التقنية في التعامل مع السجلات.. وبكلام مختصر: عند إضافة أو تحرير سجل.. أنت لست بحاجة إلى تحميل بيانات الجدول بالكامل! وبناءً عليه نستخدم وصلات الاستعلام للوصول للبيانات بشكل محدد.. ولو ذهبت مرة إلى أحد فروع شركة الشحن العملاقة FedEx وحشرت أنفك في شاشة تسجيل البيانات لن تجد ما يشبع فضولك! فضلاً راجع هذا الرابط (FSMS Developer Guide) لأخذ معلومة عن كيفية عمل نظام FedEx وطرق معالجة البيانات..
  12. أهلا أ. جعفر.. إجابتي السابقة كانت بناءً على سلوك الغالبية من الزملاء في التعاطي مع البيانات.. لكن لو سألتني عن سولكي الخاص فأنا أفضل وصلات الاستعلام عوضا عن الجداول في عرض البيانات وعمل الإجراءات عليها.. الفروقات الزمنية في التنفيذ تظهر أكثر على البيانات البعيدة التي لا تعمل على سيرفرات..
  13. طبعا تنشىء الاستعلام في قاعدة البيانات الخلفية.. ثم تشير إلى الاستعلام باسمه كما في الجدول.. إذا كنت تريد عمل استعلام يشير إلى محددات من قيم في حقول النموذج فيمكنك إنشاء جملة الاستعلام مكان اسم الجدول.. Set Me.Recordset=DBDAO.OpenRecordset("SELECT * FROM CUSTOMERS WHERE [CUSTOMER ID]=" & Me.CB_CUSTOMER_ID) في الحالة هذه تستطيع وضع جملة الاستعلام في حدث After_Update للحقل.. أو تعيد تنشيط النموذج باستخدام Me.Requery في نفس الحدث
  14. أهلا بك عزيزي أبا جودي.. لاحظ في المثال المرفق أن ألنموذج لا يعتمد على الجدول المرتبط بالطريقة المباشرة.. أبقيت على شفرة الربط الخاصة SQL SERVER للفائد.. LINKED DATA.ZIP
  15. السلام عليكم.. في الحقيقة أن ربط قاعدة البيانات الخلفية بالأمامية إنما هو لوصل البيانات بالنماذج والتقارير! عند استخدامنا لمعالج تقسيم البيانات أو معالج الربط فإن أكسس يقوم بإنشاء جداول نظام يخزن بها البيانات المتعلقة بربط البيانات ومصدرها وآلية ربطها.. الصورة التالية تبين مصدر البيانات وآلية الربط.. نلاحظ في السجل المحدد كيف قام المعالج بتعريف مصدر البيانات المتعلقة بجداول أكسس.. أرجو أن يكون بمقدوركم فهم العلاقة بين مصدر البيانات ومسميات الجداول في المصدر وقاعدة البيانات الأمامية.. لعمل الربط غير المباشر للبيانات عن طريق الشفرة بجداول بيانات أكسس نحتاج إلى الشفرة التالية.. نضع الشفرة التالية في وحدة نمطية عامة Public Function APP_PATH() As String APP_PATH = CurrentProject.Path End Function Public Function DBDAO() As DAO.Database Set DBDAO = OpenDatabase(APP_PATH & "\DB1.ACCDB", False, False, ";PWD=''")'ضع كلمة المررور إذا كانت مطلوبة End Function نضع الشفرة التالية في حدث عند الفتح في النموذج Set Me.Recordset = DBDAO.OpenRecordset("EMPLOYEES", dbOpenDynaset)
  16. انسخ الشفرة التالية وضعها في حدث عند النقر لزر الأمر Dim DB As DAO.Database Set DB = CurrentDb() '--- DB.Execute "SELECT * INTO [عناوين المرضى] IN'" _ & CurrentProject.Path & "\Patients.xlsx'[Excel 12.0;HDR=yes;READONLY=FALSE] FROM TABLE1 " '--- DB.Execute "SELECT * INTO [حالة العلاج] IN'" _ & CurrentProject.Path & "\Patients.xlsx'[Excel 12.0;HDR=yes;READONLY=FALSE] FROM TABLE2 "
  17. نعم.. الشفرة تنشيء ملف الأكسل في نفس مسار قاعدة البيانات.. قم بتغيير اسم الملف إذا أردت
  18. أهلا بك رضوان.. استخدم الشفرة التالية Sub EXPORT_TO_EXCEL() Dim DB As DAO.Database Set DB = CurrentDb() '--- DB.Execute "SELECT * INTO [عناوين المرضى] IN'" _ & CurrentProject.Path & "\Patients.xlsx'[Excel 12.0;HDR=yes;READONLY=FALSE] FROM TABLE1 " '--- DB.Execute "SELECT * INTO [حالة العلاج] IN'" _ & CurrentProject.Path & "\Patients.xlsx'[Excel 12.0;HDR=yes;READONLY=FALSE] FROM TABLE2 " End Sub
  19. أهلا سمير.. نعم يمكن..، لكن نريد عينة من البيانات وتحديد طريقة ادراج البيانات في الجدول مثلا: إضافة الجديد مع تحديث السابق..
  20. أرجو منك تحديد أفضل إجابة على مشاركتك؛ وذلك بالضغط على كلمة "اختر كأفضل إجابة" تحت المشاركة الأفضل بالنسبة لك..
  21. أهلا بك.. نعم.. الشفرة التالية تقوم بالتحديث والإدراج معاً! Sub UPDATE_FROM_EXCEL() '-- GET EXCEL FILE Dim XL_FILE As String XL_FILE = CurrentProject.Path & "\ITEMX.xlsx" '-- WRITE SQL STATEMENT Dim SQL As String SQL = SQL & "UPDATE TABLE1 AS T1 " SQL = SQL & "RIGHT JOIN " SQL = SQL & "(SELECT * FROM [SHEET1$] IN'" & XL_FILE & "'" SQL = SQL & "[EXCEL 12.0;HDR=YES;IMEX=1;]) AS T2 " SQL = SQL & "ON T1.[كود_الصنف] = T2.[كود الصنف] " SQL = SQL & "SET T1.[كود_الصنف] = T2.[كود الصنف]," SQL = SQL & "T1.[اسم_الصنف] = T2.[اسم الصنف]" '-- RUN SQL STATEMENT CurrentDb.Execute SQL End Sub ITEMX.accdb ITEMX.xlsx
  22. يجب عليك أو الانتهاء من إعدادات خادم الشيربوينت أولاً، ثم يمكنك تصميم قاعدة البيانات كما تريد
  23. أهلا بك رضوا.. هذا وصف مجمل! أرجو أن تبسط في الشرح قليلا.. مع مثال للبيانات
  24. لا.. كل ما عليك فعله هو إخراج الشفرة من حدث OnLoad ووضعها في إجراء جديد مع محدد غرضي واحد، ثم في حدث OnLoad تمرر إليه اسم النموذج.. هنا ملاحظة يجب التنبيه إليها، وهي تحديد عدد السجلات التي ترسلها لكل نموذح حتى لا تتكرر السجلات في النماذج.. Private Sub Form_Load() SET_EVENTS (Me.f1) End Sub Sub SET_EVENTS(F As Object) On Error Resume Next Dim pt Dim i Dim rst As Recordset Dim ctl As Control Set rst = CurrentDb.OpenRecordset("SELECT * FROM t1 WHERE d_f='1'") '-- IMAGE CONTROL rst.MoveFirst For Each ctl In F.Controls ' typefile = TypeFileFromPath(CurrentProject.Path & "\Image\" & rst(1)) If ctl.ControlType = acImage Then If Not rst.EOF Then ctl.Picture = "" ctl.Tag = rst(0): ctl.Visible = True: ctl.OnClick = "=halaby('" & ctl.Tag & "')" pt = CurrentProject.Path & "\Image\" & rst(0) & ".jpg" If Dir(pt) <> "" Then ctl.Picture = pt Else ctl.Picture = CurrentProject.Path & "\Image\Noimage.jpg" End If rst.MoveNext End If End If Next '-- COMMAND_BUTTON CONTEOL rst.MoveFirst For Each ctl In F.Controls If ctl.ControlType = acCommandButton Then If Not rst.EOF Then ctl.Tag = rst(0): ctl.Caption = rst(2): ctl.Visible = True: ctl.OnClick = "=halaby('" & ctl.Tag & "')" rst.MoveNext End If End If Next rst.Close Set rst = Nothing End Sub
  25. رحمك الله أ. حلبي.. ما أعتقد أني فعلت شيء.. كل ما في الأمر أني مررت رقم الصنف في الدالة خاصتك!
×
×
  • اضف...

Important Information