توابع متعددی در پاورکوئری جهت استخراج اطلاعات لیستها وجود دارد مانند:
Record.FieldCount
بهمنظور شمارش تعداد فیلدها در یک رکورد از تابع Record.FieldCount بهصورت ذیل استفاده میشود و نتیجه آن همواره یک عدد بوده که تعداد فیلدهای رکورد ورودی را نمایش میدهد.
Record.FieldCount(record as record) as number |
لذا حاصل فرمول ذیل برابر با ۱ است.
= Record.FieldCount([A=5])
و همچنین نتیجه فرمول ذیل برابر با ۳ است.
= Record.FieldCount([A=5,b=2])
فرمول ذیل نیز نتیجهاش برابر با ۴ است.
= Record.FieldCount([A=5,B={1..3},C=[A=1,B=3],D={2}])
× Record.FieldNames
تابع Record.FieldNames بهمنظور استخراج عنوان فیلدها در رکوردها بهصورت ذیل مورداستفاده قرار میگیرند.
Record.FieldNames(record as record) as list |
این تابع یک رکورد را بهعنوان ورودی دریافت میکند و نام فیلدهای آن را بهصورت یک لیست نتیجه میدهد. لذا حاصل تابع ذیل برابر است با {“A”,”B”}
= Record.FieldNames([A=5,B=2])
و حاصل تابع ذیل برابر است با {“Name”, “Family”}
= Record.FieldNames([Name=”Omid”,Family=”Motamedi”])
× Record.FieldValues
تابع Record.FieldValues مشابه با تابع Record.FieldNames بوده با این تفاوت که با استفاده از این تابع میتوان لیست مقادیر فیلدها ثبتشده درون یک رکورد را بهصورت ذیل استخراج کرد.
Record.FieldValues(record as record) as list |
این تابع یک ورودی دریافت میکند و حاصل آن برابر است با لیست مقادیر. لذا حاصل فرمول ذیل برابر است با {۵,۲}
= Record.FieldValues([A=5,B=2])
و حاصل فرمول ذیل برابر است با {“Omid”,”Motamedi”}
= Record.FieldValues([Name=”Omid”,Family=”Motamedi”])
Record.Field
تابع Record.Field برای استخراج مقدار یک فیلد در یک رکورد بهصورت ذیل مورداستفاده قرار میگیرد.
Record.Field( record as record, field as text ) as any |
این تابع دو ورودی به شرح ذیل دریافت میکند.
- در ورودی اول رکورد مرجع ثبت میگردد.
- نام فیلدی که میخواهیم مقدار آن را از درون رکورد مرجع استخراجکنیم، در ورودی دوم این تابع با فرمت متن وارد میکنیم..
با توجه به توضیحات فوق، مقدار فرمول ذیل برابر با ۵ است.
= Record.Field([A=5,B=2],”A”)
و مقدار فرمول ذیل برابر با Omid است.
= Record.Field([Name=”Omid”,Family=”Motamedi”],”Name”)
اما با توجه به اینکه رکورد تعریف شده در فرمول ذیل، شامل فیلد C نیست، نتیجه این فرمول برابر با خطا است.
= Record.Field([A=5,B=2],”C”)
Record.FieldOrDefault
این تابع همانند تابع Record.Field است با این تفاوت که کاربر در این تابع میتواند در ورودی سوم یک مقدار را تعریف کد تا در صورت موجود نبودن عنوان فیلد مدنظر (ورودی دوم) در رکورد تعریف شده (ورودی اول) بهجای خطا، آن مقدار نمایش داده شود.
لذا در مثال ذیل ازآنجاییکه رکورد تعریف شده شامل فیلد C نیست، حاصل فرمول ذیل برابر با خطا است:
= Record.Field([A=5,B=2],”C”)
درحالیکه حاصل فرمول ذیل برابر با مقدار null است
= Record.FieldOrDefault([A=5,B=2],”C”)
و مقدار خروجی فرمول ذیل برابر با -۱ است.
= Record.FieldOrDefault([A=5,B=2],”C”,-1)
این تابع در پاورکوئری بهصورت ذیل تعریف میگردد.
Record.FieldOrDefault( record as nullable record, field as text, optional defaultValue as any ) as any |
Record.HasFields
اگر بخواهیم بررسی کنیم آیا یک رکورد شامل فیلدهای خاصی است، باید از تابع Record.HasFields به صوت ذیل استفاده کرد.
Record.HasFields( record as record, fields as any ) as logical |
این تابع دو ورودی به شرح ذیل دریافت میکند و خروجی آن همواره برابر با True (درصورتیکه رکورد تعریف شده شامل تمامی فیلدهای مدنظر باشد) یا False (درصورتیکه رکورد تعریف شده، حداقل شامل یکی از فیلدهای مدنظر نباشد) است.
- ورودی اول این تابع برابر با رکورد مرجع است.
- در ورودی دوم این تابع لیست نام فیلدهایی که میخواهیم وجودشان در رکورد مرجع را بررسی کنیم آورده میشود. اگر فقط یک لیست مدنظر است، کافی است آن را درون دابل کوتیشن قرارداد، اما اگر بیش از یک فیلد مدنظر است، باید نامها را درون لیست تعریف کرد.
در جدول ذیل حالتهای مختلف از نتیجه این تابع آورده شده است.
فرمول | نتیجه |
= Record.HasFields([A=5,B=2,C={1..4}],”C”) |
True |
= Record.HasFields([A=5,B=2,C={1..4}],”D”) |
False |
= Record.HasFields([A=5,B=2,C={1..4}],{“A”,”C”}) |
True |
= Record.HasFields([A=5,B=2,C={1..4}],{“A”,”D”}) |
False |