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

استفسار حول طريقة التحكم بالـ CheckBox للمتصفح من خلال الكود


الردود الموصى بها

السلام عليكم ورحمة الله وبركاته

وبعد وبناءا علي طلب الأستاذ @أبو إبراهيم الغامدي حفظه الله بافراد استفساري بموضوع مستقل هنا

وقد تفضل سيادته مشكورا بوضع مرفق لما اردت ولكن ولكوني لا زلت اجهل العمل بلغة الـ html الا يسيرا 

وكذلك لتعم الفائدة بطلب شرح لآلية العمل بالمرفق فاسأبدأ استفساراتي حول مرفق الاستاذ من خلال النقطتين التاليتين: 

1- في المرفق تم جلب قيمة الصف من خلال معرفة موضع الـ CheckBox المعلمة وسأحول استقراء الأكود لحين رد احد الاساتذة الأكارم - والسؤال هل يمكن ارسال القيمة للـ CheckBox بدلا من معرفتها؟ وهذا كان سؤالي منذ البداية بالموضوع السابق الاشارة اليه

2- بالمرفق كود بعد تعليم الـ CheckBox أو عند حدث النقر علي الـ CheckBox ولكن ما عرفت كيف يعمل؟! 

اما عن المرفق فها هو HTML Table.accdb

اما عن مرفقي الذي وضعت به توضيح السؤال فهذا هو TestCheckBox.rar

وجزاكم الله خيرا

  • Thanks 1
رابط هذا التعليق
شارك

11 ساعات مضت, أبو عبدالله الحلوانى said:

والسؤال هل يمكن ارسال القيمة للـ CheckBox بدلا من معرفتها؟ وهذا كان سؤالي منذ البداية بالموضوع السابق الاشارة اليه

أهلا بك @أبو عبدالله الحلوانى

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

الشفرة كالتالي 

-- نقوم بتحديد صفوف الجدول أولا لأن لنا معها أمران:

الأول القيمة المطابقة للبحث وهي في الحقل الثاني من الصف، وللوقوف على الحقل المطابق يلزمنا عمل دوارة فحص..

الثاني إذا تطابقت البيانات نحدد الحقل الذي به صندوق الاختيار ومن ثم نعطيه القيمة True 

Sub IsChecked()
   Dim I As Integer
   Dim tr As Object
   Set tr = WD.querySelectorAll("table tr")
      For I = 1 To tr.length - 1
         '-- check if second cell in the row matched textbox value
         If tr(I).childNodes(1).innerText = Me.Text0 Then
            '-- if true: in fifth cell in the row set checked property true
            tr(I).childNodes(4).childNodes(0).Checked = True
         End If
      Next
End Sub

TestCheckBoxOnHtml.zip

  • Like 2
  • Thanks 2
رابط هذا التعليق
شارك

  • 2 weeks later...
في 31‏/1‏/2022 at 01:39, أبو إبراهيم الغامدي said:

لكون الحقول غير مرتبطة بجدول بيانات..

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

أولا- أعتذر لتأخري عن الرد لظروف خارجة عن الارادة - ولكن الحمد لله ها قد عدت :biggrin:

ثانيا- جزاكم الله خيرا هذا هو المطلوب تماما - ولكن لي استفسار وطلب علي استحياء :wub:

اما الاستفسار فهو عند ضغط CheckBox بالتطبيق الأصلي يحدث حدث كتظليل الصف بلون مختلف واظهار رسالة ما - فهل عند تمرير القيمة للـ CheckBox  من خلال الكود الذي تفضلتم به هل سيتم عمل الحدث بشكل تلقائي ام سيتطلب الأمر منادة الحدث عند الضغط واجراء تعديل ما علي كود حضرتك - وان كان الأمر هكذا فسيكون الطلب 

كيف اصل الي هذا الكود الذي يتم استدعائه عند الضغط علي الـ CheckBox ( مع العلم لي خلفية بسيط عن لغة الـ html والحمد لله)  فلا بأس بالاشارة فقط حتي لا ازعجكم بشرح مطول 

وطلب أخير علي استحياء أيضا :wub: ولكن أطمعني في هذا كرمكم المعهود 

في 31‏/1‏/2022 at 01:39, أبو إبراهيم الغامدي said:
childNodes(4).childNodes(0)

ما هي الدلالة الرقمية في هذا الجزء من الكود

 

