שתף באמצעות


אופרטורים ומזהים ב- Power Apps

חל על: יישומי בד ציור יישומים מונחי דגמים

חלק מהאופרטורים הללו תלויים בשפת המחבר. למידע נוסף על תמיכת שפה ביישומי בד ציור, ראה יישומים כלליים.

סימן סוג דוגמה Description
'...' מזהה 'שם תיק לקוח' מזהים שמכילים תווים מיוחדים, כולל רווחים, מוקפים בגרשיים בודדים
"..." מחרוזת טקסט "Hello, World"‎ מחרוזות טקסט מוקפות במירכאות כפולות
$"..." אינטרפולציה של מחרוזת $"שלום {FirstName}," נוסחאות שמוטבעות במחרוזת טקסט
. בורר מאפיינים Slider1.Value
Color.Red
Acceleration.X
חילוץ מאפיין מטבלה, פקד, אות או ספירה. לתאימות לאחור, אפשר להשתמש גם ב- !.
.
[תלוי שפה]
מפריד עשרוני 1.23 מפריד בין מספרים שלמים לשברים של מספר. התו תלוי בשפה.
( ) סוגריים Filter(T, A < 10)

(1 + 2) * 3
אוכפת את סדר העדיפויות, ומקבצת ביטויים בביטוי גדול יותר
+ אופרטורים אריתמטיים 1 + 2 הוספה
-   2 - 1 חיסור
*   2 * 3 הכפלה
/   2 / 3 חלוקה (עיין גם בפונקציה Mod)
^   2 ^ 3 העלאה בחזקה, שווה ערך לפונקציה Power
%   20% אחוז (שווה ערך ל- "* 1/100")
= אופרטורים של השוואה Price = 100 שווה ל
>   Price > 100 גדול מ-
>=   Price >= 100 גדול או שווה ל-
<   Price < 100 קטן מ-
<=   Price <= 100 קטן או שווה ל-
<>   Price <> 100 לא שווה ל-
& אופרטור של שרשור מחרוזות "hello" & " " & "world" הפיכת מחרוזות מרובות לרצופות
&& or And אופרטורים לוגיים Price < 100 && Slider1.Value = 20
או Price < 100 And Slider1.Value = 20
צירוף לוגי, שווה ערך לפונקציה And
|| or Or   Price < 100 || Slider1.Value = 20 or Price < 100 Or Slider1.Value = 20 ניתוק לוגי, שווה ערך לפונקציה Or
! או Not   !(Price < 100) or Not (Price < 100) שלילה לוגית, שווה ערך לפונקציה Not
exactin אופרטורים של חברות Gallery1.Selected exactin SavedItems השתייכות לאוסף או טבלה
exactin   "Windows" exactin “To display windows in the Windows operating system...” בדיקת מחרוזת משנה (תלוי רישיות)
ב-   Gallery1.Selected in SavedItems השתייכות לאוסף או טבלה
ב-   "The" in "The keyboard and the monitor..." בדיקת מחרוזת משנה (אינו תלוי רישיות)
@ אופרטור הבהרה MyTable[@fieldname] הבהרת שדה
@   [@MyVariable] הבהרה כללית
,
[תלוי שפה]
מפריד רשימה If( X < 10, "Low", "Good" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
מפריד:
  • ארגומנטים בקריאות פונקציה
  • שדות ברשומה
  • רשומות בטבלה
תו זה תלוי בשפה.
;
[תלוי שפה]
שרשור נוסחאות Collect(T, A); Navigate(S1, "") הפרדת בקשות של פונקציות במאפייני אופן פעולה. אופרטור השרשור תלוי בשפה.
בתור כאופרטור AllCustomers As Customer עוקפת את ThisItem ואת ThisRecord בגלריות ומתעדת פונקציות של טווח. הפונקציה As שימושית למתן שם טוב יותר וספציפי, והיא חשובה במיוחד בתרחישים מקוננים.
עצמי האופרטור Self Self.Fill גישה למאפיינים של הפקד הנוכחי
אב אופרטור אב Parent.Fill גישה למאפיינים של גורם מכיל של פקד
ThisItem אופרטור ThisItem ThisItem.FirstName גישה לשדות של הפקדים Gallery או Form
ThisRecord האופרטור ThisRecord ThisRecord.FirstName גישה לרשומה המלאה ולשדות הפרטניים של הרשומה בתוך ForAll‎, Sum‎, With‎ ופונקציות טווח של רשומות אחרות. ניתנת לדריסה עם האופרטור As.

הערה

ניתן להשתמש באופרטור @ גם כדי לאמת את סוג אובייקט הרשומה כנגד מקור נתונים. לדוגמה, Collect(coll,Account@{'Account Number: 1111')

האופרטורים in ו- exactin

השתמש באופרטורים in וגם exactin כדי למצוא מחרוזת בתוך מקור נתונים, כמו אוסף או טבלה שיובאו. האופרטור in מזהה התאמות ללא קשר לאירוע, והאופרטור exactin מזהה התאמות רק אם הן נכתבות באותיות גדולות באותו אופן. הנה דוגמה:

  1. צור או יבא אוסף בשם מלאי והצג אותו בגלריה, כפי שההליך הראשון בנושא הצגת תמונות וטקסט בגלריה מתאר.

  2. הגדר את המאפיין Items‎ של הגלריה לנוסחה זו:
    Filter(Inventory, "E" in ProductName)

    הגלריה מציגה את כל המוצרים פרט ל- Callisto, משום ששם המוצר הזה הוא השם היחיד שאינו מכיל את האות שציינת.

  3. שנה את המאפיין Items‎ של הגלריה לנוסחה זו:
    Filter(Inventory, "E" exactin ProductName)

    הגלריה מציגה רק את Europa משום ששמה מכיל את האות שציינת באירוע שציינת.

האופרטורים ThisItem, ThisRecord ו-As

כמה פקדים ופונקציות מיישמים נוסחאות על רשומות בודדות בטבלה. כדי להתייחס לרשומה ספציפית בנוסחה, השתמש באחת מהפעולות הבאות:

אופרטור חל על תיאור
ThisItem פקד גלריה
פקד עריכת צורה
פקד הצגת צורה
שם ברירת המחדל עבור הרשומה הנוכחית בפקד גלריה או טופס.
ThisRecord ForAll, Filter, With, Sum ופונקציות record scope אחרות שם ברירת המחדל עבור הרשומה הנוכחית ב- ForAll ופונקציות טווח אחרות של רשומות.
Asשם פקד גלריה
ForAll, Filter, With, Sum ופונקציות record scope אחרות
מגדיר שם עבור הרשומה הנוכחית, מחליף ברירת מחדל של ThisItem או ThisRecord. השתמש ב- As כדי שהנוסחאות יהיו קלות יותר להבנה ולפתרון העמימות בעת הקינון.

אופרטור ThisItem

לדוגמה, בפקד Gallery‎ להלן, המאפיין Items‎ מוגדר למקור הנתונים עובדים (כמו הטבלה עובדים שכלולה בדוגמה של Northwind Traders):

Employees

עובדים המוצגים בגלריה.

הפריט הראשון בגלריה הוא תבנית המשוכפלת עבור כל עובד. בתבנית, הנוסחה לתמונה משתמשת ב- ThisItem כדי להתייחס לפריט הנוכחי:

ThisItem.Picture

נוסחה לתמונה של עובד.

באופן דומה, גם הנוסחה לשם משתמשת ב- ThisItem:

ThisItem.'First Name' & " " & ThisItem.'Last Name'

נוסחה של שם ושם משפחה של עובד.

האופרטור ThisRecord

ThisRecord משמש בפונקציות עם טווח רשומות. לדוגמה, אנו יכולים להשתמש בפונקציה Filter‎ עם המאפיין Items‎ של הגלריה שלנו כדי להציג רק שמות פרטיים שמתחילים באות M:

Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )

סינון העובדים על סמך שם, באמצעות ThisRecord.

ThisRecord היא אופציונלית ומרומזת על ידי שימוש בשדות ישירות, לדוגמה, במקרה זה היינו יכולים לכתוב:

Filter( Employees, StartsWith( 'First Name', "M" ) )

אם כי לא חובה, באמצעות ThisRecord אפשר להקל על ההבנה של נוסחאות. ייתכן שהיא תידרש במצבים דו-משמעיים שבהם שם שדה עשוי להיות גם שם של קשרי גומלין. ThisRecord היא אופציונלית ואילו ThisItem תמיד נדרשת.

השתמש ב- ThisRecord כדי להתייחס לכל הרשומה עם Patch‎, Collect ופונקציות טווח רשומות אחרות. לדוגמה, הנוסחה הבאה מגדירה את הסטטוס של כל העובדים הלא פעילים לפעילים:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees,
              Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )

