หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ใช้กับ: แอป Canvas
รับข้อมูลเกี่ยวกับแอปที่กําลังใช้งานอยู่ในปัจจุบัน และควบคุมลักษณะการทํางานของแอป
คำอธิบาย
เช่นเดียวกับตัวควบคุม วัตถุ แอป มีคุณสมบัติที่ระบุว่าหน้าจอใดที่แสดงและพร้อมท์ให้คุณบันทึกการเปลี่ยนแปลงเพื่อให้ไม่สูญหาย แอปทุกตัวมีออบเจ็กต์ แอป
เขียนสูตรสําหรับคุณสมบัติบางอย่างของวัตถุแอป ที่ด้านบนของบานหน้าต่าง มุมมองทรี ให้เลือกออบเจ็กต์ แอป ที่คุณจะเลือกตัวควบคุมหรือหน้าจออื่นๆ เมื่อต้องการดูหรือแก้ไขคุณสมบัติของวัตถุ ให้เลือกในรายการดรอปดาวน์ทางด้านซ้ายของแถบสูตร
คุณสมบัติ ActiveScreen
คุณสมบัติ ActiveScreen จะระบุหน้าจอที่แสดงอยู่ในปัจจุบัน
คุณสมบัตินี้ส่งคืนออบเจ็กต์หน้าจอ ใช้เพื่ออ้างอิงคุณสมบัติของหน้าจอปัจจุบัน เช่น ชื่อที่มีสูตร App.ActiveScreen.Name คุณยังสามารถเปรียบเทียบคุณสมบัตินี้กับออบเจ็กต์หน้าจออื่นได้ เช่น กับสูตรเปรียบเทียบ App.ActiveScreen = Screen2 เพื่อตรวจสอบว่า Screen2 เป็นหน้าจอปัจจุบันหรือไม่
ใช้ฟังก์ชัน Back หรือ Navigate เพื่อสลับหน้าจอที่แสดงอยู่
คุณสมบัติ BackEnabled
คุณสมบัติ BackEnabled จะเปลี่ยนวิธีที่แอปตอบสนองต่อรูปแบบท่าทางย้อนกลับของอุปกรณ์ (ปัดหรือใช้ปุ่มย้อนกลับของฮาร์ดแวร์บนอุปกรณ์ Android หรือปัดจากด้านซ้ายบนอุปกรณ์ iOS) เมื่อทํางานใน Power Apps สําหรับอุปกรณ์เคลื่อนที่ เมื่อเปิดใช้งาน รูปแบบการสัมผัสของอุปกรณ์ย้อนกลับไปยังหน้าจอที่แสดงล่าสุด ซึ่งคล้ายกับสูตรกลับ เมื่อปิดใช้งาน รูปแบบท่าทางย้อนกลับของอุปกรณ์จะนําผู้ใช้ไปยังรายการแอป
คุณสมบัติ ConfirmExit
ไม่มีใครต้องการสูญเสียการเปลี่ยนแปลงที่ไม่ได้บันทึก ใช้คุณสมบัติ ConfirmExit และ ConfirmExitMessage เพื่อเตือนผู้ใช้ก่อนที่จะปิดแอปของคุณ
หมายเหตุ
- ConfirmExit ไม่ทํางานในแอปแบบฝังตัว ตัวอย่างเช่น Power BI และ SharePoint
- ConfirmExit ไม่ได้รับการสนับสนุนในหน้าแบบกําหนดเอง
- ตอนนี้ คุณสมบัติเหล่านี้สามารถอ้างอิงตัวควบคุมเฉพาะบนหน้าจอแรกเท่านั้นถ้าเปิดใช้งานคุณลักษณะการแสดงตัวอย่าง การโหลดล่าช้า (ซึ่งเป็นค่าเริ่มต้นสําหรับแอปใหม่) ถ้าคุณอ้างอิงหน้าจออื่น ๆ Power Apps Studio ไม่แสดงข้อผิดพลาด แต่แอปที่เผยแพร่ไม่เปิดใน Power Apps Mobile หรือเบราว์เซอร์ เรากําลังพยายามปล้นขีดจํากัดนี้ ในระหว่างนี้ ปิด การโหลดล่าช้า ใน การตั้งค่า>คุณลักษณะที่กําลังจะเกิดขึ้น (ภายใต้ ตัวอย่าง)
ConfirmExit
ConfirmExit เป็นคุณสมบัติแบบบูลีนที่เมื่อ เป็นจริง ให้เปิดกล่องโต้ตอบการยืนยันก่อนที่แอปจะปิด โดยค่าเริ่มต้น คุณสมบัตินี้คือ เท็จ และไม่มีกล่องโต้ตอบปรากฏขึ้น
เมื่อผู้ใช้อาจมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึกในแอป ให้ใช้คุณสมบัตินี้เพื่อแสดงกล่องโต้ตอบการยืนยันก่อนที่จะออกจากแอป ใช้สูตรที่ตรวจสอบตัวแปรและคุณสมบัติตัวควบคุม (ตัวอย่างเช่น คุณสมบัติ ที่ยังไม่ได้บันทึก ของตัวควบคุม แก้ไขฟอร์ม )
กล่องโต้ตอบการยืนยันจะปรากฏในสถานการณ์ใดๆ ที่ข้อมูลอาจสูญหายได้ เช่น:
- เรียกใช้ฟังก์ชัน Exit
- ถ้าแอปทํางานในเบราว์เซอร์:
- ปิดเบราว์เซอร์หรือแท็บเบราว์เซอร์ที่แอปทํางาน
- เลือกปุ่มย้อนกลับของเบราว์เซอร์
- เรียกใช้ฟังก์ชัน เปิดใช้ ด้วย LaunchTarget ของ Self
- ถ้าแอปทํางานใน Power Apps Mobile (iOS หรือ Android):
- ปัดนิ้วเพื่อสลับไปยังแอปอื่นใน Power Apps Mobile
- เลือกปุ่มย้อนกลับบนอุปกรณ์ Android
- เรียกใช้ฟังก์ชัน เปิดใช้ เพื่อเปิดใช้แอปพื้นที่ทํางานอื่น
ลักษณะที่แน่นอนของกล่องโต้ตอบการยืนยันอาจแตกต่างกันไปในอุปกรณ์และเวอร์ชันของ Power Apps
กล่องโต้ตอบการยืนยันไม่แสดงใน Power Apps Studio
ConfirmExitMessage
โดยค่าเริ่มต้น กล่องโต้ตอบการยืนยันจะแสดงข้อความทั่วไป เช่น "คุณอาจมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก" ในภาษาของผู้ใช้
ใช้ ConfirmExitMessage เพื่อให้ข้อความที่กำหนดเองในกล่องโต้ตอบการยืนยัน ถ้าคุณสมบัตินี้เป็น ว่างเปล่า ค่าเริ่มต้นจะถูกใช้ ข้อความแบบกําหนดเองจะถูกตัดทอนตามความจําเป็นเพื่อให้พอดีภายในกล่องโต้ตอบการยืนยัน ดังนั้นให้เก็บข้อความไว้ที่บรรทัดสองถึงสามบรรทัด
ในเบราว์เซอร์ กล่องโต้ตอบการยืนยันสามารถแสดงข้อความทั่วไปจากเบราว์เซอร์ได้
หมายเหตุ
วัตถุ App มีคุณสมบัติเพิ่มเติมสองประการ และ OnMessageBackEnabledซึ่งเป็นแบบทดลอง คุณสมบัติเหล่านี้จะถูกเอาออกจากวัตถุแอปในที่สุด อย่าใช้คุณสมบัติเหล่านี้ในสภาพแวดล้อมการผลิตของคุณ
ตัวอย่างเช่น
ตั้งค่าคุณสมบัติ ConfirmExit ของออปเจกต์ แอป สำหรับนิพจน์นี้:
AccountForm.Unsaved Or ContactForm.Unsavedกล่องโต้ตอบจะแสดงถ้าผู้ใช้เปลี่ยนแปลงข้อมูลในฟอร์มใดฟอร์มหนึ่ง แล้วพยายามปิดแอปโดยไม่บันทึกการเปลี่ยนแปลงเหล่านั้น เช่น ผู้ใช้เปลี่ยนแปลงข้อมูลในฟอร์มใดฟอร์มหนึ่ง และจากนั้นพยายามปิดแอปโดยไม่บันทึกการเปลี่ยนแปลงเหล่านั้น
[!div clas1. ตั้งค่าคุณสมบัติ ConfirmExitMessage ของออปเจกต์ แอป สำหรับสูตรนี้:
If( AccountsForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )กล่องโต้ตอบจะแสดงถ้าผู้ใช้เปลี่ยนแปลงข้อมูลในฟอร์มบัญชี จากนั้นพยายามปิดแอปโดยไม่บันทึกการเปลี่ยนแปลงเหล่านั้น
ตั้งค่าสตริงการเชื่อมต่อสําหรับ Application Insights
เมื่อต้องการส่งออกไฟล์บันทึกแอปพลิเคชันที่ระบบสร้างขึ้นไปยัง Application Insights ให้ตั้งค่า สตริงการเชื่อมต่อ สําหรับแอปพื้นที่ทํางานของคุณ
- เปิดแอปของคุณสำหรับ การแก้ไข ใน Power Apps Studio
- เลือกออบเจ็กต์ App ในมุมมองทรีบนการนำทางด้านซ้าย
- ใส่ สตริงการเชื่อมต่อ ในบานหน้าต่างคุณสมบัติ
ถ้าไม่มีการส่งข้อมูลไปยัง Application Insights โปรดติดต่อผู้ดูแลระบบ Power Platform ของคุณ และตรวจสอบว่า ข้อมูลเชิงลึกของแอป ถูกปิดใช้งานในระดับผู้เช่าหรือไม่
คุณสมบัติของสูตร
ใช้สูตรที่ระบุชื่อในคุณสมบัติ Formulas เพื่อกำหนดสูตรที่สามารถนำมาใช้ซ้ำได้ทั่วทั้งแอปของคุณ
ใน Power Apps สูตรจะกำหนดค่าของคุณสมบัติตัวควบคุม ตัวอย่างเช่น หากต้องการตั้งค่าสีพื้นหลังให้สอดคล้องกันในแอป คุณอาจตั้งค่าคุณสมบัติ Fill สำหรับแต่ละรายการของสูตรทั่วไป:
Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )
สูตรนี้อาจปรากฏขึ้นในที่ต่างๆ มากมายที่ จึงกลายเป็นเรื่องน่าเบื่อและมีแนวโน้มที่จะเกิดข้อผิดพลาดในการปรับปรุงทั้งหมดหากจำเป็นต้องเปลี่ยนแปลง คุณสามารถสร้างตัวแปรส่วนกลางใน OnStart เพื่อตั้งค่าสีหนึ่งครั้ง แล้วนำค่ากลับมาใช้ใหม่ทั่วทั้งแอป:
App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
แม้ว่าวิธีนี้จะดีกว่า แต่ก็ขึ้นอยู่กับ OnStart ที่ทำงานก่อนค่าสำหรับ BGColor จะถูกสร้าง BGColor อาจมีการจัดการในบางมุมของแอปที่ผู้สร้างไม่ทราบ การเปลี่ยนแปลงที่ทำโดยผู้อื่น และอาจติดตามได้ยาก
สูตรที่ระบุชื่อเป็นทางเลือก เช่นเดียวกับที่เรามักเขียน control-property = นิพจน์ เราสามารถเขียน ชื่อ = นิพจน์ แทนแล้วนำ ชื่อ กลับมาใช้ใหม่ตลอดทั้งแอปของเราเพื่อแทนที่ นิพจน์ คำจำกัดความของสูตรเหล่านี้ทำในคุณสมบัติ Formulas:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
ข้อดีของการใช้สูตรที่ระบุชื่อได้แก่:
- ค่าของสูตรจะใช้ได้เสมอ ไม่มีการข้อต่อกันของเวลา ไม่มี OnStart ที่ต้องทำงานก่อนจึงจะกำหนดค่าได้ ไม่มีเวลาที่ค่าของสูตรไม่ถูกต้อง สูตรที่ระบุชื่อสามารถอ้างอิงถึงกันในลำดับใดก็ได้ ตราบเท่าที่ไม่ได้สร้างการอ้างอิงแบบวงกลม สูตรดังกล่าวสามารถคำนวณแบบขนานได้
- ค่าของสูตรจะเป็นปัจจุบันเสมอ สูตรสามารถทำการคำนวณที่ขึ้นอยู่กับคุณสมบัติของตัวควบคุมหรือเรกคอร์ดฐานข้อมูล และเมื่อมีการเปลี่ยนแปลง ค่าของสูตรจะปรับปรุงโดยอัตโนมัติ คุณไม่จำเป็นต้องปรับปรุงค่าด้วยตนเองเช่นเดียวกับที่ทำกับตัวแปร และสูตรจะคำนวณใหม่เมื่อจำเป็นเท่านั้น
- คำจำกัดความของสูตรนี้ไม่สามารถเปลี่ยนแปลงได้ คำจำกัดความใน สูตร เป็นแหล่งที่มาของความจริงเพียงแหล่งเดียวและไม่สามารถเปลี่ยนแปลงค่าที่อื่นในแอปได้ ด้วยตัวแปร เป็นไปได้ว่าโค้ดบางตัวจะเปลี่ยนแปลงค่าโดยไม่คาดคิด แต่สถานการณ์ที่แก้ไขได้ยากนี้ไม่สามารถเกิดขึ้นได้กับสูตรที่มีชื่อ
- การคำนวณของสูตรสามารถเลื่อนออกไปได้ เนื่องจากค่าไม่เปลี่ยนรูป จึงสามารถคำนวณได้เสมอเมื่อจำเป็น ซึ่งหมายความว่าไม่จำเป็นต้องคำนวณจนกว่าจะจำเป็น ค่าสูตรที่ไม่ได้ใช้จนกระทั่ง screen2 ของแอปแสดงขึ้นไม่จำเป็นต้องคำนวณจนกว่า screen2 จะปรากฏขึ้น การเลื่อนเวลาการทำงานนี้สามารถปรับปรุงเวลาในการโหลดแอปได้ สูตรที่ระบุชื่อเป็นการประกาศและให้โอกาสสำหรับระบบในการปรับวิธีและเวลาคำนวณให้เหมาะสม
- สูตรที่ระบุชื่อเป็นแนวคิดของ Excel Power Fx ใช้แนวคิดของ Excel เมื่อเป็นไปได้ เนื่องจากมีคนจำนวนมากที่รู้จัก Excel เป็นอย่างดี สูตรที่ระบุชื่อจะเทียบเท่ากับเซลล์ที่มีชื่อและสูตรที่ระบุชื่อใน Excel ซึ่งจัดการด้วยโปรแกรมจัดการชื่อ โดยจะคำนวณใหม่โดยอัตโนมัติเหมือนเซลล์ของสเปรดชีตและคุณสมบัติของตัวควบคุมก็เช่นกัน
มีการกำหนดสูตรที่ระบุชื่อไว้ทีละรายการในคุณสมบัติ Formulas แต่ละรายการลงท้ายด้วยเครื่องหมายอัฒภาค ชนิดของสูตรจะอนุมานจากชนิดขององค์ประกอบภายในสูตรและวิธีที่ถูกใช้ร่วมกัน ตัวอย่างเช่น สูตรที่ระบุชื่อเหล่านี้ดึงข้อมูลที่เป็นประโยชน์เกี่ยวกับผู้ใช้ปัจจุบันจาก Dataverse:
UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone',
'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
UserInfo.'Main Phone' );
ถ้าสูตรสำหรับ UserTitle จำเป็นต้องปรับปรุงก็สามารถทำได้ง่ายๆ ในที่เดียวนี้ ถ้า UserPhone ไม่จำเป็นในแอป จะไม่มีการทำการเรียกไปยังตาราง ผู้ใช้ ใน Dataverse เหล่านี้ ไม่มีผลเสียสำหรับการรวมคำจำกัดความของสูตรที่ไม่ได้ใช้
ข้อจำกัดบางประการของสูตรที่ระบุชื่อ:
- สูตรที่ระบุชื่อไม่สามารถใช้ฟังก์ชันของลักษณะการทำงานหรือทำให้เกิดผลข้างเคียงภายในแอปได้
- สูตรที่ระบุชื่อสามารถสร้างการอ้างอิงแบบวงกลมได้ การมี a = b; และ b = a; ในแอปเดียวกันไม่ได้รับอนุญาต
ฟังก์ชันที่ผู้ใช้กำหนดเอง
Power Fx มีรายการฟังก์ชันในตัวมากมาย เช่น If, Text และ Set ฟังก์ชันที่ผู้ใช้กำหนดช่วยให้คุณสามารถเขียนฟังก์ชันของคุณเองที่ใช้พารามิเตอร์และส่งกลับค่า เช่นเดียวกับฟังก์ชันในตัว คุณสามารถคิดว่าฟังก์ชันที่ผู้ใช้กำหนดเป็นส่วนขยายของสูตรที่มีชื่อ ซึ่งเพิ่มพารามิเตอร์และสนับสนุนสูตรลักษณะการทำงาน
ตัวอย่างเช่น คุณอาจกำหนดสูตรที่มีชื่อซึ่งส่งคืนหนังสือนิยายจากห้องสมุด:
Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
{ Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];
LibraryFiction = Filter( Library, Genre = "Fiction" );
หากไม่มีพารามิเตอร์ เราจะต้องกำหนดสูตรที่มีชื่อแยกกันสำหรับแต่ละประเภท แต่เรามากำหนดพารามิเตอร์สูตรชื่อของเราแทน:
LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );
LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );
ตอนนี้เราสามารถเรียก LibraryGenre( "Fiction" ), LibraryGenre( "Reference" ) หรือกรองประเภทอื่นๆ ด้วยฟังก์ชันที่ผู้ใช้กำหนดเพียงฟังก์ชันเดียว
ไวยากรณ์คือ:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ) : สูตร ReturnType = ;
- FunctionName – จำเป็น ชื่อของฟังก์ชันที่ผู้ใช้กำหนด
- ParameterName(s) - ไม่บังคับ ชื่อของพารามิเตอร์ฟังก์ชัน
- ParameterType(s) – ไม่บังคับ ชื่อของชนิด ไม่ว่าจะเป็น ชื่อชนิดข้อมูล ในตัว ชื่อแหล่งข้อมูล หรือชนิดที่กำหนดด้วยฟังก์ชัน Type
- ReturnType – จำเป็น ชนิดของค่าที่ส่งกลับจากฟังก์ชัน
- สูตร – จำเป็น สูตรที่คำนวณค่าของฟังก์ชันตามพารามิเตอร์
ต้องระบุชนิดข้อมูลสำหรับพารามิเตอร์แต่ละตัวและผลลัพธ์จากฟังก์ชันที่ผู้ใช้กำหนด ในตัวอย่างนี้ SelectedGenre: Text จะกำหนดพารามิเตอร์แรกให้กับฟังก์ชันของเราเป็นชนิด ข้อความ และ SelectedGenre จะเป็นชื่อของพารามิเตอร์ที่ใช้ภายในเนื้อความสำหรับการดำเนินการ ตัวกรอง ดู ชนิดข้อมูล สำหรับชื่อชนิดที่รองรับ The ฟังก์ชัน Type ใช้เพื่อสร้างชนิดการรวมสำหรับไลบรารีของเรา เพื่อให้เราสามารถส่งคืนตารางหนังสือจากฟังก์ชันของเราได้
เรากำหนดให้ LibraryType เป็นตารางชนิดเรกคอร์ดพหูพจน์ หากเราต้องการส่งหนังสือเล่มเดียวไปยังฟังก์ชัน เราสามารถแยกชนิดของเรกคอร์ดสำหรับตารางนี้ด้วยฟังก์ชัน RecordOf:
BookType := Type( RecordOf( LibraryType ) );
IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);
การจับคู่เรกคอร์สำหรับพารามิเตอร์ฟังก์ชันมีความเข้มงวดมากกว่าในส่วนอื่นๆ ของ Power Fx ฟิลด์ของค่าเรกคอร์ดต้องเป็นเซตย่อยที่เหมาะสมของข้อกำหนดชนิด และไม่สามารถรวมฟิลด์เพิ่มเติมได้ ตัวอย่างเช่น IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" ) จะส่งผลให้เกิดข้อผิดพลาด
หมายเหตุ ฟังก์ชันที่ผู้ใช้กำหนดยังไม่รองรับการเรียกซ้ำ
ลักษณะการทำงานที่ผู้ใช้กำหนดฟังก์ชัน
สูตรที่มีชื่อและฟังก์ชันที่ผู้ใช้กำหนดส่วนใหญ่ไม่รองรับฟังก์ชันลักษณะการทำงานที่มีผลกระทบเพิ่มเติม เช่น ตั้งค่า หรือ แจ้งเตือน โดยทั่วไป เป็นการดีที่สุดที่จะหลีกเลี่ยงการอัปเดตสถานะหากทำได้ แต่ให้อาศัยรูปแบบการเขียนโปรแกรมที่ใช้งานได้และอนุญาตให้ Power Fx คำนวณสูตรใหม่ได้ตามต้องการโดยอัตโนมัติ แต่มีบางกรณีที่หลีกเลี่ยงไม่ได้ หากต้องการรวมตรรกะลักษณะการทำงานไว้ในฟังก์ชันที่ผู้ใช้กำหนด ให้ใส่เนื้อหาของฟังก์ชันในวงเล็บปีกกา:
Spend( Amount: Number ) : Void = {
If( Amount > Savings,
Error( $"{Amount} is more than available savings" ),
Set( Savings, Savings - Amount );
Set( Spent, Spent + Amount)
);
}
ตอนนี้เราสามารถเรียก Spend( 12 ) เพื่อตรวจสอบว่าเรามี 12 ในเงินออมของเราหรือไม่และถ้าเป็นเช่นนั้นให้หักด้วย 12 และเพิ่ม 12 ในตัวแปรการใช้จ่าย ชนิดการส่งคืนของฟังก์ชันนี้คือ Void เนื่องจากไม่ส่งคืนค่า
ไวยากรณ์ของฟังก์ชันที่ผู้ใช้กำหนดลักษณะการทำงานคือ:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ) : ReturnType = { Formula1 [ ; Formula2 ... ] };
- FunctionName – จำเป็น ชื่อของฟังก์ชันที่ผู้ใช้กำหนด
- ParameterName(s) - ไม่บังคับ ชื่อของพารามิเตอร์ฟังก์ชัน
- ParameterType(s) – ไม่บังคับ ชื่อของชนิด ไม่ว่าจะเป็น ชื่อชนิดข้อมูล ในตัว ชื่อแหล่งข้อมูล หรือชนิดที่กำหนดด้วยฟังก์ชัน Type
- ReturnType – จำเป็น ชนิดของค่าที่ส่งกลับจากฟังก์ชัน ใช้ Void หากฟังก์ชันไม่ส่งคืนค่า
- Formula(s) - ่จำเป็นต้องมี สูตรที่คำนวณค่าของฟังก์ชันตามพารามิเตอร์
การดำเนินการจะไม่สิ้นสุดเมื่อพบข้อผิดพลาด เช่นเดียวกับสูตร Power Fx ทั้งหมด หลังจากเรียกใช้ฟังก์ชัน Errorฟังก์ชัน If จะป้องกันไม่ให้มีการเปลี่ยนแปลง Savings และ Spent เกิดขึ้น นอกจากนี้ยังสามารถใช้ฟังก์ชัน IfError เพื่อป้องกันการดำเนินการเพิ่มเติมหลังจากเกิดข้อผิดพลาด แม้ว่าจะส่งคืน Void แต่สูตรยังสามารถส่งคืนข้อผิดพลาดได้หากมีปัญหา
ชนิดที่ผู้ใช้กำหนด
สำคัญ
- ชนิดที่ผู้ใช้กำหนดเป็นคุณลักษณะแบบทดลอง
- คุณลักษณะทดลองไม่ได้มีไว้สำหรับการนำไปใช้งานจริงและอาจไม่สมบูรณ์ คุณลักษณะเหล่านี้สามารถใช้ได้ก่อนการเปิดตัวอย่างเป็นทางการเพื่อให้คุณสามารถเข้าใช้งานได้ก่อนเวลาและให้ข้อคิดเห็น ข้อมูลเพิ่มเติม: ทำความเข้าใจคุณลักษณะทดลอง แสดงตัวอย่าง และเลิกใช้แล้วในแอปพื้นที่ทำงาน
- ลักษณะการทำงานที่อธิบายในบทความนี้ใช้ได้เฉพาะเมื่อคุณเปิดคุณลักษณะทดลอง ชนิดที่ผู้ใช้กำหนด ใน การตั้งค่า > คุณลักษณะที่กำลังจะมา > การทดลอง (ปิดอยู่โดยค่าเริ่มต้น)
- ความคิดเห็นของคุณมีค่าสำหรับเรา บอกให้เราทราบว่าคุณคิดอย่างไรใน ฟอรัมชุมชนของคุณลักษณะทดลอง Power Apps
สูตรที่มีชื่อสามารถใช้กับฟังก์ชัน Type เพื่อสร้างชนิดที่ผู้ใช้กำหนดได้ ใช้ := แทน = ชนิดที่ผู้ใช้กำหนด เช่น Book := Type( { Title: Text, Author: Text } ) ดูฟังก์ชัน Type สำหรับข้อมูลเพิ่มเติมและตัวอย่าง
คุณสมบัติ OnError
ใช้ OnError เพื่อดำเนินการเมื่อเกิดข้อผิดพลาดที่ใดก็ตามในแอป เป็นการให้โอกาสในการสกัดกั้นแบนเนอร์ข้อผิดพลาดทั้งหมดก่อนที่จะแสดงต่อผู้ใช้ นอกจากนี้ยังสามารถใช้เพื่อบันทึกข้อผิดพลาดด้วย ฟังก์ชัน Trace หรือเขียนไปยังฐานข้อมูลหรือบริการเว็บ
ในแอปพื้นที่ทำงาน ผลลัพธ์ของการประเมินทุกสูตรจะถูกตรวจสอบหาข้อผิดพลาด หากพบความผิดพลาด OnError จะถูกประเมินด้วยตัวแปรขอบเขต FirstError และ AllErrors ที่คล้ายกันซึ่งจะถูกใช้ถ้าสูตรทั้งหมดถูกตัดในฟังก์ชัน IfError
ถ้า OnError ว่างเปล่า แบนเนอร์ข้อผิดพลาดค่าเริ่มต้นจะแสดง FirstError.Message ของข้อผิดพลาด การกําหนดสูตร OnError จะแทนที่ลักษณะการทํางานนี้ ดังนั้นผู้สร้างสามารถจัดการการรายงานข้อผิดพลาดได้ตามความจําเป็น คุณสามารถร้องขอลักษณะการทํางานเริ่มต้นใน OnError โดยเปลี่ยนชื่อข้อผิดพลาดด้วยฟังก์ชัน Error ใช้วิธีการทําซ้ําถ้าคุณต้องการกรองออกหรือจัดการข้อผิดพลาดบางอย่างแตกต่างกัน แต่ให้ผู้อื่นผ่าน
OnError ไม่สามารถแทนที่ข้อผิดพลาดในการคำนวณแบบที่ IfError ทำได้ หากมีการเรียกใช้ OnError ข้อผิดพลาดก็จะเกิดขึ้นแล้วและได้รับการประมวลผลแล้วผ่านการคำนวณสูตร เช่น IfError แล้ว OnError จะควบคุมเฉพาะการรายงานข้อผิดพลาดเท่านั้น
สูตร OnError จะได้รับการประเมินพร้อมๆ กัน และเป็นไปได้ว่าการประเมินของพวกเขาอาจทับซ้อนกับการประมวลผลข้อผิดพลาดอื่น ๆ ตัวอย่างเช่น ถ้าคุณตั้งค่าตัวแปรส่วนกลางที่ด้านบนของ OnError และอ่านในภายหลังในสูตรเดียวกัน ค่าอาจมีการเปลี่ยนแปลง ใช้ ฟังก์ชัน With เพื่อสร้างค่าที่ระบุชื่อซึ่งระบุตำแหน่งไปยังสูตร
แม้ว่าแต่ละข้อผิดพลาดจะได้รับการประมวลผลทีละรายการโดย OnError แบนเนอร์ข้อผิดพลาดเริ่มต้นอาจไม่ปรากฏสําหรับแต่ละข้อผิดพลาดแยกต่างหาก เพื่อหลีกเลี่ยงไม่ให้มีแบนเนอร์ข้อผิดพลาดมากเกินไปแสดงพร้อมกัน แบนเนอร์ข้อผิดพลาดเดียวกันจะไม่ปรากฏอีกหากเพิ่งแสดงไปเมื่อไม่นานนี้
ตัวอย่างเช่น
พิจารณาตัวควบคุม ป้ายชื่อ และ แถบเลื่อน ที่ถูกผูกด้วยกันผ่านสูตร:
Label1.Text = 1/Slider1.Value
ค่าเริ่มต้นแถบเลื่อนเป็น 50 หากแถบเลื่อนถูกย้ายไปที่ 0 Label1 จะไม่แสดงค่าและแสดงแบนเนอร์ข้อผิดพลาด:
ลองดูสิ่งที่เกิดขึ้นโดยละเอียด:
- ผู้ใช้เลื่อนแถบเลื่อนไปทางซ้ายและคุณสมบัติ Slide1.Value เปลี่ยนเป็น 0
- Label1.Text ได้รับการประเมินใหม่โดยอัตโนมัติ เกิดการหารด้วยศูนย์ทำให้เกิดข้อผิดพลาด
- ไม่มี IfError ในสูตรนี้ ข้อผิดพลาดการหารด้วยศูนย์จะถูกส่งกลับโดยการประเมินสูตร
- Label1.Text ไม่สามารถแสดงข้อผิดพลาดนี้ได้ จึงแสดงสถานะ ว่างเปล่า
- OnError ถูกเรียก เนื่องจากไม่มีตัวจัดการ แบนเนอร์ข้อผิดพลาดมาตรฐานจึงแสดงพร้อมข้อมูลข้อผิดพลาด
ถ้าจําเป็น คุณยังสามารถเปลี่ยนสูตรเป็น Label1.Text = IfError( 1/Slider1.Value, 0 )ได้ การใช้ IfError หมายความว่าไม่มีข้อผิดพลาดหรือแบนเนอร์ข้อผิดพลาด คุณไม่สามารถเปลี่ยนค่าของข้อผิดพลาดจาก OnError ได้เนื่องจากข้อผิดพลาดเกิดขึ้นแล้ว — OnError ควบคุมวิธีรายงานเท่านั้น
ถ้าคุณเพิ่มตัวจัดการ OnError จะไม่ส่งผลกระทบต่อขั้นตอนก่อนขั้นตอนที่ 5 แต่จะเปลี่ยนวิธีการรายงานข้อผิดพลาด:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
ด้วยตัวจัดการ OnError นี้ ผู้ใช้แอปจะไม่เห็นข้อผิดพลาดใด ๆ แต่ข้อผิดพลาดถูกเพิ่มลงในการติดตามของตัวตรวจสอบ รวมถึงแหล่งข้อมูลของข้อมูลข้อผิดพลาดจาก FirstError:
ถ้าคุณต้องการแสดงแบนเนอร์ข้อผิดพลาดเริ่มต้นพร้อมกับการติดตาม ให้แก้ไขข้อผิดพลาดด้วยฟังก์ชัน ข้อผิดพลาด หลังจากการเรียก ติดตาม เหมือนกับว่าไม่มี การติดตาม :
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
คุณสมบัติ OnStart
หมายเหตุ
การใช้คุณสมบัติ OnStart อาจทําให้เกิดปัญหาด้านประสิทธิภาพการทํางานเมื่อโหลดแอป เรากําลังสร้างทางเลือกสําหรับเหตุผลสองประการแรกในการใช้คุณสมบัตินี้ — การแคชข้อมูลและการตั้งค่าตัวแปรส่วนกลาง มีทางเลือกสําหรับการกําหนดหน้าจอแรกที่จะแสดงด้วยนําทาง ขึ้นอยู่กับบริบทของคุณ คุณสมบัตินี้สามารถปิดใช้งานได้ตามค่าเริ่มต้น ถ้าคุณไม่เห็นและจําเป็นต้องใช้ ตรวจสอบการตั้งค่าขั้นสูงของแอปสําหรับสวิตช์เพื่อเปิดการใช้งาน คุณยังสามารถใช้คุณสมบัติ OnVisible ของหน้าจอได้ ตามค่าเริ่มต้น เมื่อเปิดใช้งานกฎ OnStart ที่ไม่บล็อก ฟังก์ชันนี้จะช่วยให้ฟังก์ชัน OnStart ทํางานในเวลาเดียวกันกับกฎของแอปอื่น ๆ ดังนั้น ถ้ามีการเตรียมใช้งานตัวแปรที่อ้างอิงในกฎแอปอื่นภายในฟังก์ชัน OnStart ตัวแปรเหล่านั้นอาจยังไม่เตรียมใช้งานเต็มรูปแบบ นอกจากนี้ หน้าจอสามารถแสดงและโต้ตอบได้ก่อนฟังก์ชัน Screen.OnVisible หรือ App.OnStart จะทํางานเสร็จสิ้น โดยเฉพาะอย่างยิ่งถ้าใช้เวลานานในการดําเนินการให้เสร็จสิ้น
คุณสมบัติ OnStart จะทำงานเมื่อผู้ใช้เริ่มต้นแอป คุณสมบัตินี้มักใช้เพื่อ:
สูตรนี้จะทํางานก่อนที่หน้าจอแรกจะปรากฏขึ้น ไม่มีการโหลดหน้าจอ ดังนั้นคุณจึงไม่สามารถตั้งค่าตัวแปรบริบทด้วยฟังก์ชัน UpdateContext แต่คุณสามารถส่งผ่านตัวแปรบริบทด้วยฟังก์ชัน นําทาง ได้
หลังจากที่คุณเปลี่ยนคุณสมบัติ OnStart ให้ทดสอบโดยวางเมาส์เหนือวัตถุแอปในบานหน้าต่างมุมมองทรี เลือกจุดไข่ปลา (...) จากนั้นเลือกเรียกใช้ OnStart คอลเลกชันและตัวแปรที่มีอยู่จะถูกตั้งค่าไว้แล้ว ซึ่งแตกต่างจากเวลาที่แอปโหลดเป็นครั้งแรก ในการเริ่มต้นด้วยคอลเลกชันว่าง ให้ใช้ฟังก์ชัน ClearCollect แทนฟังก์ชัน Collect
หมายเหตุ
- การใช้ฟังก์ชัน นําทาง ในคุณสมบัติ OnStart จะถูกยกเลิก แอปที่มีอยู่ยังคงใช้งานได้ ในช่วงเวลาที่จํากัด คุณสามารถเปิดใช้งานได้ในการตั้งค่าแอป (ภายใต้ เกษียณ) แต่การใช้ นําทาง ด้วยวิธีนี้อาจทําให้การโหลดแอปล่าช้าเนื่องจากจะบังคับให้ระบบเรียกใช้ OnStart ให้เสร็จสิ้นก่อนที่จะแสดงหน้าจอแรก ใช้คุณสมบัติ StartScreen แทนเพื่อตั้งค่าหน้าจอแรกที่แสดง
- สวิตช์ที่หยุดใช้งานจะปิดสําหรับแอปที่สร้างขึ้นก่อนเดือนมีนาคม 2021 ที่คุณเพิ่ม การนําทาง ไปยัง OnStart ระหว่างเดือนมีนาคม 2021 และตอนนี้ เมื่อคุณแก้ไขแอปเหล่านี้ใน Power Apps Studio คุณจะเห็นข้อผิดพลาด เปิดสวิตช์ที่เลิกใช้แล้วเพื่อล้างข้อผิดพลาดนี้
คุณสมบัติ StartScreen
คุณสมบัติ StartScreen จะกําหนดหน้าจอที่จะแสดงเป็นอันดับแรก โดยจะมีการประเมินหนึ่งครั้งเมื่อแอปโหลดและส่งกลับวัตถุหน้าจอที่จะแสดง ตามค่าเริ่มต้น คุณสมบัตินี้จะว่างเปล่า และหน้าจอแรกในมุมมอง Studio Tree จะแสดงเป็นอันดับแรก
StartScreen เป็นคุณสมบัติโฟลว์ของข้อมูลที่ไม่สามารถมีฟังก์ชันลักษณะการทำงานได้ ฟังก์ชันกระแสข้อมูลทั้งหมดพร้อมใช้งาน ใช้ฟังก์ชันและสัญญาณเหล่านี้เพื่อตัดสินใจว่าจะแสดงหน้าจอใดก่อน:
- ฟังก์ชัน Param เพื่ออ่านค่าพารามิเตอร์ที่ใช้ในการเริ่มแอป
- ฟังก์ชัน User เพื่ออ่านข้อมูลเกี่ยวกับผู้ใช้ปัจจุบัน
- LookUpFilterCountRowsMax และฟังก์ชันอื่นๆ ที่อ่านจากแหล่งข้อมูล
- เรียกใช้ API ผ่านตัวเชื่อมต่อ ตรวจสอบให้แน่ใจว่าการเรียกใช้ส่งกลับอย่างรวดเร็ว
- สัญญาณ เช่น การเชื่อมต่อเข็มทิศ และ แอป
หมายเหตุ
ตัวแปรส่วนกลางและคอลเลกชัน รวมถึงรายการที่สร้างขึ้นใน OnStart ยังไม่มีใน StartScreen สูตรที่มีชื่อพร้อมใช้งานและมักเป็นทางเลือกที่ดีกว่าสำหรับการนำสูตรกลับมาใช้ใหม่ทั่วทั้งแอป
ถ้า StartScreen แสดงข้อผิดพลาด หน้าจอแรกในมุมมองทรีของ Studio จะแสดงเหมือนกับว่า StartScreen ไม่ได้ตั้งค่าไว้ ใช้ฟังก์ชัน IfError เพื่อตรวจจับข้อผิดพลาดใด ๆ และเปลี่ยนเส้นทางไปยังหน้าจอข้อผิดพลาด
หลังจากที่คุณเปลี่ยน StartScreen ใน Studio ให้ทดสอบโดยวางเมาส์เหนือวัตถุแอปในบานหน้าต่างมุมมองทรี เลือกจุดไข่ปลา (...) แล้วเลือกนําทางไปยัง StartScreen หน้าจอจะเปลี่ยนแปลงราวกับว่าแอปเพิ่งโหลดไป
ตัวอย่าง
Screen9
Screen9 แสดงก่อนเมื่อใดก็ตามที่แอปเริ่มต้น
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
ตรวจสอบว่า Param "admin-mode" ถูกตั้งค่าและใช้เพื่อตัดสินใจว่า AdminScreen หรือ AdminScreen จะแสดงเป็นอันดับแรกหรือไม่
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
ตรวจสอบว่าผู้เข้าร่วมเป็นเจ้าหน้าที่และนําพวกเขาไปยังหน้าจอที่ถูกต้องเมื่อเริ่มต้นหรือไม่
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
นำแอปตามการเรียกใช้ API ไปที่ ForestScreen หรือ OceanScreen ถ้า API ล้มเหลว แอปจะใช้ ErrorScreen แทน
คุณสมบัติ StudioVersion
ใช้คุณสมบัติ StudioVersion เพื่อแสดงหรือบันทึกเวอร์ชันของ Power Apps Studio ที่ใช้ในการเผยแพร่แอป คุณสมบัตินี้จะช่วยเมื่อคุณกําลังดีบักและตรวจสอบว่าแอปของคุณเผยแพร่ซ้ําด้วย Power Apps Studio เวอร์ชันล่าสุดหรือไม่
StudioVersion จะส่งกลับข้อความ รูปแบบของข้อความนี้สามารถเปลี่ยนแปลงได้เมื่อเวลาผ่านไป ดังนั้นถือว่าทั้งหมดและไม่แยกแต่ละส่วน