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

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

أوفيسنا
  • Posts

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

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

  • Days Won

    13

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

  1. نعم عزيزي.. إليك هذا الحل السريع Posters.accdb
  2. وأياديك بيضاء أيضاً أستاذ جعفر.. لا عدمناك 🤑
  3. أعتذر عن هذا الخطأ غير المقصود.. إليك التصحيح.. Posters.accdb
  4. السلام عليكم.. أرى أن حواراً ممتعا دار في هذه المشاركة مما أثار رغبتي في المشاركة.. 😀 أرجو أن تجدوا في هذه المشاركة شيئاً جديداً ومميزاً.. 🤩 سوف نتعامل مع مصنف أكسل كقاعدة بيانات ولعمل ذلك نطبق الشفرة التالي '-- OPEN XLS FILE AS REMOTE DATABASE Dim XLDB As DAO.Database Set XLDB = OpenDatabase( _ CurrentProject.Path & "\CS_SeetNumberLabels2.xlsx", False, False, "EXCEL 12.0;HDR=NO;") عند فتح مصنف أكسل كقاعدة بيانات سوف تصبح أوراق البيانات كجداول بيانات في أكسس، ولكي نتحقق من ذلك نستخدم الغرض TableDefs لسرد أسماء الجداول (أوراق البيانات) '-- LOOP THROUGH XLDB TABLES (SHEETS) For Each TD In XLDB.TableDefs TD.Name Next :: عند النظر إلى ورقة البيانات في مصنف البانات نجد البيانات محصورة في العمودين (C,I) والبيانات ليست متساوية الطول وبالتالي نحن بحاجة إلى جعل كل عمود جدول بيانات مستقل! :: يوجد في مكون البيانات Recordset وظيفة اسمه Getrows تقوم بتجميع البيانات كمصفوفة بيانات يحدد طولها المستخدم حسب احتياجة. ولكون البيانات الطالب في ورقة البيانات تتكون من 5 صفوف؛ وبناءُ عليه سوف نقوم بتجميع البيانات على هذا الأساس. لكن يجب أن نقوم بأخذ عدد السجلات في الجدول (ورقة البيانات) والذي هو بالتأكيد من مضاعفات الـ(5). الوظيفة Getrows تقوم بأخذ المجموع التالية من السجلات عن اطلاقها مرة أخرى وبالتالي نحن بحاجة إلى دوارة بطول السجلات وتقوم بالقفز كل 5 سجلات، بمعنى (20/5). :: نقوم بعد ذلك بتسجيل البيانات في جدول الطلاب من مصفوفة البيانات التي تعيدها Getrows. :: سوف تدور الشفرة على جميع الجداول (أوراق البيانات) وتكرر جلب البيانات مرتين حسب أعمدة البيانات التي سبق الإشارة إليها. كما أنها تقوم بحذف الصفوف الفارغة عند جلب البيانات. الشفرة التالية توضح المبدأ السابق وطريقة نقل البيانات.. '-- LOOP THROUGH XLDB TABLES (SHEETS) For Each TD In XLDB.TableDefs '-----------------------------------------------------------------------------------------' '-- RECORDS FROM COLUMN (C) IN XL SHEET Set XLRS = XLDB.OpenRecordset("SELECT F1 FROM [" & TD.Name & "C:C]WHERE NOT ISNULL(F1)") '-- COUNT RECORDS XLRS.MoveLast: RC = XLRS.RecordCount: XLRS.MoveFirst '-- EACH 5 OF XLRS RECORDS MAKE 1 RECORD IN DBRS For I = 1 To RC Step 5 RCROW = XLRS.GetRows(5) DBRS.AddNew DBRS![ACADEMIC YEAR] = RCROW(0, 0) DBRS![ACADEMIC NUM] = Mid(RCROW(0, 1), InStrRev(RCROW(0, 1), Chr(32))) DBRS![STNAME] = RCROW(0, 2) DBRS![F1] = RCROW(0, 3) DBRS![Sub] = RCROW(0, 4) DBRS.Update Next Set XLRS = Nothing '--------------------------------------------------------------------------------------' '-- RECORDS FROM COLUMN (I) IN XL SHEET Set XLRS = XLDB.OpenRecordset("SELECT F1 FROM [" & TD.Name & "I:I]WHERE NOT ISNULL(F1)") '-- COUNT RECORDS XLRS.MoveLast: RC = XLRS.RecordCount: XLRS.MoveFirst '-- EACH 5 OF XLRS RECORDS MAKE 1 RECORD IN DBRS For I = 1 To RC Step 5 RCROW = XLRS.GetRows(5) DBRS.AddNew DBRS![ACADEMIC YEAR] = RCROW(0, 0) DBRS![ACADEMIC NUM] = Mid(RCROW(0, 1), InStrRev(RCROW(0, 1), Chr(32))) DBRS![STNAME] = RCROW(0, 2) DBRS![F1] = RCROW(0, 3) DBRS![Sub] = RCROW(0, 4) DBRS.Update Next Set XLRS = Nothing Next إليكم الشفرة كاملة Option Compare Database Option Explicit Sub IMPORT_XLSDB() On Error GoTo SUB_CLOSE '-- OPEN CURRENT DATABASE AS LOCAL DB Dim DB As DAO.Database Set DB = CurrentDb '-- OPEN RS DB TO ADD DATA Dim DBRS As DAO.Recordset Set DBRS = CurrentDb.OpenRecordset("TABLE") '-- OPEN XLS FILE AS REMOTE DATABASE Dim XLDB As DAO.Database Set XLDB = OpenDatabase( _ CurrentProject.Path & "\CS_SeetNumberLabels2.xlsx", False, False, "EXCEL 12.0;HDR=NO;") '-- OPEN XLS SHEET AS REMOTE RS Dim XLRS As DAO.Recordset Dim RCROW() Dim RC As Long Dim I As Integer Dim TD As DAO.TableDef '-- LOOP THROUGH XLDB TABLES (SHEETS) For Each TD In XLDB.TableDefs '-----------------------------------------------------------------------------------------' '-- RECORDS FROM COLUMN (C) IN XL SHEET Set XLRS = XLDB.OpenRecordset("SELECT F1 FROM [" & TD.Name & "C:C]WHERE NOT ISNULL(F1)") '-- COUNT RECORDS XLRS.MoveLast: RC = XLRS.RecordCount: XLRS.MoveFirst '-- EACH 5 OF XLRS RECORDS MAKE 1 RECORD IN DBRS For I = 1 To RC Step 5 RCROW = XLRS.GetRows(5) DBRS.AddNew DBRS![ACADEMIC YEAR] = RCROW(0, 0) DBRS![ACADEMIC NUM] = Mid(RCROW(0, 1), InStrRev(RCROW(0, 1), Chr(32))) DBRS![STNAME] = RCROW(0, 2) DBRS![F1] = RCROW(0, 3) DBRS![Sub] = RCROW(0, 4) DBRS.Update Next Set XLRS = Nothing '--------------------------------------------------------------------------------------' '-- RECORDS FROM COLUMN (I) IN XL SHEET Set XLRS = XLDB.OpenRecordset("SELECT F1 FROM [" & TD.Name & "I:I]WHERE NOT ISNULL(F1)") '-- COUNT RECORDS XLRS.MoveLast: RC = XLRS.RecordCount: XLRS.MoveFirst '-- EACH 5 OF XLRS RECORDS MAKE 1 RECORD IN DBRS For I = 1 To RC Step 5 RCROW = XLRS.GetRows(5) DBRS.AddNew DBRS![ACADEMIC YEAR] = RCROW(0, 0) DBRS![ACADEMIC NUM] = Mid(RCROW(0, 1), InStrRev(RCROW(0, 1), Chr(32))) DBRS![STNAME] = RCROW(0, 2) DBRS![F1] = RCROW(0, 3) DBRS![Sub] = RCROW(0, 4) DBRS.Update Next Set XLRS = Nothing Next SUB_CLOSE: '-- COLOSE XLDB AND XLRS Set XLRS = Nothing ' XLDB.Close Set XLDB = Nothing '------------------------' '-- CLOSE DB AND DBRS Set DBRS = Nothing XLDB.Close Set XLDB = Nothing End Sub وهذه هي المفرفقات التى تتضمن المثال... CS_SeetNumberLabels2.xlsxPosters.accdb
  5. أهلا @Abou Hussien أعتذر إليك لعدم الرد في الوقت المناسب.. بالنسبة لتصدير البيانات فيمكنك استخدام معالج البحث في المنتدي لكون هذه الجزئية من السؤال قد سبق الإجابة عنها بطرق مختلفة.. أما ما يتعلق بتحديث وإضافة البيانات فيمكن عمل ذلك بخطوة واحدة عن طريق استعلام التحديث بالطريقة الموضحة بالشفرة أدناة.. -- بما أن كلا القاعدتين لها نفس أسماء الجداول وأسماء الحقول أيضا فنحن بحاجة إلى تمرير اسم قاعدة البيانات فقط. أعتذر عن عدم شرح الشفرة لضيق الوقت.. لكن يمكنك أن تسأل عن أي جزئية غير مفهومة! Sub UPDATE_BILL_HEAD_TBL(DATA_SOURCE As String) CurrentDb.Execute _ "UPDATE BILL AS P RIGHT JOIN [" & DATA_SOURCE & "].BILL AS F " _ & "ON (P.BILL_NUM=F.BILL_NUM) " _ & "SET P.BILL_NUM=F.BILL_NUM, P.BILL_DATE=F.BILL_DATE, " _ & "P.CLIENT_NAME=F.CLIENT_NAME, P.PAID=F.PAID, P.DETAILS=F.DETAILS" End Sub Sub UPDATE_BILL_DETAIL_TBL(DATA_SOURCE As String) CurrentDb.Execute _ "UPDATE BILL_DETAIL AS P RIGHT JOIN [" & DATA_SOURCE & "].BILL_DETAIL AS F " _ & "ON (P.BILL_NUM=F.BILL_NUM) AND (P.ITEM_NUM=F.ITEM_NUM) " _ & "SET P.BILL_NUM=F.BILL_NUM, P.ITEM_NUM=F.ITEM_NUM, P.PRICE=F.PRICE" End Sub المرفقة يوضح آلية التحديث والإضافة: Uptate Data Example.zip
  6. أهلا @عبق الرياحيين بدلي هذا السطر listBoxWorksheets.RowSource = objWsh.Name بهذا listBoxWorksheets.AddItem objWsh.Name Import Excel.zip
  7. مبارك عليك شارة الخبراء.. متفائل خيرا بهذا الاستحقاق..
  8. بل أرجو أن تفتح مشاركة جديدة تبحث فيها الأفكار المحاسبية وتطبيقاتها على قواعد بيانات أكسس 🤔
  9. أهلا ناقل.. يمكن العثور على معلومات وافية مع المثال عن هذه الخاصية في تعليمات أكسس على الرابط التالي.. Recordset.Bookmark property .. DAO والمصورات التالية ترجمة فنية للمقال من كتاب دليل اللغة Visual Basic مع المقدمة الملهمة..
  10. أهلا أحمد.. لا تقلق أنت بحاجة إلى عمل استعلام جدولي فقط..! هذا يتطلب إجراء تعديل على نوع بيانات التاريخ؛ وهذا يمكن معالجته عند تصميم الاستعلام.. أيضا نحن بحاجة إلى مناقشة إشكلات مخرجات التقرير المتعلقة بالسنة والشهر.. أولا أن بيانات السنة هي من نمط البيانات غير الثابت؛ بمعنى أن طرفة الأخير غير معلوم الحد، ولهذا لا يمكن تكديس بياناته كأعمدة رأسية! لأن به اشكالات متلقة بتصميم التقرير وبعرض الورقة.. بخلاف الأشهر فهي معلومة الحد، لكن يبقى اشكال ملائمة هذا الحد للطباعة الرأسية للورق القياسي إليك المثال: سجل رواتب الموظفين.mdb
  11. هو مدونات الفريق رابطها في أعلى الصفحة تحت تبويب [تصفح الموقع]
  12. إذا دعني أنهي مداخلتي في هذه المشاركة لأنك وصلت لطلبك.. إذا أرت إثراء الموضوع والتوسع في استخدام Web Browser Object فيمكنك فتح نقاش في حائط الموقع للتخلص من قيود السؤال والجواب..
  13. أظن أنك تسأل عن النماذج (Forms) وليس الروابط (Links) ولهذا لم تلبي الشفرة متطلباتك.. من مراجعتي للمشاركات السابقة أرى اهتمامك منصب على نموذج نسجيل الدخول. لم لا تحدد موقعا معينا نقوم بالعمل عليه حتى نصل إلى النتيجة المرضية لك.. للعلم.. يعتمد الغرض Web Browser على محرك الاصدار السابع لــ Internet Explorer وهناك مواقع لا تقدم مساندة لهذا الإصدار.
  14. نعم يمكن.. الشفرة التالية تطبع نص الرابط في النافذة السريعة Sub OPEN_LINKS() Dim WD As Object Set WD = Me.WebBrowser0.Document Dim I As Integer For I = 0 To WD.links.length - 1 Debug.Print WD.links(I).innertext Next End Sub
  15. ما أقصده؛ لماذا تريد فتح صفحات الويب داخل Web Browser Object .. أريد أن أوضح هنا أن الحدث Document_Complete لا يقع إلا مرة واحدة عند اكتمال فتح الصفحة التي تم استدعاها عن طريق الإجراء Navigate. وللتخلص من هذه الإشكالية يمكن استخدام الحدث Download_Complete
  16. أ.صالح.. يمكن الوصول إلى ما تريد إذا شاركتنا الفكرة التي تريد الوصول إليها..
  17. أهلا بالجميع.. أهلا أ. @صالح حمادي ... أ. @رمهان يتعمد احراجي دائما.. الروابط في صفحة الويب لها تابع الروابط (Links) يمكن استهدافه والتعديل على خصائصه.. الرابط له خصيصة تدعى الهدف (TARGET) هي التي تتحكم في وجة الرابط.. يمكن التعرف عليها من الرابط التالي Anchor target Property الشفرة التالية تقوم بتغيير قيمة الخصيصة للفتح في الداخل.. Private Sub WebBrowser0_DocumentComplete(ByVal pDisp As Object, URL As Variant) Dim WD As Object Set WD = Me.WebBrowser0.Document For I = 0 To WD.links.length - 1 WD.links(I).Target = "_self" '//WD.links(I).Target = "_blank" Next End Sub يمكن التبديل مع السطر المعطل لمعرفة الفرق.. :: للفائد.. النماذج لها نفس الأسلوب مع التابع (Forms) :: المثال.. ويب.accdb
  18. أ. محمد.. أنت تفحص سجلات لم تتحرك من مكانها.. لكونها لا تتضمن المنهج (MoveNext) لتدوير السجلات الأمر الآخر أن السائل يريد عمل دورة السجلات وفتح النماذج لغرض معين لم يفصح عنه! وهذا أحد الإرباكات في السؤال! لكون النماذج سوف تقوم بالتبديل بين الفتح والإغلاق بسرعة كبيرة حتى آخر سجل يقف عليه المؤشر! أما المشاركة الأخيرة فليست ضمن دائرة السؤال
  19. أبارك للزميلين شارة الخبراء وأتمنى لهما التوفيق والسداد.. وأحثهما على كشف مزايا أكسس من الداخل! فلا يزال هناك الكثير من الأشاء التي نجهلها ونريد أن نعرف عنها وعن فوائدها كمستخدمين ومطورين..
  20. وأنا كذلك أحبك في الله.. وأعتذر لكوني لم أشارك في هذا الموضوع مبكرا.
  21. وأنا كذلك كنت أتوقع مناقشة وحوار! ولهذا أشعر باليأس والإحباط 😓 إطراء غير متوقع من الكبار
  22. أهلا بك أستاذ جعفر بل الشرف لنا أعضاء المنتدي بوجودك معنا أعتقد أن الأمر التبس عليك! البرنامج للأستاذ أبا جودي! 🤔 كل ما قمت به تقرير .. بشفرة جلبتها من ملف التعليمات.. قص ولصق وتغيير في الأرقام 😉😎
  23. السلام عليكم ورحمة الله أحببت أن أشارك معكم في بخصوص هذا الموضوع بطريقة مختلفة بعض الشيء.. أرجو أن تجدوا فيها شيئا جديدا :: تنبيهات --- يتم رسم التقرير برمجيا.. --- عدد السجلات في رأس التقرير ثابتة من ناحية التصميم، متغيرة من ناحية البيانات.. - يتم تفيير البيانات في هذا المقطع وفقا لكميات البيانات.. - تستطيع كمية البيانات في هذا المقطع زيادة عدد صفحات التقرير تناسبا مع مصدر بيانات التقرير.ز - عدد السجلات المعروضة في هذا المقطع (10) سجلات لكل صفحة --- مصدر البيانات الأساسي هو الاستعلام (QRY_MATERIAL) --- يعاد بناء هذا الاستعلام كاستعلام (توحيد) بناءً على الفرضيتين التاليتين: -- التوحيد من أجل تكملة العشرة.. -- يتم إخفاء السجلات الوهمية بفحص معطيات الحقل الوهمي (TEST) - تزيد قيمة هذا الحقل كلما زادت الاستعلامات الوهمية (...،0،1،2) - البيانات الحقيقة تأخذ القيمة (0) --- إذا كانت بيانات مقطع الرأس أكبر من بيانات مصدر البيانات الأساسي -- يزيد عدد الاستعلامات الوهممية بواقع استعلام لكل (10) سجلات لزيادة عدد الصفحات -- يتم احتساب عدد الاستعلامات وتضمينها برمجيا بواسطة الإجراء (UNION_SQL) أرجو ألا تبخلوا بالنقد والتعليق😁 MATRIX REPORT.accdb
×
×
  • اضف...

Important Information