في 31‏/1‏/2022 at 01:39, أبو إبراهيم الغامدي said:
("table tr")

tr كما اعرف علي حسب معلوماتي المحدودة بلغة الوسوم هو وسم للصف داخل الجدول هل هذا صحيح؟ وهل هذا له علاقة بدلالة الأرقام بالجزء السابق من الكود.

وجزاكم الله خيرا 

رابط هذا التعليق
شارك

  • 2 weeks later...

الحمد لله بعد فحص الكود اتضحت لي سذاجة تلك الاستفسارات السابقة :biggrin: لعلي تعجلت في السؤال قبل اختبار الكود جيدا 

جزاكم الله خيرا 

عند نقل الكود للمشروع الأصلي ظهرت معي مشكلتان:

1- في الصفحة الأساسية عدد 2 جدول - فكانت المشكلة الأولي هي استهداف أحدهم دون الآخر - وقد حاولت التغلب علي هذا و الحمد لله

2- تظر معي رسالة خطأ ولم استطع معرفة سببها حتي الآن ولا يتم منح الـتشك بكس قيمة - نسيت ان اقوم بتصوير رسالة الخطأ - سأقو بهذا غدا ان شاء الله ولكن الخطأ يظهر عند جملة childNodes ويعطني ان هذه الخاصية غير متاحة لهذا الأوبجكت علي ما اذكر من هذه الرسالة 

شاكر لكم سعة صدركم رغم انقطاعي الطويل

رابط هذا التعليق
شارك

أهلا بك @أبو عبدالله الحلوانى

23 ساعات مضت, أبو عبدالله الحلوانى said:

الحمد لله بعد فحص الكود اتضحت لي سذاجة تلك الاستفسارات السابقة :biggrin: لعلي تعجلت في السؤال قبل اختبار الكود جيدا 

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

في 26‏/2‏/2022 at 23:34, أبو عبدالله الحلوانى said:

2- تظر معي رسالة خطأ ولم استطع معرفة سببها حتي الآن ولا يتم منح الـتشك بكس قيمة - نسيت ان اقوم بتصوير رسالة الخطأ - سأقو بهذا غدا ان شاء الله ولكن الخطأ يظهر عند جملة childNodes ويعطني ان هذه الخاصية غير متاحة لهذا الأوبجكت علي ما اذكر من هذه الرسالة 

قم فقط باستبدال childNodes  بــ children

أجريت بعض التعديل على الشفرة وجعلتها تقوم بتحديث جدول البيانات

 TestCheckBoxOnHtml.accdb

  • Thanks 1
رابط هذا التعليق
شارك

في 27‏/2‏/2022 at 23:18, أبو إبراهيم الغامدي said:

قم فقط باستبدال childNodes  بــ children

اعتذر علي تأخري بالرد 

جزاك الله خيرا وكتب اجر ما تقدمون في ميزان حسناتكم 

هذا قام بالفعل بانهاء المشكلة وتم تعليم الـ check Box والحمد لله - ولكن كما ذكرتم 

في 31‏/1‏/2022 at 01:39, أبو إبراهيم الغامدي said:

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

ولكن يبدو ان سير العمل مع المستعرض بالنسبة لادخال البيانات مختلف تماما عن ما كنت اعتقد 

مهمة الاتشك بالصفحة وضع علامة امام اسم العميل لغرض فصل بيانات العملاء المتعامل معهم بشكل يدوي عن باقي العملاء الذين لم يتم التعامل معهم - لا آليا ولا يدويا 

طبعا بمجرد الضغط علي الاتشك يتم اجراء الحدث - وكنت اظن ان تمرير القيمة الي الاتشك برمجيا لا يفرق عن تمرير القيمة اليه يدويا 

ولكن هذا لم يحدث  هل لا بد ان امرر القيمة الي الجدول بشكل مباشر ؟! 

الا يوجد حل لتمرير القيمة الي الاتشك كما لو كان هذا يتم بشكل يدوي بدون التعرض الي التعامل مع الجدول

وجزاكم الله خيرا 

 

رابط هذا التعليق
شارك

18 ساعات مضت, أبو عبدالله الحلوانى said:

الا يوجد حل لتمرير القيمة الي الاتشك كما لو كان هذا يتم بشكل يدوي بدون التعرض الي التعامل مع الجدول

لو أعطيتني فكرة عن كيف وصلت البيانات إلى صفحة الويب وإلى أين ستذهب بعدها..

