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

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

قام بنشر

السلام عليكم 
كيف أمنع التحديد المتعدد في خانة مربع الاختيار؟

وشكرا لكم

قام بنشر
1 ساعه مضت, abofayez1 said:

السلام عليكم 

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

هل لك أن توضح أكثر مطلبك !؟!؟

هل تقصد الـ Checkbox ؟؟؟؟؟؟؟؟؟؟

ارفق مثال لتتوضح فكرتك وهدفك

قام بنشر (معدل)

aa.accdb

المطلوب السماح بتحديد سجل واحد فقط ومنع الاختيار المتعدد

تم تعديل بواسطه abofayez1
قام بنشر (معدل)

تفضل استاذ @abofayez1

Private Sub y_n_AfterUpdate()
    If Me.y_n.Value = True Then
        Dim strSQL As String
        strSQL = "UPDATE a SET y_n = False WHERE ID <> " & Me.id
        CurrentDb.Execute strSQL, dbFailOnError
        Me.Requery
    End If
End Sub

 

aa-1.accdb

تم تعديل بواسطه kkhalifa1960
  • Thanks 1
قام بنشر

أشكرك أخي kkhalifa1960

لكن ظهرت لي مشكلة عند تحديد اي مربع اختيار يبقى التركيز على الاسم الأول الذي هو أحمد ولايتم نقل التركيز للاسم المقابل لمربع الاختيار المحدد

  • تمت الإجابة
قام بنشر
48 دقائق مضت, abofayez1 said:

لم يعمل الكود الذي تفضلت بإضافته.... حيث يمكن تحديد اكثر من خيار في وقت واحد

يعمل عندي 100%100

يمكن جربت ملف آخر بداله جرب الكود في حدث كليك  y_n


CurrentDb.Execute ("UPDATE a SET a.y_n=false")
DoCmd.RunCommand acCmdSaveRecord

 

  • Thanks 1
قام بنشر

السلام عليكم

 

اجابات الشباب كانت تغير القيم في الجدول ،

بينما احاول جاهدا التقليل من زيارات الجدول ، بسبب الشبكة والتقليل من الضغط على الجداول ، فيكون عملي على النموذج فقط 🙂

 

طريقة العمل:

في النموذج اعمل حقل مخفي اسمه myID ،

ثم نعمل حدثين على الحقل y_n :

قبل التحديث: يتأكد انك اخترت صح ، وانك على سجل غير السجل السابق ،

                  فعليه ، يغير قيمة الصح من السجل السابق (ID  السجل موجود في myID) ، الى 0
بعد التحديث: نعطي رقم ID  السجل للحقل myID

Private Sub y_n_BeforeUpdate(Cancel As Integer)
    
    If Me.y_n = -1 And Me.id <> Me.myID Then
        '- y_n checked, and Record ID <> myID
        
        With Me.RecordsetClone
            .FindFirst "[ID]=" & Me.myID
            .Edit
                !y_n = 0
            .Update
        End With
        
    End If
  
  End Sub
  
  
  
  
  Private Sub y_n_AfterUpdate()

    Me.myID = Me.id
  End Sub

.

1622.gif.d3c959564ea464d016ca65ae58b17ace.gif

 

 

1622.aa.accdb.zip

  • Thanks 1
قام بنشر

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

جزاك الله خيرا ... ورحمك الله ووالديك أخوي jjafferr

فعلا حل إبداعي ومميز ... عمل بامتياز

شكرا لك

  • jjafferr changed the title to منع التحديد المتعدد في خانة مربع الاختيار، في النموذج المستمر
قام بنشر
1 ساعه مضت, jjafferr said:

في النموذج اعمل حقل مخفي اسمه myID ،

ثم نعمل حدثين على الحقل y_n :

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

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

املاه اخونا الشايب

 

الشايب529.gif

قام بنشر

أخوي الشايب

لحل هذه المشكلة أضفت كود عند فتح النموذج يتم تفريغ مربعات الاختيار ... فاحتلت كل المشكلة التي  ذكرتها

قام بنشر

اهلا بالشايب الخبير 🙂

2 ساعات مضت, شايب said:

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

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


Private Sub Form_Load()

    '- Find the Checked y_n field
    Me.y_n.SetFocus
    DoCmd.FindRecord "-1", , , , , , True
    Me.myID = Me.id
    
End Sub

.

 

اما النقطة الثانية ، فالمفروض ان يتم تغيير البيانات من النموذج فقط ، وإلا ، فيجب تحدبث الجدول (سيكون اسرع من تحديث آلاف السجلات في النموذج)

  • Thanks 1
قام بنشر
8 ساعات مضت, jjafferr said:

وإلا ، فيجب تحدبث الجدول (سيكون اسرع من تحديث آلاف السجلات في النموذج)

هذا قابلة اهتمام أكثر بنسبتة لي

8 ساعات مضت, jjafferr said:

اما النقطة الثانية ، فالمفروض ان يتم تغيير البيانات من النموذج فقط

هذا كود بطريقة ثانية (في حدث واحد فقط و بدون اضافة كائنات اخرى)

Dim RecNum As Integer
RecNum = CurrentRecord
DoCmd.SearchForRecord , , acFirst, "y_n=true": y_n = False
DoCmd.SearchForRecord , , acLast, "y_n=true": y_n = False
DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord , , acGoTo, RecNum: y_n = True

aa.accdb

قام بنشر
10 ساعات مضت, abofayez1 said:

أخوي الشايب

لحل هذه المشكلة أضفت كود عند فتح النموذج يتم تفريغ مربعات الاختيار ... فاحتلت كل المشكلة التي  ذكرتها

