שתף באמצעות


אופרטורים ומזהים

הערה

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

האופרטורים ב- Microsoft Power Fx מתוארים להלן. חלק מהאופרטורים הללו תלויים בשפת המחבר. ראה יישומים כלליים לקבלת מידע נוסף.

סימן סוג תחביר תיאור
. בורר מאפיינים Slider1.Value
Color.Red
מחלץ מאפיין מפקד טבלה, או ספירה. לתאימות לאחור, אפשר להשתמש ב- !.
.
תלוי בשפה
מפריד עשרוני 1.23 מפריד בין מספרים שלמים לשברים של מספר. התו תלוי בשפה.
( ) סוגריים מסנן (T, A < 10)

(1 + 2) * 3
אכיפת סדר קדימות וקיבוץ ביטויי משנה בביטוי גדול יותר
+ אופרטורים אריתמטיים 1 + 2 הוספה
-   2 - 1 חיסור
*   2*3 הכפלה
/   2/3 חלוקה (עיין גם בפונקציה Mod)
^   2 ^ 3 העלאה בחזקה, שווה ערך לפונקציה Power
%   20% אחוז (שווה ערך ל- "* 1/100")
= אופרטורים של השוואה מחיר = 100 שווה ל
>   מחיר > 100 גדול מ-
>=   מחיר >= 100 גדול או שווה ל-
<   מחיר < 100 קטן מ-
<=   מחיר <= 100 קטן או שווה ל-
<>   מחיר <> 100 לא שווה ל-
& אופרטור של שרשור מחרוזות "שלום" & " " & "עוֹלָם" הפיכת מחרוזות מרובות לרצופות
&& או ו אופרטורים לוגיים מחיר < 100 && Slider1.Value = 20
או Price < 100 And Slider1.Value = 20
צירוף לוגי, שווה ערך לפונקציה And
|| או או   מחיר < 100 || Slider1.Value = 20 או מחיר < 100 או Slider1.Value = 20 ניתוק לוגי, שווה ערך לפונקציה Or
! או Not   !(מחיר < 100) או לא (מחיר < 100) שלילה לוגית, שווה ערך לפונקציה Not
מדוייק מפעילי חברות גלריה1.נבחרו בדיוקבפריטים שמורים השתייכות לאוסף או טבלה
מדוייק   "Windows" בדיוק ב"כדי להציג חלונות במערכת ההפעלה Windows..." בדיקת מחרוזת משנה (תלוי רישיות)
ב   גלריה1.נבחרה בפריטים שמורים השתייכות לאוסף או טבלה
ב   "ה" ב"המקלדת והצג..." בדיקת מחרוזת משנה (אינו תלוי רישיות)
@ מפעיל ביעור MyTable[@fieldname] הבהרת שדה
@   [@MyVariable] הבהרה כללית
,
[תלוי שפה]
מפריד רשימה If(X < 10, "נמוך", "טוב")
{ X: 12, Y: 32 }
[1, 2, 3]
מפריד:
  • ארגומנטים בקריאות פונקציה
  • שדות ברשומה
  • רשומות בטבלה
תו זה תלוי בשפה.
;
[תלוי שפה]
שרשור נוסחאות אסוף (ת, א); ניווט (S1, "") הפרדת בקשות של פונקציות במאפייני אופן פעולה. אופרטור השרשור תלוי בשפה.
כְּמוֹ בתור מפעיל כל הלקוחות כלקוח עוקפת את ThisItem ואת ThisRecord בגלריות ומתעדת פונקציות של טווח. כְּמוֹ שימושי למתן שם טוב יותר וספציפי וחשוב במיוחד בתרחישים מקוננים.
עַצמִי מפעיל עצמי מילוי עצמי גישה למאפיינים של הפקד הנוכחי
אב מפעיל אב הורה. מילוי גישה למאפיינים של גורם מכיל של פקד
פריט זה מפעיל פריט זה ThisItem.FirstName גישה לשדות של פקד גלריה או טופס
התקליט הזה מפעיל פריט זה ThisRecord.FirstName גישה לרשומה המלאה ולשדות הפרטניים של הרשומה בתוך ForAll‎, סכוּם, עם ופונקציות טווח של רשומות אחרות. ניתנת לדריסה עם האופרטור As.

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

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

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

  2. הגדר את המאפיין Items‎ של הגלריה לנוסחה זו:
    מסנן (מלאי, "E" בשם המוצר)

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

  3. שנה את המאפיין Items‎ של הגלריה לנוסחה זו:
    מסנן (מלאי, "E" במדויק בשם המוצר)

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

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

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

אופרטור חל על תיאור
פריט זה גָלֶרֵיָה לִשְׁלוֹט
ערוך טופס לִשְׁלוֹט
טופס תצוגה לִשְׁלוֹט
שם ברירת המחדל עבור הרשומה הנוכחית בפקד גלריה או טופס.
התקליט הזה לכל, לְסַנֵן, עִם, סְכוּם ועוד היקף שיא פונקציות שם ברירת המחדל עבור הרשומה הנוכחית ב- ForAll ופונקציות טווח אחרות של רשומות.
כְּמוֹ שֵׁם גָלֶרֵיָה לִשְׁלוֹט
ForAll, מסנן, עם, סכום ופונקציות אחרות של היקף רשומות
מגדיר שם עבור הרשומה הנוכחית, מחליף ברירת מחדל של ThisItem או ThisRecord. השתמש ב- As כדי שהנוסחאות יהיו קלות יותר להבנה ולפתרון העמימות בעת הקינון.

אופרטור ThisItem

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

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.Fill מתייחס לצבע המילוי של הפקד הנוכחי.
אב מפעיל פקדים מסוימים מארחים פקדים אחרים, כגון הפקדים Screen ו- Gallery. פקד האירוח של הפקדים בתוכו נקרא parent. בדומה לאופרטור Self, האופרטור Parent מספק הפניה יחסית קלה לפקד הגורם המכיל.

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

Self ו אב הם אופרטורים ולא מאפיינים בפקדים עצמם. אין תמיכה בהפניה ל- 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, וייתכן שיותאם לשפות אחרות. בהתאמה לדוגמה שלמעלה, שם תצוגה עשוי להיות שדה מותאם עם רווח בין המילים.

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

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

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

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

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

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

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

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

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

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

הערה

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

הבהרת שם

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

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

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

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

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

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

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