mhareek

الاخوة المحترفون مثل للشيك بوكس والداتا جريد ارجو الشرح

9 ردود في هذا الموضوع

اخوانى الاحباب انا ارفقت مثال

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

لانى تهت فى المثال مش عارف مايخص الشيك بوكس فى الكود

لان المثل بة اكثر من شى ارجو الاهتمام اخوانى المحترفون

جزاكم الله خير نظرا لحاجتى الية

اريد فقط الشيك بوكس ولكم جزيل الشكر

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

بما يفيد الكل

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

ارجوالمساعده جزاكم الله خيرا

The Checkbox Column

Implementing checkboes for boolean columns involves many of the same constructs as the lookup column, except that we must have one checkbox for every visible row, and we must maintain synchronization between the visible states of the checkboxes and the data that underlies them.

Checkboxes in VB aren't actually boolean, they are tristate; a value property of 1 indicates the check-mark is set, 0 means it is clear, and 2 means it is grayed to symbolize an indeterminate value. Values 1 and 0 map perfectly to SQL Server bit columns but some adjustment is needed for to support [VB-native] variant boolean values, which represent "True" with the numeric value -1. You can use the Abs function to convert a True expression to set a checkbox, e.g.,

checkbox1.value = Abs(str = "Yes")

This will evaluate to 1 if the value of str is "Yes", and 0 otherwise.

To dynamically supply each visible row with a checkbox at runtime, we must create a control array with one element at design time -- at index 0. This can be done in several ways, the easiest of which to explain being: 1.) Create a checkbox on the form; 2.) Set the Index property of that checkbox to 0 (it will be empty by default.)

A non-empty Index property converts a regular control to a control array. Once done, you can create additional elements in that array, using the Load statement in your code. The pair of loops below will adjust the number of array elements up or down to suit the size of the Grid:

Dim

i With

Grid If

(ChkboxArray.UBound <> .VisibleRows) Then

For i = ChkboxArray.UBound + 1 To .VisibleRows - 1

Load ChkboxArray(i)

Next

For i = .VisibleRows To ChkboxArray.UBound

Unload ChkboxArray(i)

Next

End If

End With

Syncing changes made by a user clicking a checkbox is best accomplished using a clone of the recordset that's bound to the Grid -- we don't want to use the same recordset as the Grid uses its record position internally, and altering it causes negative behavior to say the least. A clone is created by calling the Recordset.Clone method (see the ADO documentation for a full discussion of recordset cloning.) Assume for purposes of this handler that a valid clone has been created at class scope or above.

Private Sub cb_Click(index As Integer)

On Error Resume Next

With Grid

rsClone.Bookmark = .RowBookmark(index)

rsClone.Fields(1).Value = cb(index).Value * -1

End With

End Sub

If something other than the grid could change the underlying data while it's displayed in the grid, we must declare the recordset object WithEvents, and process the RecordChangeComplete event. Note the use of a global boolean flag (bInSetCheckboxes) to prevent a recursive event storm.

Private Sub rsClone_RecordChangeComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)

If bInSetCheckboxes = True Then Exit Sub

SetCheckboxes 1, cb

End Sub

That's basically it! The sample application that accompanies this article demonstrates implementation of these technique. (It also includes a utility form called GridSpy, that's explained in a companion article.)

ارجو الاهتمام من يفعل خيرا يجد خيرا

GridSpyTester.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

غريبة ناس كتير شاهدة المشاركة ولا احد ردد هلى الموضوع شائك لهذة الدرجة

حتى فى 5 قامو بالتحميل

تاخوانى طيب نتناقش سوبا فى هذا الموضوع ومن النقاش انا متاكد اننا هنقدر نوصل لشى ممتاتز سويا

والله الموفق وهو المستعان على كل شء

والحمد للة رب العالمين

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أخي الكريم

الموضوع ليس تعقيد

لماذا تريد تحليل هذا المثال؟

ضع طلبك هنا ونتناقش في ايجاد حل لمسألتك

فالوقت كالسيف

شكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخى الحبييب جزاك الله خيرا على الرد انا لا اريد تحليل المثال كل الذى اريدة

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

لذلك جلبت هذا المثل ولكنى لا افهم جميع اطرافة فطلبت من الاخوة الافاضل المساعدة

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بوركت يا طيب

طريقتها معقدة وبصراحة ما عندي فكرة عنها

لكن يوجد طرق تغنيك عنها

يعني ممكن وضع (YES/NO) (TRUE/FALSE)

وبالنسبة لحفظ البيانات بامكانك ادخالها في TEXT BOX و CHECK BOX ومن ثم حفظها في ال DATAGRID

اذا اردت ضع مثال على ما تريد وسأشرحه لك ان شاء الله

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخى الحبييب الغالى كلامك جميل ولكن لن تظهر الشيك بوكس فى الداتا جريد

ولو وضعت فى قاعدة البينات عمود ب نعم او لا

يطهر فى الداتا جريد 0 و -1 ولا يظهر الشيك بوكس

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

بينما لو قمت بالتاشير داخل قاعدة البينات عند فتح البروجكت يظهر التغيرات التى غيرتها

اذن نفهم من ذلك انة مجرد عرض لما فى داخل قاعدة البينات ولا يؤثر فيها

اما ما تريد ان تقوم به اخى الحبييب فانه لاتظهر الشيك بوكس فى الدتا جريد وبالتالى انتفى الغرض الاساسى اخى الحبييب

ان شاء الله ربنا يساهدنا ونقدر نفهم المثل ونغير فية

والله المستعان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

انا اقصد اخي العزيز ان لا تجعل نوع المتغير (نعم / لا)

وانما اجعله نص والقيم المحفوظه تكون نعم أو لا (نص) وليس TRUE / FALSE

يعني

مدخن أو غير مدخن

بدل ما اضع CHECKBOX ويكون فيه علامه اذا كان مدخن وبدون علامه اذا غير مدخن

يكون الحقل نص ويكون فيه "نعم" اذا كان مدخن و "لا" اذا غير مدخن

ان شاء الله الصورة وضحت الان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخى الحبييب ممكن ان تضع مثال بسيط على فكرتك بالربط بدون اكواد

مشكور اخى الحبييب

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

المرفق يوضح بأنه بدل وضع CHECKBOX نضع LIST

ويتم تخزينها في قاعدة البيانات كما هي

اذا نعم يتم تخزين كلمة نعم

واذا لا يخزن لا

ان شاء الله واضحة

EX.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .