الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه who me في 1 أغسطس 2010 · 4 رد · 881 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا عملت استعلام في فورم (Form2) والنتيجه تظهر في فورم (Form3)

طبعا انا باستعلم بكذا طريقه مثلا بالتخصص والمهارات

او استعلم بالاسم والمدينه يعني ابغا لما ستعلم عن شييئين واترك الباقي فاضي ما يطلعلي خطأ

وكمان بس ابغا نتيجه الشخص تكون فيها الشيئين اللي استعلمت عنهم مثلا

لو كتبت التخصص IT والمدينه jeddah المفروض تكون النتيجه بس

الاشخاص اللي تخصصهم IT ومدينتهم jeddah بس

لأنو في المثال اللي مرفق يطلع الاشخاص اللي تخصصهم IT ومدينتهم jeddah وكمان الاشخاص اللي مدينتهم jeddah وتخصصهم اي شيئ

ثاني والاشخاص اللي تخصصهم IT ومدينتهم اي شيئ ثاني كمان لأنو الشرط اللي كتبته كان ب(or)

who me.rar

#2

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

#3

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

أرجو أختي الكريمة الاطلاع على الملف المرفق وتفحص التالي:

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

نموذج البحث غير منضم

تم تحويل مربعات النص إلى مربعات تحرير وسرد من أجل سهولة البحث

نموذج النتيجة غير منضم كذلك

الكود يحوي فقط طريقة واحدة هي OpenForm لكن عبارة الشرط مكتوبة بحيث تتجاوز عن العناصر الخالية، كالتالي:

strCriteria = "[Name1]= " & IIf(Me.name1 & "" = "", "[Name1]", "'" & Me.name1 & "'") & " " & _
                  "And [city] = " & IIf(Me.city & "" = "", "[city]", "'" & Me.city & "'") & " " & _
                  "And [skills] = " & IIf(Me.skills & "" = "", "[skills]", "'" & Me.skills & "'") & " " & _
                  "And [majors] = " & IIf(Me.majors & "" = "", "[majors]", "'" & Me.majors & "'")
    DoCmd.OpenForm "Form3", , , strCriteria

والله أعلم.

who me.rar

#4
أحمد مبارك الحيقي كتب:

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

أرجو أختي الكريمة الاطلاع على الملف المرفق وتفحص التالي:

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

نموذج البحث غير منضم

تم تحويل مربعات النص إلى مربعات تحرير وسرد من أجل سهولة البحث

نموذج النتيجة غير منضم كذلك

الكود يحوي فقط طريقة واحدة هي OpenForm لكن عبارة الشرط مكتوبة بحيث تتجاوز عن العناصر الخالية، كالتالي:

strCriteria = "[Name1]= " & IIf(Me.name1 & "" = "", "[Name1]", "'" & Me.name1 & "'") & " " & _
                  "And [city] = " & IIf(Me.city & "" = "", "[city]", "'" & Me.city & "'") & " " & _
                  "And [skills] = " & IIf(Me.skills & "" = "", "[skills]", "'" & Me.skills & "'") & " " & _
                  "And [majors] = " & IIf(Me.majors & "" = "", "[majors]", "'" & Me.majors & "'")
    DoCmd.OpenForm "Form3", , , strCriteria

والله أعلم.

يعطيك العافيه استاذي

كان عندي بعض الاسئله ع الكود ممكن تشرحلي عملهم ؟؟

strCriteria

strCriteria = "[Name1]= " & IIf(Me.name1 & "" = "", "[Name1]", "'" & Me.name1 & "'") & " " & _

وهذا السطر ايش يعني ؟؟

وانا ابغا استفيد من الكود يعني مثلا الاسماء ما ابغاها list و راح اخليها textbox وابغا لما يكون عندي الاسم ثلاثي

وانا اكتب الاسم الاول النتيجه تكون الاسم كامل

مثال

الاسم الثلاثي في الجدول Ahmad mohammad abdullah انا استعلم عن ahmad ونتيجه تكون كل الاسماء اللي تبدأ بahmad

وجزيت عني كل خير ان شاء الله

تم تعديل هذه المشاركة بواسطة who me في 3 أغسطس 2010 في 00:54

#5

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

1. قواعد البيانات

2. البرمجة

ثم يمكنك بعد ذلك البدء بأسلوب (التجربة والخطأ) و(السؤال عند كل خطوة)، لكن بدون أساس، يصبح كل ذلك ضئيل أو عديم الجدوى.

الأمر يبدأ من الكائن DoCmd

هذا الكائن له طريقة تسمى OpenForm

هذه الطريقة تفتح نموذجاً يتم تحديد اسمه بعد استدعاء الطريقة، هكذا:

DoCmd.OpenForm "[اسم النموذج]"

اسم النموذج في هذه الحالة يسمى (معاملاً parameter) للطريقة OpenForm، وفي الحقيقة هناك أكثر من معامل لهذاه الطريقة. السطر التالي من ملف تعليمات الأكسس يوضح هذه المعاملات الممكنة:

expression.OpenForm(FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)

عند استدعاء الطريقة، نفصل بين كل معامل وآخر بفاصلة، وإذا لم نرغب في تحديد قيمة لمعامل، وأردنا أن نزود الطريقة بمعامل يأتي بعده في الترتيب، فإننا نضمن عدداً مناسباً من الفاصلات حتى نصل إلى موقع المعامل المطلوب، كما تلاحظين ذلك في المثال أعلاه:

DoCmd.OpenForm "Form3", , , strCriteria

في هذ المثال، أردنا أن نزود الطريقة معاملين: المعامل الأول (موقعه الأول بين المعاملات) هو اسم النموذج المطلوب. المعامل الثاني (موقعه الرابع بين المعاملات) يمثل الـ WhereCondition: عبارة الشرط التي سيتم تصفية بيانات النموذج المطلوب بناءً عليها.

لكي تفهمي عبارة الشرط ومفهوم التصفية، أحيلك إلى الحلقتين 31 و32 من هذا الموضوع (إن استطعت قراءة الكتاب كاملاً وهو موجود في موضوع مستقل، فبها ونعمت، وإلا فاقرئي حلقات التصفية).

عبارة الشرط في النهاية مجرد نص، ولهذا تم حفظها مؤقتاً في متغير من نوع نص strCriteria، واسمه من اختيار المبرمج لأنه اسم معبر ومستخدم في هذه الحالات، وإلا فيمكن تسميته كما تشائين.

المطلوب في الشرط هو ان يكون الحقل Name1 في الجدول يساوي الاسم المحدد في العنصر Me.Name1 على نموذج البحث، ( و ) الحقل City يساوي القيمة المحددة في العنصر Me.City على النموذج، وهكذا... لاحظي الرابط ( و ): يعني أن كلا الشرطين يجب أن يتحقق.

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

الحل هو في تقنية مفيدة تعلمتها قديماً عندما كنت أعمل مع PL/SQL: إذا لم يحدد المستخدم قيمة للمدينة (أو أي حقل آخر) فاجعل الشرط بدلاً من أن يبدو هكذا:

city = ""

يبدو هكذا:

city = city

ونتيجة هذا الشرط صحيحة دوماً.

من أجل ذلك، تم الاستعانة بالدالة IIf (أرجو أن تقرئي عنها أيضاً) لإنتاج السابق: إذا كانت هناك قيمة في حقل يتم استخدامها، وإلا يتم استخدام الشكل الذي يتحقق دائماً، وهو مقارنة الحقل مع نفسه.

أرجو أن تتأملي مزيداً في ذلك ، وأسأل الله أن يفتح علينا جميعاً... آمين.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…