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

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

أوفيسنا
  • Posts

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

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

  • Days Won

    13

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

  1. لأن بداية الفترة الثالثة في المثال تبدأ من 1-10-2020 وليست 30-9-2020! قم بتغييرها حسب متطلباتك
  2. عزيزي @محمد احمد لطفى القيم السالبة ناتجة عن الاشتراطات المتعارضة بين الشرائج، وأتوقع وجود المزيد منها مع تنوع الإدخالات! يمكن معالجة هذا القصور باستخدام عبارة ()IIF كما في الحالات السابقة.. finish .mdb
  3. آسف على هذا القصور.. هناك حالة لم أقوم بعالجتها في الشريحة الألى.. Option Compare Database Option Explicit Public Const SP1 = #1/1/1990# Public Const EP1 = #9/6/2016# Public Const SP2 = #9/7/2016# Public Const EP2 = #9/30/2020# Public Const SP3 = #9/30/2020# Public Const EP3 = #1/1/2050# Public Function DatePeriod(StartDate, EndDate, Interval) Dim Periods(1 To 3) As Variant If (StartDate >= SP1) And (EndDate <= EP1) Then Periods(1) = DateDiff("w", StartDate, EndDate) ElseIf (StartDate < SP1) And (EndDate <= EP1) Then Periods(1) = DateDiff("w", SP1, EndDate) ElseIf (StartDate < SP1) And (EndDate > EP1) Then Periods(1) = Abs(DateDiff("w", SP1, EP1)) ElseIf (StartDate >= SP1) And (EndDate > EP1) Then Periods(1) = IIf(DateDiff("w", StartDate, EP1) < 0, 0, DateDiff("w", StartDate, EP1)) Else Periods(1) = 0 End If If (StartDate >= SP2) And (EndDate <= EP2) Then Periods(2) = DateDiff("m", StartDate, EndDate) ElseIf (StartDate < SP2) And (EndDate <= EP2) Then Periods(2) = DateDiff("m", SP2, EndDate) ElseIf (StartDate < SP2) And (EndDate > EP2) Then Periods(2) = DateDiff("m", SP2, EP2) ElseIf (StartDate >= SP2) And (EndDate > EP2) Then Periods(2) = DateDiff("m", StartDate, EP2) Else Periods(2) = 0 End If If (StartDate >= SP3) And (EndDate <= EP3) Then Periods(3) = DateDiff("m", StartDate, EndDate) ElseIf (StartDate >= SP3) And (EndDate > EP3) Then Periods(3) = DateDiff("m", StartDate, EP3) Else Periods(3) = 0 End If DatePeriod = Periods(Interval) End Function finish .mdb أرجو التأكد من صحة البيانات مع مزيد من الإدخالات حتى يتسنى مععالجتها
  4. أهلا محمد... أعتذر منك لأني لم استجب لنداءك قمت بالتوفيق بين أفكار الزملاء بالحل المرفق.. Option Compare Database Option Explicit Public Const SP1 = #1/1/1990# Public Const EP1 = #9/6/2016# Public Const SP2 = #9/7/2016# Public Const EP2 = #9/30/2020# Public Const SP3 = #9/30/2020# Public Const EP3 = #1/1/2050# Public Function DatePeriod(StartDate, EndDate, Interval) Dim Periods(1 To 3) As Variant If (StartDate >= SP1) And (EndDate <= EP1) Then Periods(1) = DateDiff("w", StartDate, EndDate) ElseIf (StartDate < SP1) And (EndDate <= EP1) Then Periods(1) = DateDiff("w", SP1, EndDate) ElseIf (StartDate < SP1) And (EndDate > EP1) Then Periods(1) = DateDiff("w", SP1, EP1) Else Periods(1) = 0 End If If (StartDate >= SP2) And (EndDate <= EP2) Then Periods(2) = DateDiff("m", StartDate, EndDate) ElseIf (StartDate < SP2) And (EndDate <= EP2) Then Periods(2) = DateDiff("m", SP2, EndDate) ElseIf (StartDate < SP2) And (EndDate > EP2) Then Periods(2) = DateDiff("m", SP2, EP2) ElseIf (StartDate >= SP2) And (EndDate > EP2) Then Periods(2) = DateDiff("m", StartDate, EP2) Else Periods(2) = 0 End If If (StartDate >= SP3) And (EndDate <= EP3) Then Periods(3) = DateDiff("m", StartDate, EndDate) ElseIf (StartDate >= SP3) And (EndDate > EP3) Then Periods(3) = DateDiff("m", StartDate, EP3) Else Periods(3) = 0 End If DatePeriod = Periods(Interval) End Function finish .mdb
  5. وعليكِ السلام ورحمة الله وبركاته لنقم بتغيير طريقة السؤال على النحو التالي.. ماهو المبلغ الذي إذا أضفنا عليه الضريبة (%15) صار (1000)؟ وللإجابة على هذا السؤال؛ يجب أن نفهم أنه لا يمكن أن نضرب النسبة المجردة (0.15) في (1000) لسببين الأول أن هذه العملية تعيد (%15) بالنسبة إلى (1000) وليس إلى المبلغ المطلوب إضافة النسبة إليه ليصبح ألفا.. الثاني أن ناتج هذه العملية يعيد مبلغ النسبة إلى الأف، وحاصله (150). وهنا لا يمكن بتاتا القول أن المبلغ المطلوب هو (1000-150)! هذا فضيع.. إذا ماذا نعمل؟! وكيف نجيب على السؤال؟! في العمليات المحاسبية لا نستخدم النسبة المجردة (0.15) بل نستخدم (1.15)! إذا أردنا أن نعيد مبلغ 1000 مضافاً إليه ضرييبة %15 فستكون العملية الحسابية: 1000*1.15 إذا أردنا أن نعرف المبلغ الذي إذا أضفنا إليه %15 صار 1000 فستكون العملية الحسابية: 1.15/1000 أرجو أن تكون الفكرة وصلت!
  6. وعليكم السلام ورحمة الله و بركاته يمكن وضع هذه القيمة في المحدد الأخير لتابع فتح التقرير Dim stDocName As String stDocName = "Q1" DoCmd.OpenReport stDocName, acViewPreview, , , , 16000 '** يمكن أخذ القيمة من مربع نص وفي التقرير في خدث عند الفتح أضف النص التالي في الأعلى Private Sub Report_Open(Cancel As Integer) Dim Allrecords As Integer If Not IsNull(Me.OpenArgs) Then Allrecords = Me.OpenArgs End If
  7. أين هي البيانات حتى أصمم لك التقرير؟! على كل حال أخذت العينة المرفقة من أحد مشاركاتك وكررت فيها البيانات حتي أصل إلى العدد المطلوب! إليك النتيجة السجل.accdb
  8. في الحقيقة أنت محكوم بعرض وطول الورق الذي ستطبع عليه البيانات! على سبيل المثال لكي تطبع تقريرا مكون من عامودين على ورقة A4 فأنت بحاجة إلى بيانات يمكن عرضها في مساحة أقصى أبعادها (10سم عرضاً) لكل عامود! وخلاف ذلك لن تستطيع إظهار البيانات بشكل صحيح!
  9. وعليكم السلام أقترح عليك أن ترفق مثالا حتى يتمكن الجميع من فهم ما تريد
  10. أهلا @طاهر الوليدي هذه هي الطريقة المطلوب اظهار قرب حقل ميلادي تقويم ميلاد وقرب حقل الهجري تقويم هجري .mdb
  11. نعم يمكن بشرط أن تكون المتصفح هو محرك ChromeDriver، بمعنى أنه يقلع من خلال أكسس.. تعليمى.mdb
  12. إداة Selenium تختلف كليا عن (HTML Document Object Model (DOM، وبالتالي من المهم الرجوع إلى موقع المشروع لمعرفة كيفية استخدام الأداة، ومن المهم أيضاً أن نعلم أن لغة VBA لم تكن ضمن المشروع بالأساس، لكن أحد المطورين قام بإلحاقها في مشروع مستقل.. كما تجدر الإشارة أن ملجد Selenium يحتوي على ملف للمساعدة باسم (Selenium.chm). انقر عليه نقراً مزدوجاً وخذ لمحة عن كيفية استخدام الأدة في بيئة VBA.. ستلاحظ أن نموذج Selenium يتأخر في الظهور عند فتحه وذلك لأني جعلت المتصفح يقلع مع النموذج في وضع التخفي.. ولن يظهر النموذج حتى ينتهي المتصفح من تحميل الصفحة.. تعليمى.mdb
  13. حسناً لنرى إذا كانت متطلبات العمل على سلينيوم مكتملة لديك.. يتطلب سلينيوم تحميل وتثبيت المحرك (ChromeDriver) التابع للمتصفح Chrome، ولإنهاء هذه المهمة يجب أولا التأكد من أن نسخة المحركة مطابقة لنسخة المتصفح.. كيف انقر على النقاط الثلاث في متصفح كروم ثم انقر المساعدة ثم نبذة عن قوقل كروم (واجهةالعمل عندي إنجليزية والأسماء التي أضعها بالعربي تقريبية) إذهب إلى موقع سلنيوم (تثبيت المحركات) Web Browser/Getting Started/Instal Drivers، ثم من الجدول انقر فوق Downloads المحاذية Google Chrome.. اتبع الخطوات ثم اختر النسخة المطابقة لمتصفك مع التأكد من النواة الملائمة.. قم بفك الملف المضغوط وانسخ الملف التنفيذي chromedriver.exe وضعه في المجلد SeleniumBasic.. هذا المجلد ضمن المجلد C:\Users\[UserName]\AppData\Local أرجو منك إنهاء هذه الخطوات حتى نبدأ باستخدام Selenium مع Access
  14. إذا كنت لاتزال تستخدم متصفح Internet Explorer فالأمر سهل، لكن إذا كان غير ذلك فأن بحاجة إلى الأداة Selenium Basic VBA، ولمعرفة استخدامة اذهب إلى Selenium WebDrive
  15. لو فتحت الموقع في أحد المتصفحات لديك وقمت بالنقر بالزر اليمين للفارة على العدد 8.24 وأخترت فحص Inspect من القائمة سوف تظهر لك وسوم هتشمل التي تتحتوي عليها الصفحة مع التأشير على الوسم الذي يحتوي على عدد النقاط. كما في الصورة الوسم الذي يحتوي على النقاط هو الوسم الثاني ضمن أبناء الوسم الأب المعرف ضمن spaceit_pad، وبما أن الأبناء هي عبارة عن مصفوفة، وترتيب المصفوفة يبدأ بالرقم صفر فسوف يكون رقم الوسم الذي يحتوي على النقاط هو (1) وبناء عليه سيكون تعديل الشفرة على النحو التالي Case "score" Me.Score = t(1) '' السابقة '---------------------------------------------------- Case "score" Me.Score = el.Children(1).innerText '' التعديل
  16. لمعالجة هذه السبب أنت بين خيارين. الأول. أن تلغي الإشارة إلى الغرض IHTMLElement الثاني أن تضيف إلى قائمة المراجع المكتبة التي ينتمي إليها الغرض كما في الصورة ملاحظة: المكتبة باللون الأصفر يأشر عليها تلقائيا عند إضافة عنصر التحكم WebBrowser، لكنها تلغى عند حدوث القص واللصق.. ولذا يبغي أن تتأكد من أنه مؤشر عليها.. هتان المكتبتان من المكتبات الأساسية في ويندوز ويندر جدا أن لا تكون متوفرة، وبناءً عليه يجب عدم القلق بشأن توفرها عند نقل التطبيق إلى جهاز العميل.. تعليمى.mdb
  17. أهلا @محمد احمد لطفى لا يخفى أن مستندات هتشمل HTML مبنية على وسوم مترابطة هرمياً، وأن لهذه الوسوم رتب في هذا الهرم، وهي الآباء والأبناء والإخوة، وهذه الرتب قد تتداخل في بعضها البعض.. والمقصود من هذه التقدمة هو تسهيل الوصول إلى البييانات المضمنة داخل هذه الوسوم بطريق سهلة ومبسطة.. يمكن الوصول إلى البيانات بأحد الخصائص التالية Dim Tag,Class,Name,Id With WebBrowser1.Document ' أكثر هذه الخصائص تحديد Id=.getElementById("...") ' أقلها اتساعا وأقربها تحديدا For Each Name in .getElementsByName("...") Name Next ' تتوسع أفقيا أي في رتبة الأخوة For Each Class in .getElementsByClassName("...") Class Next ' أكثرها إنتشار For Each Tag in .getElementsByTagName("...") Tag Next end with أغلب هذه الخصائص تعيد مصفوفة غرضية ماعدا الأولى منها... نأتي على تطبق هذا على قاعدة البيانات Private Sub أمر11_Click() Dim el As IHTMLElement Dim t For Each el In WD.getElementsByClassName("spaceit_pad") t = Split(el.innerText, ":") Select Case t(0) Case "score" Me.Score = t(1) Case "rating" Me.Rating = t(1) Case "genres" Me.Genres = t(1) Case "theme" Me.Theme = t(1) End Select Next End Sub أرجو أن يكون بإمكانكم اكتشاف طريقة معالجة البيانات..
  18. في الحقيقة نحن لسنا بحاجة لا إلى FormatNumber ولا إلى Round.. يطلب منك أكسس فقط أن تغير المنازل العشرية بعد الفاصلة إلى صفر في الحقل المطلوب
  19. وعليكم السلام ورحمة الله وبركاته أهلا @عبد الله قدور استخدم التابع FormatNumber بهذه الطريقة FromatNumber(15.5,0)
  20. من هذه المصورة يتضح أن صفحة الويب ضمن خادم الويب (Web Server) وليست صفحة ويب منفردة! كما كنت أتوقع! وبناء عليه أصبح الوضع معقدا بعض الشيء لأنه ينقصني الآن معرفة كيف يتخاطب الخادم مع صفحة الويب، وكيف يرسل ويتسقبل البيانات.. وأياً كان البروتوكول المستخدم ؛ يمكن اختبار أرسال البيانات بالطريقة التالية.. التأكد من أن صندوق الإختيار ضمن الوسم <Form> (النموذج في صفحة الويب) التأكد من وجود معرف للنموذج يمكن استخدامه للوصول للنموذج، أو يمكن استخدام رقمه التأكد من أن البيانات ترسل عن طريق نموذج الويب وطريق عرض مصدر الصفحة أو عن طريق أدوات المطورين بعد ذلك يمكن استخدام الشفرة التالية Sub PostCheckBox() Dim I As Integer Dim TC_ID With WD.querySelectorAll("table tr") For I = 1 To .length - 1 Dim WC_ID WC_ID = Val(.Item(I).Children(1).innerText) TC_ID = DLookup("View", "Customers Accounts", "Account_No=" & WC_ID) If TC_ID Then .Item(I).setAttribute "class", "checked" .Item(I).Children(4).Children(0).Checked = True .Item(I).Style.background = "skyblue" WD.Forms(0).submit '//يرسل البيانات للخادم بعد كل اختيار Else .Item(I).removeAttribute "class" .Item(I).Children(4).Children(0).Checked = False .Item(I).Style.background = "" End If Next End With End Sub إذا أرسل البيانات للخادم وتم قبولها فسوف يقوم بإعادة إرسال البيانات إلى الصفحة وسوف تظهر صناديق الاختيار وقد تم التأشير عليها، والعكس إذا لم تنجح العملية.. هذا ما أستطيع تقديمه لك على ضوء المعلومات التي قدمتها لدعم طلبك.. TestCheckBoxOnHtml.zip
  21. لقد رجعت إلى أول المشاركة لأتفهم سوالك بعناية وكان ما وجدته هذا الاقتباس أيش يعني أرسال القيمة بدلا عن معرفتها؟! ومن أين ترسل؟ وهذه العبارة أيضا تحتاج إلى توضيح.. في ظني أنك تريد حفظ البيانات على صفحة بعد تحديد السجلات المراجعة.. إذا كان هذا ماتريد الشفرة التالية تقوم بالعمل Private Sub cmdSavePage_Click() Dim FileName FileName = SaveAs() If IsEmpty(FileName) Then Exit Sub Open FileName For Output As #1 Print #1, LCase(WD.documentElement.outerHTML) Close #1 End Sub مكان هذه الشفرة تحت زر الأمر cmdSavePage انظر المرفق TestCheckBoxOnHtml.accdb
  22. لو أعطيتني فكرة عن كيف وصلت البيانات إلى صفحة الويب وإلى أين ستذهب بعدها.. كان الجواب على قدر السؤال ولو زدتنا زدناك.. لكنك لا تزال تدور حول نقطة واحدة!
  23. أهلا بك @أبو عبدالله الحلوانى هذا شيء جيد ومبهج صراحة أن تقوم بمعالجة الأخطاء بنفسك! قم فقط باستبدال childNodes بــ children أجريت بعض التعديل على الشفرة وجعلتها تقوم بتحديث جدول البيانات TestCheckBoxOnHtml.accdb
×
×
  • اضف...

Important Information