כאופרטור

השתמש באופרטור As כדי לתת שם לרשומה בגלריה או בפונקציית טווח רשומה, תוך ביטול ברירת המחדל של ThisItem או ThisRecord. מתן שם לרשומה יכול להקל על הבנת הנוסחאות שלך ועשוי להידרש במצבים מקוננים כדי לגשת לרשומות בטווחים אחרים.

לדוגמה, באפשרותך לשנות את המאפיין Items‎ של הגלריה שלנו שישתמש באופרטור As כדי לזהות שאנחנו עובדים עם עובד:

Employees As Employee

גלריית עובדים, באמצעות האופרטור As.

הנוסחאות לתמונה ושם מותאמות לשימוש בשם זה עבור הרשומה הנוכחית:

Employee.Picture

תמונה של עובד המשתמש בשם עובד שנקבע עם אופרטור As.

Employee.'First Name' & " " & Employee.'Last Name'

שם פרטי ושם משפחה של עובד המשתמש בשם עובד שנקבע עם אופרטור As.

ניתן להשתמש באופרטור As גם בפונקציות טווח רשומה כדי להחליף את שם ברירת המחדל ThisRecord. אנו יכולים ליישם זאת על הדוגמה הקודמת שלנו כדי להבהיר את הרשומה שאיתה אנו עובדים:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees As Employee,
              Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )

