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

البحث في استعلام مع وجود حقول خالية


alzahrani07
إذهب إلى أفضل إجابة Solved by رمهان,

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

أستخدمت هذا الكود

Like "*" & [Forms]![Form1]![TextSearch] & "*"

المشكلة في حال وجود فراغ في أحد السجلات لا يظهر في البحث

مثال عندي جدول فيه عدد إثنين من البيانات الإسم والقسم

وعندي ثلاث سجلات أحمد وخالد ومحمد

أحمد في الصيانة وخالد في الصيانة ومحمد القسم فارغ

 

في الإستعلام يظهر أحمد وخالد فقط ومحمد لا يظهر للأسف

 

إش الحل ؟

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

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

الموضوع جداً مهم يا ليت أحد يشوف لي حل بشرط ما أبي أعبئ الحقول الفارغة لا بصفر ولا بشيء أبيها فارغة مثل ما هي

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

اللي أنا مستغرب منه ما في ولا مقطع في اليويتوب أحد عمل نفس طريقة البحث اللي أنا عاملها اللي هي أكثر من مربع للبحث يعني بحث متعدد بهذه الطريقة !!

-----------------------------------------------------------------------------

تم إرفاق ملف بسيط فيه مشكلتي وهي كالاتي

أولا : الجدول يحتوي على 5 سجلات وفي الفورم يظهر فقط 3 منهم والسبب ان السجل رقم 3 و 4 فيهم فراغات يعني حقول فارغه

ثانياً وبالتأكيد بسبب ذلك عند كتابة أحد بيانات الحقل رقم 3 أو 4 في مربعات البحث فلن تظهر النتيجة بسبب إنه من الأساس ما استدعاهم وكل هذه اللخبطة بسبب الحقول الفارغة

 

اللي أحتاجه حل إما بتعديل الإستعلام وهذا الأفضل أو كتابة كود إذا أضطر الأم

المهم عندي عدم استخدام فلتر في الجدول أو يجي أحد يقول لي خلي الفراغات تأخذ قيمة إفتراضية مثلا 0 هذه الحلول غير مناسبة لي

 

وشكــــــــراً للجميــــــــــع

 

Search Test.rar

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

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

section وأكتب داخل مربع

Mech

Naserراح يظهر معاك سجل

 وهذا غير صحيح

تم تعديل بواسطه alzahrani07
رابط هذا التعليق
شارك

@ابوخليل بعد إذن أستاذنا 

@رمهان وبعد إذن أستاذنا

@alzahrani07 أستاذ

سيادتك ما تريد فلتر

وما تريد قيمة افتراضية

فهل تريد حل يعتمد على استخدام دالة

Function

وتؤدي طلبك بدون فلتر وبدون استبدال قيم ؟

وتعتمد  على تكوين استعلام مخصص لطلبك

ويمكن أن تبحث بحث متعدد للثلاثة مربعات بحث معا أو فرادي أو حسب ما تريد الجمع بينهم

 

وأنا أريد أن أعرف رأيك كي لا أضيع الوقت في الدالة ثم تقول لي  لا أريد هذه الطريقة

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

نعم صحيح لا أريد فلتر ولا أريد قيمة إفتراضية

إذا قدرت أعدل على الإستعلام أشوف إنه أفضل حل مثلاً

Like "%" Me.textbox .... إلخ هذا مثال فقط إنه أستبدلت النجمة بـ %

 

لكن إذا أضطر الأمر أستخدم كود خاص Function مو مشكلة المهم يكون سهل التعديل لإني شفت حل عن طريق موقع أجنبي لكن طويل جداً وصعببب جداً ..........

 

وكل الشكر والتقدير للجميــــع ،،،

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

1 hour ago, alzahrani07 said:

لكن إذا أضطر الأمر أستخدم كود خاص

Function

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

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

1 + 1

= 2

وده طبعا مينفعش معانا 

لازم تبتكر يعني مثلا

1+1

= 3 - 1

 

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

وبناءا على تلك القيم يتم انشاء كود استعلام

ثم نجعله مصدر النموذج

لذلك لكي تطبق الدالة عليك أولا أن تختار مصدر بيانات النموذج هو الجدول

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

وجرب

واعمل أكثر من تجربة

مرة قيمة خالية هنا

ومرة قيمتين خاليتين هناك وهكذا

 

Option Compare Database
Dim strSQL, a, b, c As String

Private Sub SectionSearch_AfterUpdate()
rs
End Sub

Private Sub StatusSearch_AfterUpdate()
rs
End Sub

Private Sub UserSearch_AfterUpdate()
rs
End Sub

Function rs()
strSQL = ""
a = strSQL & IIf(Nz(Me.UserSearch, 0) = 0, "", " (Table1.User) Like '*" & "" & Me.UserSearch & "" & "*'")
b = strSQL & IIf(Nz(Me.SectionSearch, 0) = 0, "", " (Table1.Section) Like '*" & "" & Me.SectionSearch & "" & "*'")
c = strSQL & IIf(Nz(Me.StatusSearch, 0) = 0, "", " (Table1.Status) Like '*" & "" & Me.StatusSearch & "" & "*'")
   If Nz(Me.UserSearch, 0) = 0 And Nz(Me.SectionSearch, 0) = 0 And Nz(Me.StatusSearch, 0) = 0 Then
   Me.RecordSource = "SELECT Table1.ID, Table1.User, Table1.Section, Table1.Status FROM Table1; "
   Else
          strSQL = "SELECT Table1.ID, Table1.User, Table1.Section, Table1.Status FROM Table1 WHERE "
          If Nz(Me.UserSearch, 0) <> 0 Then
              strSQL = strSQL & a
                 If Nz(Me.SectionSearch, 0) <> 0 Then
                    strSQL = strSQL & " and " & b
                        If Nz(Me.StatusSearch, 0) <> 0 Then strSQL = strSQL & " and " & c
                Else
                        If Nz(Me.StatusSearch, 0) <> 0 Then strSQL = strSQL & " and " & c
                End If
          Else
                If Nz(Me.SectionSearch, 0) <> 0 Then
                    strSQL = strSQL & b
                        If Nz(Me.StatusSearch, 0) <> 0 Then strSQL = strSQL & " and " & c
                Else
                        If Nz(Me.StatusSearch, 0) <> 0 Then strSQL = strSQL & c
                End If
          End If
   Me.RecordSource = strSQL
   End If
Me.Requery
End Function

 

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

9 ساعات مضت, Gamal.Saad said:

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

1 + 1

= 2

وده طبعا مينفعش معانا 

لازم تبتكر يعني مثلا

1+1

= 3 - 1

يا جدعان انا قلت الراجل ده جامد تسلم ايدك ياباشا :clapping:

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

25 minutes ago, Amr Ashraf said:

يا جدعان انا قلت الراجل ده جامد تسلم ايدك ياباشا :clapping:

@Amr Ashraf أستاذنا

شكرا على التشجيع ههههه

أنا خايف تكون جربت

1 + 1

ولم تجرب المرفق

عاوزين نعرف لو فيه مشاكل ولا لأ ؟

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

9 ساعات مضت, Gamal.Saad said:

@Amr Ashraf أستاذنا

شكرا على التشجيع ههههه

أنا خايف تكون جربت

1 + 1

ولم تجرب المرفق

عاوزين نعرف لو فيه مشاكل ولا لأ ؟

ههههه انا عن نفسى عجبتنى حتة 1+1 دى مصرى مصرى يعنى :wavetowel: بالنسبة للمرفق لا مجربتوش بس شكله شغل عالى :dance1:

انا عن نفسى فى مسألة الاستعلامات لو هعمل Criteria بعملها Like "*" بالطريقة التقليدية لأنى مبسيبش الحقول اللى هبحث فيها فارغة وادوخ نفسى ولو محتاج الاسم بالظبط بعمل المعيار Like بس واكتب الحاجة بالظبط عشان يتفلتر عليها انما ايه لزمة انى ابحث فى حقل سايب فيه Null Values ؟ ده رأيى  واللى انا ماشى عليه 

 

تم تعديل بواسطه Amr Ashraf
  • Like 1
رابط هذا التعليق
شارك

2 minutes ago, Amr Ashraf said:

ههههه انا عن نفسى عجبتنى حتة 1+1 دى مصرى مصرى يعنى

صدقني فعلا دي عندنا مشكلة

يبقى كل الأمور واضحة وتكلم الشخص بالمنطق

واحد زائد واحد بيساوي اثنين

يقعد يجادل ومش مقتنع بكلامك ويقول لماذا اثنين؟ وليس أكثر أو أقل؟

 

7 minutes ago, Amr Ashraf said:

 بالنسبة للمرفق لا مجربتوش بس شكله شغل عالى 

حتى لو مش شغال يبقى عملنا اللي علينا وأخذنا ثواب النية إنما الأعمال بالنيات

9 minutes ago, Amr Ashraf said:

انا عن نفسى فى مسألة الاستعلامات لو هعمل Criteria بعملها Like "*" بالطريقة التقليدية لأنى مبسيبش الحقول اللى هبحث فيها فارغة وادوخ نفسى ولو محتاج الاسم بالظبط بعمل المعيار Like بس واكتب الحاجة بالظبط عشان يتفلتر عليها انما ايه لزمة انى ابحث فى حقل سايب فيه بيانات فارغة ؟ ده رأيى  واللى انا ماشى عليه

أنا مقتنع بكلامك تماما

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

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

Gamal.Saad

أستاذنا يعطيك العافية الكود اشتغل 100% ألف شكر لك.

Amr Ashraf

فالنفترض أحد المستخدمين ما أدخل بيانات في حقل ما لإنه ما يحتاجها حالياً أو غير متوفرة البيانات عنده

ومستقبلاً حب يضيف داخل الحقل الفارغ البيانات المطلوبة ، كيف راح يقدر يبحث عنها إذا السجل أساساً ما ظهر وقت البحث !

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

  • أفضل إجابة

السلام عليكم

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

اخي جمال شكرا واعتقد انك تستحق خبير من الان ومن خلال قرائتي لمشاركاتك

اخي الزهراني

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

SELECT Table1.ID, Table1.User, Table1.Section, Table1.Status
FROM Table1
WHERE (((IIf(IsNull([forms]![Form1]![SectionSearch]),1,InStr(1,[Section],[Forms]![Form1]![SectionSearch])))>0) AND ((IIf(IsNull([forms]![form1]![UserSearch]),1,InStr(1,[user],[Forms]![Form1]![UserSearch])))>0) AND ((IIf(IsNull([forms]![form1]![StatusSearch]),1,InStr(1,[status],[Forms]![Form1]![StatusSearch])))>0));

بالتوفيق

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

3 ساعات مضت, رمهان said:

السلام عليكم

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

اخي جمال شكرا واعتقد انك تستحق خبير من الان ومن خلال قرائتي لمشاركاتك

اخي الزهراني

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


SELECT Table1.ID, Table1.User, Table1.Section, Table1.Status
FROM Table1
WHERE (((IIf(IsNull([forms]![Form1]![SectionSearch]),1,InStr(1,[Section],[Forms]![Form1]![SectionSearch])))>0) AND ((IIf(IsNull([forms]![form1]![UserSearch]),1,InStr(1,[user],[Forms]![Form1]![UserSearch])))>0) AND ((IIf(IsNull([forms]![form1]![StatusSearch]),1,InStr(1,[status],[Forms]![Form1]![StatusSearch])))>0));

بالتوفيق

 

الطريقة 100% وسهلة الإستخدام بالنسبة لي أو بالمعنى الصحيح بما إني مبتدئ فهذا الكود سهل علي أقدر أعدل عليه واضيف مثل ما أبي

أتمنى أخوي Gamal.Saad  ما يتضايق من كلامي

شكـــراً شكــراً لكم جميعاً ..............................

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

4 hours ago, رمهان said:

اخي جمال شكرا واعتقد انك تستحق خبير من الان ومن خلال قرائتي لمشاركاتك

يا فندم هذه شهادة أعتز بها من محترف مثلك

بالنسبة للصورة بتاعة الخبراء كنت أظن إن بعض الاعضاء المحترفين يختاروا صورة خبير ويضعوها تحت الاسم

ههههههه كنت هرفع صورة من عندي بس لوصف آخر وكنت هبحث عن مكان الرفع

1 hour ago, alzahrani07 said:

الطريقة 100% وسهلة الإستخدام بالنسبة لي أو بالمعنى الصحيح بما إني مبتدئ فهذا الكود سهل علي أقدر أعدل عليه واضيف مثل ما أبي

أتمنى أخوي Gamal.Saad  ما يتضايق من كلامي

شكـــراً شكــراً لكم جميعاً ..............................

ياباشا اختر ما شئت من الفاكهة

لن يتضايق أحد من اختيارك

بس عندي سؤال ومش عاوز أطرحه في موضوع مستقل

بس ضروري ولازم أستأذن من صاحب الموضوع والاداريين طبعا. والسؤال هو

كنت من فترة بدخل في منتديات وكان هناك رسائل خاصة بين الأعضاء

هل هي متوقفة في هذا التصميم من المنتديات

عاوز ابحث رسالة خاصة لأحد الأعضاء بدلا من ازعاج الباقين بكلام لن يفيدهم

عندي  بجوار الاسم صورة جرس  يأتيني بالتنبيهات ولا يوجد أي رابط للرسائل

 

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

20 ساعات مضت, رمهان said:

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

 في بالي لوكان المرفق  mdb  لاشارككم

 استاذنا تمون واكثر  .. وأشكرك على تواضعك ولطفك  وبالعكس مثل هذه تحمل بين طياتها التقدير  والمحبة ، اكرر شكري  وتقديري

20 ساعات مضت, رمهان said:

اخي جمال شكرا واعتقد انك تستحق خبير من الان ومن خلال قرائتي لمشاركاتك

 .. ترشيح محل اعتبار 

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

في 6/14/2017 at 13:05, alzahrani07 said:

Gamal.Saad

أستاذنا يعطيك العافية الكود اشتغل 100% ألف شكر لك.

Amr Ashraf

فالنفترض أحد المستخدمين ما أدخل بيانات في حقل ما لإنه ما يحتاجها حالياً أو غير متوفرة البيانات عنده

ومستقبلاً حب يضيف داخل الحقل الفارغ البيانات المطلوبة ، كيف راح يقدر يبحث عنها إذا السجل أساساً ما ظهر وقت البحث !

وجهة نظر و طبعا نرجع ونقول ان لكل فكرة متطلباتها طبعا الظروف اللى بتحكم التصميم

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

15 ساعات مضت, Gamal.Saad said:

كنت من فترة بدخل في منتديات وكان هناك رسائل خاصة بين الأعضاء

هل هي متوقفة في هذا التصميم من المنتديات

عاوز ابحث رسالة خاصة لأحد الأعضاء بدلا من ازعاج الباقين بكلام لن يفيدهم

عندي  بجوار الاسم صورة جرس  يأتيني بالتنبيهات ولا يوجد أي رابط للرسائل

 

افيدك انا يا استاذ جمال الرسائل الخاصة بتتفعل لما توصل لعضو فعال بعد 100 مشاركة يعنى وكده كده لما تترقى وتبقى خبير ياباشا كل حاجة هتبقى مفتوحة :clapping:

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

1 hour ago, Amr Ashraf said:

افيدك انا يا استاذ جمال الرسائل الخاصة بتتفعل لما توصل لعضو فعال بعد 100 مشاركة :clapping:

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

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

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

9 ساعات مضت, Gamal.Saad said:

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

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

ههههههه لا المنتدى هنا اكبر من ذلك كلكم اساتذتنا وبنتعلم على ايدكم والله جزاكم الله خير :fff:

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

  • 2 months later...

الأخوة الكرام

أ  رمهان

إذا أردت أن أضيف اسم وحدة نمطية باسم Simplify فى كود الاستاذ رمهان فأين يكون مكانها ارجو ممن لديه علم بذلك أفادتنا وجزاه الله خيرا

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

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