احسنت بارك الله فيك

10 ساعات مضت, jjafferr said:

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

يا ابا عبد الله احسنت فزد

ويمكن ايضا الاستغناء عن مريع النص الغير منضم

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

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

الشايب

 

قام بنشر
1 ساعه مضت, ابو عارف said:

هذا كود بطريقة ثانية (في حدث واحد فقط و بدون اضافة كائنات اخرى)

هنا بالنسبة للنقطة الثانية 👇

12 ساعات مضت, شايب said:

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

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

طبعا ممكن حل هذه المشكلات ولكن النقاش مع الاساتذه اكثر فائدة ومتعه

اخونا الشايب

 

الشايب540.gif

قام بنشر
2 ساعات مضت, ابو عارف said:

في حدث واحد فقط و بدون اضافة كائنات اخرى

احسنت اخوي ابو عارف

بس ياريت تحل الخطأ:
اختار صح في آخر سجل ، ثم روح لأول سجل واعمل صح ، بتحصل على خطأ.

 

21 دقائق مضت, شايب said:

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

يحتاج لها مزاج 🙂

قام بنشر

في هذا الموضوع ، اتضح جليا ان مقولتي صحيحة (للعلم ، اخونا العود @ابوخليل هو الذي صحح واخرج هذه الجملة بهذه الديباجة الجميلة ، شكرا لك 🙂 ) :

اقتباس

في اعتقادي ، مشاركة أكثر من شخص في الرد على السؤال ، يفتق الاذهان ويدمج التجارب ويبلور الافكار وفائدة للجميع ، فمنه نتعلم الطرق الاخرى للإجابة على السؤال:rol:

 

 

2 ساعات مضت, ابو عارف said:

في حدث واحد فقط و بدون اضافة كائنات اخرى

 

ولا يهمك ، وهاي طريقة بحدث واحد فقط


Private Sub y_n_BeforeUpdate(Cancel As Integer)

    '- اشارة الى سجلات النموذج
    With Me.RecordsetClone
    
        '- حذف الصح السابق
        .FindFirst "[y_n]=-1"
        .Edit
            !y_n = 0
        .Update
    
    End With
    
End Sub

.

 

45 دقائق مضت, شايب said:

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

طبعا ممكن حل هذه المشكلات ولكن النقاش مع الاساتذه اكثر فائدة ومتعه

ولا يزال قيد التجربة 🙂

قام بنشر
منذ ساعه, شايب said:

1. يتم حلها ولكن بعد عدة اختيارات اضافة الى رسالة خطأ عند النقر على نفس الحقل

2. طبعا ممكن حل هذه المشكلات ولكن النقاش مع الاساتذه اكثر فائدة ومتعه

1.

للأسف ما توصلت الى طريقة لعمل جميع التغييرات في النموذج اسرع من تغييرها من الجدول مباشرة عن طريق استعلام.

للعلم ، عند تقديمي لإقتراح ، فانا انظر لقاعدة البيانات وكأن بها على الاقل 10,000 سجل.

 

2.

في انتظار مشاركتك

قام بنشر
26 دقائق مضت, jjafferr said:

للأسف ما توصلت الى طريقة لعمل جميع التغييرات في النموذج اسرع من تغييرها من الجدول مباشرة عن طريق استعلام.

الحقيقة انك صرحت بما في نفسي تمام

ولكني تعمدت عدم ذكره لغرض الحصول على اكثر من فكره

26 دقائق مضت, jjafferr said:

2.

في انتظار مشاركتك

بكل امانة قبل مشاركة الاساتذة جربت طريقتين

  • التعامل مع مصدر السجلات في الجدول
  • استعلام مشابه لعمل الاستاذ ابو عارف وعمل بشكل ممتاز واعتقد هو الافضل والاسهل

اما بشأن 👇

1 ساعه مضت, شايب said:

طبعا ممكن حل هذه المشكلات

ولكن هل الامر يستحق اضافة عدة اسطر لمعالجة ما يستجد من ملاحظات

اخيرا مشاركتك الاخير تؤدي المطلوب

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

وانا اعلم كما اشرتم 👇

12 ساعات مضت, jjafferr said:

فالمفروض ان يتم تغيير البيانات من النموذج فقط

ولكن قد يكون التعديل من نموذج اخر لغرض تحديث او تصفية لتقرير او او .... الخ

الشايب

 

  • Like 1
قام بنشر (معدل)
4 ساعات مضت, شايب said:

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

نظرا لوجهة نظر الاستاذ/جعفر  حاليا نتعامل مع نموذج فقط و في مشاركتي القامة سنعالج تلك الخطاء ان شاء الله

4 ساعات مضت, jjafferr said:

اختار صح في آخر سجل ، ثم روح لأول سجل واعمل صح ، بتحصل على خطأ.

أخي حعفر ربما تقصد سجل جديد لا سجل الأخير ، في العادة نستخدم اختيار صح/خطاء لسجلات موجودة مسبقا لا لجديدة ولكن لانستبعد ان مستخدم يقوم  وضع  العلامة بالخطاء، و لتخطي تلك الخطاء التعديل في مرفق

aa.accdb

 

تم تعديل بواسطه ابو عارف
قام بنشر
18 دقائق مضت, ابو عارف said:

أخي حعفر ربما تقصد سجل جديد لا سجل الأخير

لا ، هو السجل الاخير ، ثم عمل الصح في السجل الاول:

1622_error.gif.00faea7232dade9069060ea426228c7e.gif

 

 

واشوف انك تداركت الخطأ في النسخة الاخيرة 🙂

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