כאשר מקננים גלריות ופונקציות של טווח רשומות, ThisItem‎ ו- ThisRecord תמיד מתייחסים לטווח הפנימי ביותר ומשאירים רשומות בטווחים חיצוניים לא זמינים. השתמש באופרטור As כדי להפוך את כל טווחי הרשומות לזמינים על ידי מתן שם ייחודי לכל אחד.

לדוגמה, נוסחה זו מייצרת תבנית לוח שחמט כמחרוזת טקסט על ידי קינון שתי פונקציות ForAll:

Concat(
    ForAll( Sequence(8) As Rank,
        Concat(
            ForAll( Sequence(8) As File,
                    If( Mod(Rank.Value + File.Value, 2) = 1, " X ", " . " )
            ),
            Value
        ) & Char(10)
    ),
    Value
)

הגדרת מאפיין Text‎ של פקד Label‎ לנוסחה זו תציג:

טקסט לוח השחמט מוצג בפקד תווית.

בוא נפרק את מה שקורה כאן:

  • נתחיל באיטרציה של טבלה ללא שם של 8 רשומות ממוספרות מהפונקציה Sequence. לולאה זו מיועדת לכל שורה בלוח, המכונה בדרך כלל דרגה וכך אנו נותנים לה את השם הזה.
  • עבור כל שורה, אנו חוזרים על טבלה אחרת ללא שם הכוללת 8 עמודות, ונותנים את השם הנפוץ קובץ.
  • אם Rank.Value + File.Value הוא מספר לא זוגי, הריבוע מקבל את X, ואם לא אז נקודה. החלק הזה של הנוסחה מתייחס אל שתי הלולאות של ForAll, מה שאפשרי על ידי השימוש באופרטור As.
  • Concat משמש פעמיים, תחילה להרכבת העמודות ואז השורות, עם Char(10) כדי ליצור שורה חדשה.

דוגמה דומה אפשרית עם פקדים של Gallery‎ מקוננת במקום הפונקציות ForAll. נתחיל עם הגלריה האנכית של דרגה. לפקד גלריה זה תהיה נוסחה פריטים של:

Sequence(8) as Rank

איור של הגלריה החיצונית המספקת את האיטרציה של הדירוג.

בתוך הגלריה נניח גלריה אופקית עבור קוֹבץ, שתשוכפל עבור כל דרגה, עם מאפיין Items‎ של:

Sequence(8) as File

איור של הגלריה הפנימית המספקת את האיטרציה של הקובץ.

ולבסוף, בתוך הגלריה הזו נוסיף פקד Label‎ שישוכפל עבור כל קובץ וכל דרגה. אנו נגדיל אותו כדי למלא את כל החלל ונשתמש במאפיין Fill‎ כדי לספק לצבע את הנוסחה הזו:

If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )

פקד תווית בשתי הגלריות המספק את הצבעים לסירוגין ללוח השחמט.