كان الجواب على قدر السؤال ولو زدتنا زدناك.. لكنك لا تزال تدور حول نقطة واحدة!

 

رابط هذا التعليق
شارك

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

ولو زدتنا زدناك..

زادكم الله من فضله وكرمه 

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

كيف وصلت البيانات إلى صفحة الويب

البيانات موجودة مسبقا بقاعدة بيانات علي الـ SQl server وصفحة الويب عبارة عن وسيط تقوم بمعالجة واستقبال البيانات المرسلة آليا من اجهزة ارسال تكون بايدي مندوبي الشركة 

اما الجدول الذي ادور حوله هو عبارة عن تقرير لباقي بيانات العملاء الذين لم يتم التعامل معهم بشكل آلي.

ليأتي دور برنامج الأكسس والذي يتم تخزين بيانات العملاء الذين تم التعامل معهم يدويا -لم يتم ادخال بياناتهم علي جهاز الارسال يعني-

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

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

وإلى أين ستذهب بعدها..

الي نفس قاعدة البيانات علي الـ sql server 

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

وجزاكم الله خيرا

رابط هذا التعليق
شارك

في 3‏/3‏/2022 at 21:31, أبو عبدالله الحلوانى said:

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

لقد رجعت إلى أول المشاركة لأتفهم سوالك بعناية وكان ما وجدته هذا الاقتباس

في 30‏/1‏/2022 at 23:06, أبو عبدالله الحلوانى said:

والسؤال هل يمكن ارسال القيمة للـ CheckBox بدلا من معرفتها؟ وهذا كان سؤالي منذ البداية بالموضوع السابق الاشارة اليه

أيش يعني أرسال القيمة بدلا عن معرفتها؟!  ومن أين ترسل؟

في 3‏/3‏/2022 at 21:31, أبو عبدالله الحلوانى said:

ليأتي دور برنامج الأكسس والذي يتم تخزين بيانات العملاء الذين تم التعامل معهم يدويا -لم يتم ادخال بياناتهم علي جهاز الارسال يعني-

وهذه العبارة أيضا تحتاج إلى توضيح..

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

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

 

 

 

رابط هذا التعليق
شارك

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

أيش يعني أرسال القيمة بدلا عن معرفتها؟!  ومن أين ترسل؟

عنيت بها ما تفضلتم به بالمرفقكم الأول والذي كان يعرض رسالة لبيانات الحقل الذي قيمة الاتشك به = true

وقد تفضلتم بمرفقكم الأخير بحل هذا الامر وجزاكم الله خيرا 

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

في ظني أنك تريد حفظ البيانات على صفحة بعد تحديد السجلات المراجعة

يبدو اني لم احسن توضيح مقصدي بشكل كاف ارجو ان يكون المثال المرفق به توضيح اكثر للفكرة المطلوبة 

بهذا المرفق شرح للفكرة وتنفيذ بسيط لها 

وجزاكم الله خيرا

HTML Table.accdb

رابط هذا التعليق
شارك

الأمر بسيط للغية ولكن طلاسم لغة الوسوم لم استطع حلها حتي الآن :biggrin:

في نموذج الأكسس عندما يكون النموذج مرتبط بجدول فعند تمرير القيمة من النموذج الي الجدول يدويا او عن طريق الكود فلا يوجد فرق اذ ان القيمة يتم تخزينها بالجدول سواء تم ادخالها يدويا من الفورم او عن طريق ضغط زر علي الفورم اليس كذلك؟!

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

وعند تمرير القيمة من خلال الكود لا يحدث شىء سوي تعليم الاتشك شكليا ولا يتم تمرير القيمة الي الجدول 

هذا كل ما في الأمر 

ارجو ان اكون قد اوضحت الفكرة بشكل كاف هذه المرة 

وبالمثال المرفق توضيح للمطلوب بالضبط

وجزاكم الله خيرا

رابط هذا التعليق
شارك

في 8‏/3‏/2022 at 22:26, أبو عبدالله الحلوانى said:

وعند تمرير القيمة من خلال الكود لا يحدث شىء سوي تعليم الاتشك شكليا ولا يتم تمرير القيمة الي الجدول 

1341281410_Screenshot2022-03-15065620.jpg.fb3ee5f6ad7786e5e7a575c3a7d8430a.jpg

من هذه المصورة يتضح أن صفحة الويب ضمن خادم الويب (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

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information