الدالتان If وSwitch

ينطبق على: تطبيقات قماش Dataverse أعمدة الصيغة تدفقات سطح المكتب التطبيقات المستندة إلى النماذج Power Platform CLI

تحديد ما إذا كان أي شرط في مجموعة صحيحًا ( If) أو أن نتيجة الصيغة تطابق أي قيمة في مجموعة ( Switch) ثم إرجاع نتيجة أو تنفيذ إجراء.

‏‏الوصف

تقوم وظيفة If باختبار شرط واحد أو أكثر حتى يتم العثور على نتيجة صواب. إذا تم العثور على مثل هذه النتيجة، يتم إرجاع قيمة مقابلة. إذا لم يتم العثور على مثل هذه النتيجة، يتم إرجاع قيمة افتراضية. وفي كلتا الحالتين، قد تكون القيمة التي تم إرجاعها عبارة عن سلسلة ليتم عرضها أو صيغة لتقييمها أو نموذج آخر للنتيجة.

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

وظيفتا If وSwitch متشابهتان جدًا، ولكن ينبغي عليك استخدام الوظيفة الأفضل للموقف:

  • استخدم وظيفة If لتقييم شرط فردي. بناء الجملة الأكثر شيوعًا لهذه الدالة هو If (Condition، ThenResult، DefaultResult)، والذي يوفر النمط الشائع "if … ومن ثمَّ... آخر…" النمط الذي يظهر في أدوات البرمجة الأخرى.
  • استخدم وظيفة If لتقييم الشروط المتعددة غير ذات الصلة. في Power Apps (بخلاف Microsoft Excel)، يمكنك تحديد شروط متعددة دون الحاجة إلى تداخل صيغ If.
  • استخدم وظيفة التبديل لتقييم شرط واحد مقابل عدة مطابقات محتملة. يمكنك أيضًا استخدام وظيفة If في هذه الحالة، ولكن ينبغي عليك تكرار الصيغة لكل مطابقة محتملة.

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

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

بناء الجملة

If( Condition، ThenResultDefaultResult ] )
If( Condition1، ThenResult1Condition2، ThenResult2، ... [ ، DefaultResult ] ] )

  • شرط (شروط) – مطلوب. الصيغة (الصيغة) المطلوب اختبارها لـ صواب. تحتوي هذه الصيغ عمومًا على مشغلات مقارنة (مثل <، >، و=) وظائف الاختبار مثل IsBlank وIsEmpty.
  • ThenResult(s) - مطلوبة. القيمة المطابقة لإرجاع شرط يتم تقييمه إلى صواب.
  • DefaultResult – اختياري. القيمة المراد إرجاعها في حالة عدم تقييم أي شرط إلى صواب. إذا لم تقم بتحديد هذه الوسيطة، فإنه يتم إرجاع القيمة فارغ.

Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • الصيغة‏‎ - مطلوبة. الصيغة المراد تقييمها للحصول على المطابقات. يتم تقييم هذه الصيغة مرة واحدة فقط.
  • Match(s) - مطلوبة. القيم المراد مقارنتها بالنتيجة من الصيغة. وفي حالة العثور على مطابقة تامة، يتم إرجاع النتيجة المقابلة.
  • النتيجة (النتائج) - مطلوبة. النتيجة المقابلة المراد إرجاعها عند العثور على مطابقة تامة.
  • DefaultResult – اختياري. وفي حالة عدم العثور على مطابقة تامة، يتم إرجاع هذه القيمة. إذا لم تقم بتحديد هذه الوسيطة، فإنه يتم إرجاع القيمة فارغ.

الأمثلة

القيم في الصيغ

في الأمثله التالية، يشتمل عنصر تحكم Slider (المسمى Slider1) على قيمة 25.

الصيغة الوصف نتيجة
If( Slider1.Value = 25, "Result1" ) الشرط هو صواب، ويتم إرجاع النتيجة المقابلة. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) الشرط هو صواب، ويتم إرجاع النتيجة المقابلة. "Result1"
If( Slider1.Value>1000, "Result1" ) الشرط هو خطأ، ولم يتم توفير أي DefaultResult. blank
If( Slider1.Value>1000, "Result1", "Result2" ) الشرط هو خطأ، وتم توفير DefaultResult وتم إرجاعها. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) الشرط الأول هو صواب، ويتم إرجاع النتيجة المقابلة. والشرط الثاني هو صواب أيضًا، ولكن لم يتم تقييمه لأنه يظهر لاحقًا في قائمة الوسائط بدلاً من الشرط الذي يتم تقييمه إلى صواب. "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) الشرط الأول هو خطأ نظرًا لأن شريط التمرير غير فارغ. الشرط الثاني هو صواب لأن قيمة شري التمرير هي رقم، ويتم إرجاع النتيجة المقابلة. "Result2"
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") كلُّ من الشرطين الأول والثاني هما خطأ، وتم توفير DefaultResult وتم إرجاعها. "Result3"
Switch( Slider1.Value, 25, "Result1" ) تطابق قيمة شريط التمرير القيمة الأولى المراد التحقق منها، ويتم إرجاع النتيجة المقابلة. "Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) تطابق قيمة شريط التمرير القيمة الثانية المراد التحقق منها، ويتم إرجاع النتيجة المقابلة. "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) لا تتطابق قيمه شريط التمرير مع أي قيمة مراد التحقق منها. تم توفير DefaultResult، لذا تم إرجاعها. "DefaultResult"

التفريع في صيغ السلوك

في هذه الأمثلة، يشتمل عنصر تحكم Text input المسمى FirstName على القيمة "جون" المكتوب فيه.

صيغة ‏‏الوصف نتيجة
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) الشرط هو صواب، لذا يتم تشغيل وظيفة Navigate. يمكنك استخدام وظيفة IsBlank لاختبار ما إذا كان قد تم ملء حقل نموذج مطلوب. إذا كان FirstName هو blank، لن يكون لهذه الصيغة أي تأثير. true

تم تغيير العرض إلى Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) من دون عامل التشغيل !، الشرط هو خطأ، لذا فإن الوظيفة Navigate لا تعمل. تم توفير وظيفة Back كـ DefaultResult، لذا يتم تشغيلها. true

ينتقل العرض مرة أخرى إلى الشاشة التي تم عرضها من قبل.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) تتم مقارنة القيمة FirstName.Text بـ "كارلوس" و"كيرستين" و"جون" بهذا الترتيب. يتم العثور على مطابقة مع "جون"، لذا ينتقل التطبيق إلى Screen3. true

تم تغيير العرض إلى Screen3.

خطوة بخطوة

  1. أضف عنصر تحكم Text input، وقم بتسميته Text1، إذا لم يكن يحتوي على الاسم بشكل افتراضي.

  2. في Text1، اكتب 30.

  3. أضف عنصر تحكم ‎Label، وقم بتعيين خاصية Text الخاصة به إلى هذه الصيغة:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    يعرض عنصر‏‎ تحكم التسمية النص اطلب المزيد! لأن قيمة Text1 تزيد عن 20 ولكنها أقل من 40.

  4. في Text1، اكتب 15.

    يعرض عنصر‏‎ تحكم التسمية النص اطلب المزيد والمزيد! لأن قيمة Text1 تقل عن 20.

  5. في Text1، اكتب 50.

    يعرض عنصر تحكم Label القيمة التي قمت بكتابتها لأنها أكثر من 40.