האופרטורים Self ו- Parent

קיימות שלוש דרכים להפניה לפקד ולמאפיינים שלו בנוסחה:

שיטה תיאור
לפי שם פקד ניתן להפנות לכל פקד לפי שם מכל מקום ביישום.

לדוגמה, Label1.Fill מתייחס למאפיין המילוי של הפקד ששמו הוא Label1.
האופרטור Self לעתים קרובות זה נוח להפנות למאפיין אחר של אותו פקד בעת כתיבת נוסחה. במקום להשתמש בהפניה מוחלטת לפי שם, אפשרות קלה וניידת יותר היא להשתמש בהפניה יחסית לעצמו. האופרטור Self מספק גישה קלה זו לפקד הנוכחי.

לדוגמה, Self.Fill מתייחס לצבע המילוי של הפקד הנוכחי.
האופרטור Parent פקדים מסוימים מארחים פקדים אחרים, כגון הפקדים Screen ו- Gallery. פקד האירוח של הפקדים הכלולים בתוכו נקרא אב. בדומה לאופרטור Self, האופרטור Parent מספק הפניה יחסית קלה לפקד הגורם המכיל.

לדוגמה, Parent.Fill מתייחס לפקד המילוי של הפקד שהוא הגורם המכיל עבור הפקד הנוכחי.

Self ו- Parent הם אופרטורים ולא מאפיינים בפקדים עצמם. אין תמיכה בהפניה ל- Parent.Parent, Self.Parent או Parent.Self.

שמות מזהים

שמות המשתנים, מקורות הנתונים, העמודות ואובייקטים אחרים יכולים להכיל כל Unicode.

השתמש בגרשיים בודדים מסביב לשם המכיל רווח או תו מיוחד אחר.
השתמש בשני גרשיים בודדים יחד כדי לייצג מרכאה יחידה בשם. שמות שאינם מכילים תווים מיוחדים לא דורשים גרשיים בודדים.

הנה כמה שמות עמודות לדוגמה שבהם אתה עשוי להיתקל בטבלה, והאופן שבו הם מיוצגים בנוסחה:

שם עמודה במסד נתונים הפניה לעמודה בנוסחה
SimpleName SimpleName
NameWith123Numbers NameWith123Numbers
שם עם רווחים 'Name with spaces'
שם עם מרכאות "כפולות" 'Name with "double" quotes'
שם עם גרשיים 'בודדים' 'Name with ''single'' quotes'
שם עם סימן @ 'Name with an @ at sign'

מרכאות כפולות משמשות כדי להקצות מחרוזות טקסט.

שמות תצוגה ושמות לוגיים

מקורות נתונים מסוימים כגון SharePoint ו- Microsoft Dataverse הם בעלי שני שמות שונים כדי להפנות לאותן טבלה או עמודת נתונים:

  • שם לוגי - שם שמובטח שהוא ייחודי, אינו משתנה לאחר יצירתו, בדרך כלל לא מאפשר רווחים או תווים מיוחדים אחרים ואינו עובר התאמה לשפות אחרות. כתוצאה מכך השם יכול להיות מוצפן. שמות אלה משמשים מפתחים מקצועיים. לדוגמה, cra3a_customfield. שם זה מכונה גם שם סכימה או פשוט שם.

  • שם תצוגה - שם ידידותי למשתמש שנועד להצגה על-ידי משתמשי קצה. ייתכן ששם זה אינו ייחודי, הוא עשוי להשתנות במשך הזמן, הוא עשוי להכיל רווחים וכל תו Unicode, וייתכן שיותאם לשפות אחרות. בהתאמה לדוגמה שלמעלה, שם תצוגה עשוי להיות שדה מותאם עם רווח בין המילים.

מכיוון שקל יותר להבין שמות תצוגה, יישומי בד ציור יציעו אותם כאפשרויות ולא יציעו שמות לוגיים. על אף ששמות לוגיים לא מוצעים, עדיין ניתן להשתמש בהם אם הם הוקלדו באופן עקיף.

לדוגמה, נניח שהוספת שדה מותאם אישית לטבלה ב- Dataverse. המערכת תקצה עבורך שם לוגי שתוכל לשנות רק בעת יצירת השדה. התוצאה תיראה דומה לתוצאה הבאה:

הטבלה 'תיקי לקוחות' עם שדה מותאם אישית שהתווסף, מציגה את שם התצוגה של 'שדה מותאם אישית' ושם לוגי של

בעת חיבור הפניה לשדה של 'תיקי לקוחות', ההצעה תיווצר כך שתשתמש ב'שדה מותאם אישית' משום שזהו שם התצוגה. יש להשתמש בגרשיים בודדים מכיוון שהשם הזה כולל רווח:

שורת הנוסחאות של Studio מציגה הצעות עבור שמות שדות של 'תיקי לקוחות' עם שם התצוגה 'שדה מותאם אישית' מודגש.

לאחר בחירת ההצעה, 'שדה מותאם אישית' מוצג בשורת הנוסחאות והנתונים מאוחזרים:

שורת הנוסחאות של Studio המציגה את השימוש בשם התצוגה 'שדה מותאם אישית' עבור השדה.

על אף שהוא לא מוצע, נוכל להשתמש גם בשם הלוגי עבור שדה זה. התוצאה תהיה אחזור של אותם נתונים. אין צורך בגרשיים בודדים מכיוון שהשם הזה לא מכיל רווחים או תווים מיוחדים:

שורת הנוסחאות של Studio המציגה את השימוש בשם הלוגי cr5e3_customfield עבור השדה.

מאחורי הקלעים, נשמר מיפוי בין שמות התצוגה הנראים בנוסחאות לשמות הלוגיים הבסיסיים. מכיוון שיש להשתמש בשמות לוגיים כדי ליצור אינטראקציה עם מקור הנתונים, מיפוי זה משמש להמרה משם התצוגה הנוכחי לשם הלוגי באופן אוטומטי וזה מה שנראה בתעבורת הרשת. מיפוי זה משמש גם להמרה חזרה לשמות לוגיים כדי לעבור לשמות תצוגה חדשים, לדוגמה, אם שם תצוגה משתנה או אם יצרן בשפה אחרת עורך את האפליקציה.

הערה

שמות לוגיים לא מתורגמים בעת העברת יישום בין סביבות. עבור שמות של שדות וטבלאות במערכת Dataverse, זו אינה אמורה להוות בעיה מכיוון ששמות לוגיים עקביים בכל הסביבות. אבל לכל השדות המותאמים אישית, כגון cra3a_customfield בדוגמה זו לעיל, עשויה להיות קידומת סביבה שונה (cra3a במקרה זה). עדיף להשתמש בשמות תצוגה משום שניתן להתאים אותם לשמות תצוגה בסביבה החדשה.

הבהרת שם

מכיוון ששמות תצוגה אינם ייחודיים, אותו שם תצוגה יכול להופיע יותר מפעם אחת באותה טבלה. כאשר זה קורה, השם הלוגי יתווסף לסוף שם התצוגה בסוגריים עבור אחד או יותר מהשמות המתנגשים. בהתבסס על הדוגמה לעיל, אם היה שדה שני עם אותו שם תצודה של שדה מותאם אישית עם שם לוגי של cra3a_customfieldalt, ההצעות היו מראות:

סרגל הנוסחאות של Studio המציג את השימוש בשם הלוגי cr5e3_customfieldalt כדי להבהיר את שני הגירסאות של

מחרוזות להבהרת שמות מתווספות במצבים אחרים שבהם מתרחשות התנגשויות בשמות, כגון שמות של טבלאות, אפשרויות בחירה ופריטים אחרים של Dataverse.

אופרטור הבהרה

פונקציות מסוימות יוצרות טווחי רשומות לקבלת גישה לשדות הטבלה במהלך עיבוד כל רשומה, כגון Filter‎, AddColumns‎, וSum‎. שמות שדות שנוספו עם טווח הרשומה עוקפים את אותם שמות ממקום אחר ביישום. כשזה מתרחש, אתה עדיין יכול לגשת לערכים מחוץ לטווח הרשומה בעזרת אופרטור ההבהרה @.

  • כדי לגשת לערכים מטווחי רשומות מקוננות, השתמש באופרטור @ עם שם הטבלה המופעלת בעת השימוש בתבנית זו:
    Table[@FieldName]
  • כדי לקבל גישה לערכים כלליים, כגון מקורות נתונים, אוספים ומשתני הקשר, השתמש בתבנית [@ObjectName] (ללא הקצאת טבלה).

לקבלת מידע נוסף ודוגמאות, ראה טווחי רשומות.