ตัวแปร
หมายเหตุ
Microsoft Power Fx เป็นชื่อใหม่สำหรับภาษาสูตรของแอปพื้นที่ทำงาน บทความเหล่านี้คืองานที่อยู่ระหว่างดำเนินการ ในขณะที่เราแยกภาษาจากแอปพื้นที่ทำงาน รวมเข้ากับผลิตภัณฑ์ Microsoft Power Platform อื่นๆ และทำให้พร้อมใช้งานในรูปแบบโอเพนซอร์ส เริ่มต้นด้วย ภาพรวมของ Microsoft Power Fx สำหรับการแนะนำภาษา
ถ้าคุณเคยใช้เครื่องมือการเขียนโปรแกรมอื่น เช่น Visual Basic หรือ JavaScript คุณอาจถามว่า ตัวแปรอยู่ที่ไหน Microsoft Power Fx จะแตกต่างกันเล็กน้อย และจำเป็นต้องใช้วิธีอื่น แทนที่จะเข้าถึงตัวแปรเมื่อคุณเขียนสูตร ให้ถามตัวคุณเองว่า ฉันจะทำอะไรในสเปรดชีท
ในเครื่องมืออื่น คุณอาจได้ดำเนินการคำนวณอย่างชัดเจนและเก็บผลลัพธ์ไว้ในตัวแปร อย่างไรก็ตาม Power Fx และ Excel จะคำนวณสูตรใหม่โดยอัตโนมัติเนื่องจากการเปลี่ยนแปลงข้อมูลป้อนเข้า ดังนั้นคุณจึงมักไม่จำเป็นต้องสร้างและอัปเดตตัวแปร เมื่อใช้วิธีนี้ คุณสามารถสร้าง ทำความเข้าใจ และรักษาแอปของคุณได้อย่างง่ายดาย
ในบางกรณี คุณจะต้องใช้ตัวแปรใน Power Fx ซึ่งขยายโมเดลของ Excel โดยการเพิ่ม สูตรลักษณะการทำงาน สูตรเหล่านี้จะทำงานเมื่อ ตัวอย่างเช่น ผู้ใช้เลือกปุ่ม ภายในสูตรลักษณะการทำงาน มักจะเป็นประโยชน์ในการตั้งค่าตัวแปรที่จะใช้ในสูตรอื่นๆ
โดยทั่วไป ให้หลีกเลี่ยงการใช้ตัวแปร แต่ในบางครั้ง เฉพาะตัวแปรเท่านั้นที่สามารถเปิดใช้งานประสบการณ์ที่คุณต้องการ ตัวแปรจะถูกสร้างและกรอกโดยปริยาย เมื่อปรากฏในฟังก์ชันที่ตั้งค่า
แปล Excel ลงใน Power Fx
Excel
มาลองดูวิธีที่ Excel ทำงานกัน เซลล์สามารถมีค่า เช่น ตัวเลขหรือสตริง หรือสูตรที่ยึดตามค่าของเซลล์อื่น หลังจากที่ผู้ใช้ใส่ค่าอื่นลงในเซลล์ Excel จะคำนวณสูตรที่ขึ้นอยู่กับค่าใหม่อีกครั้งโดยอัตโนมัติ คุณไม่ต้องเขียนโปรแกรมเพื่อเปิดใช้งานลักษณะการทำงานนี้
ในตัวอย่างต่อไปนี้เซลล์ A3 ถูกตั้งค่าเป็นสูตร A1 + A2 ถ้า A1 หรือ A2 มีการเปลี่ยนแปลง A3 จะคำนวณใหม่โดยอัตโนมัติเพื่อสะท้อนการเปลี่ยนแปลง พฤติกรรมนี้ไม่จำเป็นต้องมีการเขียนโค้ดนอกสูตร
Excel ไม่มีตัวแปร ค่าของเซลล์ที่มีสูตรจะเปลี่ยนตามการป้อนเข้า แต่ไม่มีวิธีจดจำผลลัพธ์ของสูตร และจัดเก็บไว้ในเซลล์หรือที่ไหนก็ตาม ถ้าคุณเปลี่ยนค่าของเซลล์ สเปรดชีตทั้งหมดอาจเปลี่ยนแปลง และค่าที่คำนวณไว้ก่อนหน้าจะสูญหาย ผู้ใช้ Excel สามารถคัดลอกและวางเซลล์ แต่ทำภายใต้ตัวควบคุมด้วยตนเองของผู้ใช้ และไม่สามารถใช้ได้กับสูตร
Power Fx
ตรรกะที่คุณสร้างใน Power Fx ทำงานเหมือนกับ Excel แทนที่จะอัปเดตเซลล์ คุณสามารถเพิ่มตัวควบคุมได้ทุกที่ที่คุณต้องการบนหน้าจอ และตั้งชื่อสำหรับใช้ในสูตร
ตัวอย่างเช่น ใน Power Apps คุณสามารถจำลองลักษณะการทำงานของ Excel ในแอปโดยการเพิ่มการควบคุม Label ชื่อ Label1, และสอง การควบคุม Text input ชื่อ TextInput1 และ TextInput2 ถ้าคุณตั้งค่าคุณสมบัติ ข้อความ ของ Label1 เป็น TextInput1.Text + TextInput2.Text ระบบจะแสดงผลรวมของตัวเลขใดก็ตามที่อยู่ใน TextInput1 และ TextInput2 โดยอัตโนมัติ
โปรดสังเกตว่า มีการเลือกตัวควบคุม Label1 ซึ่งแสดงสูตร ข้อความ ในแถบสูตรที่ด้านบนของหน้าจอ ที่นี่เราจะพบสูตร TextInput1.Text + TextInput2.Text สูตรนี้สร้างการขึ้นต่อกันระหว่างตัวควบคุมเหล่านี้ เหมือนกับการขึ้นต่อกันที่ถูกสร้างขึ้นระหว่างเซลล์ในเวิร์กบุ๊ก Excel มาเปลี่ยนค่าของ TextInput1:
สูตรสำหรับ Label1 จะถูกคำนวณใหม่โดยอัตโนมัติ เพื่อแสดงค่าใหม่
ใน Power Fx คุณสามารถใช้สูตรในการกำหนดไม่เฉพาะค่าหลักของตัวควบคุม แต่รวมถึงคุณสมบัติ เช่น การจัดรูปแบบ ในตัวอย่างถัดไป สูตรสำหรับคุณสมบัติ สี ของป้ายชื่อจะแสดงค่าลบเป็นสีแดงโดยอัตโนมัติ ฟังก์ชัน If ควรมีลักษณะที่คุ้นเคยจาก Excel:
If( Value(Label1.Text) < 0, Color.Red, Color.Black )
คุณสามารถใช้สูตรสำหรับสถานการณ์ที่หลากหลาย:
- ด้วยการใช้ GPS ของอุปกรณ์ของคุณ ตัวควบคุมแผนที่สามารถแสดงตำแหน่งที่ตั้งปัจจุบันของคุณด้วยสูตรที่ใช้ Location.Latitude และ Location.Longitude เมื่อคุณเคลื่อนที่ แผนที่จะติดตามตำแหน่งที่ตั้งของคุณโดยอัตโนมัติ
- ผู้ใช้อื่นสามารถอัปเดต แหล่งข้อมูล ตัวอย่างเช่น ผู้อื่นในทีมของคุณอาจอัปเดตรายการในรายการ SharePoint เมื่อคุณรีเฟรชแหล่งข้อมูล สูตรที่ขึ้นต่อกันจะถูกคำนวณใหม่โดยอัตโนมัติเพื่อแสดงข้อมูลที่อัปเดต ตัวอย่างเพิ่มเติม คุณอาจตั้งค่าคุณสมบัติ รายการ ของแกลเลอรีเป็นสูตร Filter( SharePointList ) ซึ่งจะแสดงชุด เรกคอร์ด ที่กรองใหม่โดยอัตโนมัติ
สิทธิประโยชน์
การใช้สูตรในการสร้างแอปมีข้อดีหลายอย่าง:
- ถ้าคุณรู้จัก Excel คุณจะรู้จัก Power Fx ภาษาโมเดลและสูตรเป็นแบบเดียวกัน
- ถ้าคุณเคยใช้เครื่องมือการเขียนโปรแกรมอื่น ๆ ให้ลองคิดว่าต้องใช้โค้ดมากเพียงใดในการทำตัวอย่างเหล่านี้ให้สำเร็จ ใน Visual Basic คุณอาจจำเป็นต้องเขียนตัวจัดการเหตุการณ์สำหรับเหตุการณ์การเปลี่ยนแปลงบนตัวควบคุม การป้อนข้อความ แต่ละตัว โค้ดในการดำเนินการคำนวณในแต่ละอย่างมีความซ้ำซ้อน และอาจไม่ตรงกัน หรือคุณอาจจำเป็นต้องเขียน Subroutine ทั่วไป ใน Power Fx คุณทำทุกอย่างได้ด้วยสูตรหนึ่งบรรทัดสูตรเดียว
- เมื่อต้องการทำความเข้าใจว่า ข้อความของ Label1 มาจากไหน คุณทราบดีว่าจะต้องค้นหาที่ใด: สูตรในคุณสมบัติ ข้อความ ไม่มีวิธีอื่นที่จะส่งผลต่อข้อความของตัวควบคุมนี้ ในเครื่องมือการเขียนโปรแกรมดั้งเดิม ตัวจัดการเหตุการณ์หรือ Subroutine สามารถเปลี่ยนค่าของป้ายชื่อจากที่ใดก็ได้ในโปรแกรม ซึ่งอาจทำให้ยากต่อการติดตามเวลาและตำแหน่งที่ตัวแปรถูกเปลี่ยนแปลง
- ถ้าผู้ใช้เปลี่ยนตัวควบคุมแถบเลื่อน แล้วเปลี่ยนใจ พวกเขาสามารถเปลี่ยนแถบเลื่อนกลับมาเป็นค่าเดิมได้ และเหมือนกับไม่มีอะไรเปลี่ยนแปลง: แอปแสดงค่าตัวควบคุมเดียวกันกับก่อนหน้านี้ ไม่จำเป็นต้องทดลองและถามว่า "เกิดอะไรขึ้นถ้า" แบบเดียวกับใน Excel
โดยทั่วไป ถ้าคุณสามารถทำให้มีผลได้โดยการใช้สูตร คุณจะทำได้ดีกว่าเดิม ปล่อยให้โปรแกรมสูตรใน Power Fx ทำงานให้คุณ
ทราบว่าจะใช้ตัวแปรเมื่อไหร่
ลองเปลี่ยนตัวเพิ่มตัวอย่างของเราให้ดำเนินการแบบเครื่องการเพิ่มแบบเก่าด้วยผลรวมสะสม ถ้าคุณเลือกปุ่ม เพิ่ม คุณจะเพิ่มตัวเลขไปยังผลรวมสะสม ถ้าคุณเลือกปุ่ม ล้าง คุณจะตั้งค่าผลรวมสะสมเป็นศูนย์ใหม่
แสดง | รายละเอียด |
---|---|
เมื่อแอปเริ่มทำงาน ผลรวมการทำงานคือ 0 จุดสีแดงแสดงถึงนิ้วของผู้ใช้ในกล่องป้อนข้อความซึ่งผู้ใช้กรอก 77 |
|
ผู้ใช้เลือกปุ่ม เพิ่ม | |
77 จะถูกเพิ่มไปยังผลรวมที่ผลรวมการทำงาน ผู้ใช้เลือกปุ่ม เพิ่ม อีกครั้ง |
|
77 จะถูกเพิ่มเข้าไปในผลรวมการทำงาน อีกครั้งส่งผลให้ได้ผลเป็น 154 ผู้ใช้เลือกปุ่ม ล้าง |
|
ผลรวมการทำงานจะถูกรีเซ็ทเป็น 0 |
เครื่องมือการเพิ่มของเราใช้บางสิ่งที่ไม่มีอยู่ใน Excel: ปุ่ม ในแอปนี้ คุณไม่สามารถใช้เฉพาะสูตรในการคำนวณผลรวมสะสม เนื่องจากค่าจะขึ้นอยู่กับชุดการดำเนินการที่ผู้ใช้จะใช้ แต่เราจะต้องบันทึกและอัปเดตผลรวมสะสมด้วยตนเอง เครื่องมือการเขียนโปรแกรมส่วนใหญ่จัดเก็บข้อมูลนี้ใน ตัวแปร
บางครั้งคุณจำเป็นต้องใช้ตัวแปรเพื่อให้แอปของคุณทำงานตามที่คุณต้องการ แต่วิธีนี้มาพร้อมกับคำเตือน:
- คุณต้องอัปเดตผลรวมสะสมด้วยตนเอง การคำนวณใหม่อัตโนมัติจะไม่ทำงานสำหรับคุณ
- ผลรวมสะสมไม่สามารถคำนวณตามค่าของตัวควบคุมอื่นได้อีกต่อไป โดยจะขึ้นอยู่กับจำนวนครั้งที่ผู้ใช้เลือกปุ่ม เพิ่ม และค่าที่อยู่ในตัวควบคุมการป้อนขอความในแต่ละครั้ง ผู้ใช้ใส่ 77 และเลือก เพิ่ม สองครั้ง หรือระบุ 24 และ 130 สำหรับส่วนเพิ่มเติมแต่ละรายการใช่หรือไม่ คุณไม่สามารถบอกความแตกต่างหลังจากเมื่อผลรวมถึง 154
- การเปลี่ยนแปลงของผลรวมอาจมาจากหลายเส้นทาง ในตัวอย่างนี้ ทั้งปุ่ม เพิ่ม และ ล้าง สามารถอัปเดตผลรวมได้ ถ้าแอปไม่ทำงานตามที่คุณคิด ปุ่มใดที่เป็นสาเหตุของปัญหา
ใช้ตัวแปรส่วนกลาง
เมื่อต้องการเพิ่มเครื่องการเพิ่ม เราจำเป็นต้องมีตัวแปรในการเก็บผลรวมสะสม ตัวแปรที่ง่ายที่สุดเมื่อต้องการทำงานใน Power Fx คือ ตัวแปรส่วนกลาง
วิธีที่ตัวแปรส่วนกลางทำงาน:
- คุณตั้งค่าค่าของตัวแปรส่วนกลางด้วยฟังก์ชัน ตั้งค่า Set(MyVar, 1 ) ตั้งค่าตัวแปรทั่วโลก MyVar เป็นค่า 1
- คุณใช้ตัวแปรส่วนกลางโดยการอ้างอิงชื่อที่ใช้กับฟังก์ชัน ตั้งค่า ในกรณีนี้ MyVar จะคืนค่า 1
- ตัวแปรส่วนกลางสามารถเก็บค่า รวมถึงสตริง ตัวเลข เรกคอร์ด และ ตาราง
ลองสร้างเครื่องการเพิ่มใหม่โดยใช้ตัวแปรส่วนกลาง:
เพิ่มตัวควบคุม text input ที่ชื่อว่า TextInput1 และปุ่มสองปุ่มที่ชื่อว่า Button1 และ Button2
ตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม1 เป็น "เพิ่ม" และตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม2 เป็น "ล้าง"
เมื่อต้องการอัปเดตผลรวมสะสมทุกครั้งที่ผู้ใช้เลือกปุ่ม เพิ่ม ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้
ตั้งค่า(ผลรวมการทำงาน, ผลรวมการทำงาน + TextInput1.Text )
การที่สูตรนี้มีขึ้นทำให้ RunningTotal เป็นตัวแปรส่วนกลางที่เก็บตัวเลข เนื่องจากตัวดำเนินการ + คุณสามารถอ้างอิง RunningTotal ได้ทุกที่ในแอป เมื่อใดก็ตามที่ผู้ใช้เปิดแอปนี้ RunningTotal มีค่าเริ่มต้นเป็น ว่างเปล่า
ครั้งแรกที่ผู้ใช้เลือกปุ่ม เพิ่ม และ ตั้งค่า ทำงาน RunningTotal ถูกกำหนดเป็นค่า RunningTotal + TextInput1
เมื่อต้องการตั้งค่าผลรวมสะสมเป็น 0 ทุกครั้งที่ผู้ใช้เลือกปุ่ม ล้าง ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
ตั้งค่า(รวมทั้งหมด, 0 )
เพิ่มตัวควบคุม ป้ายชื่อ และตั้งค่าคุณสมบัติ ข้อความ เป็น ผลรวมสะสม
สูตรนี้จะถูกคำนวณใหม่โดยอัตโนมัติ และแสดงค่า ผลรวมสะสม เนื่องจากมีการเปลี่ยนแปลงตามปุ่มที่ผู้ใช้เลือก
แสดงตัวอย่างแอป และเรามีเครื่องการเพิ่มตามที่อธิบายไว้ข้างต้น ใส่ตัวเลขในกล่องข้อความ และกดปุ่ม เพิ่ม สองสามครั้ง เมื่อพร้อมแล้ว ให้กลับไปยังประสบการณ์การเขียนโดยใช้แป้น Esc
เมื่อต้องการแสดงค่าของตัวแปรส่วนกลาง ให้เลือกเมนู ไฟล์ และเลือก ตัวแปร ในบานหน้าต่างด้านซ้าย
เมื่อต้องการแสดงตำแหน่งที่มีการกำหนดและใช้ตัวแปร ให้เลือก
ชนิดของตัวแปร
Power Fx มีตัวแปรสองชนิด:
ชนิดตัวแปร | Scope | คำอธิบาย | ฟังก์ชั่นที่สร้างขึ้น |
---|---|---|---|
ตัวแปรส่วนกลาง | แอป | ใช้งานง่ายที่สุด เก็บตัวเลข สตริงข้อความ บูลีน เรกคอร์ด ตาราง และอื่น ๆ ที่สามารถอ้างอิงจากทุกที่ในแอป | ชุด |
คอลเลกชัน | แอป | เก็บตารางที่สามารถอ้างอิงจากทุกที่ในแอป ช่วยให้เนื้อหาของตารางได้รับการปรับเปลี่ยนแทนที่จะถูกตั้งค่าทั้งหมด สามารถบันทึกไปยังอุปกรณ์ในเครื่องเพื่อใช้ในภายหลังได้ | เก็บรวบรวม เคลียร์คอลเล็คท์ |
เมื่อใช้ใน Power Apps จะมีตัวแปรประเภทที่สาม
ชนิดตัวแปร | Scope | รายละเอียด | ฟังก์ชั่นที่สร้างขึ้น |
---|---|---|---|
ตัวแปรบริบท | หน้าจอ | เหมาะสำหรับการส่งค่าไปยังหน้าจอ เหมือนกับพารามิเตอร์ของกระบวนการในภาษาอื่น ๆ สามารถอ้างอิงได้จากหน้าจอเดียวเท่านั้น | อัปเดตบริบท นำทาง |
สร้างและลบตัวแปร
ตัวแปรทั้งหมดจะถูกสร้างขึ้นโดยปริยายเมื่อปรากฏในฟังก์ชัน ตั้งค่า UpdateContext นำทาง รวบรวม หรือ ClearCollect ในการประกาศตัวแปรและประเภท คุณต้องรวมตัวแปรนั้นไว้ในฟังก์ชั่นเหล่านี้ทุกที่ในแอปของคุณ ฟังก์ชั่นเหล่านี้ไม่มีการสร้างตัวแปร มีแค่เติมตัวแปรด้วยค่าเท่านั้น คุณไม่ต้องประกาศตัวแปรอย่างชัดเจน เหมือนกับในเครื่องมือการเขียนโปรแกรมอื่น และการพิมพ์ทั้งหมดนั้นมีค่าจากการใช้งาน
ตัวอย่างเช่น คุณอาจมีตัวควบคุมปุ่มที่มีสูตร OnSelect เท่ากับ Set(X, 1) สูตรนี้สร้าง X เป็นตัวแปรที่เป็นประเภทตัวเลข คุณสามารถใช้ X ในสูตรเป็นตัวเลขและตัวแปรนั้นมีค่าเป็น ว่างเปล่า หลังจากที่คุณเปิดแอป แต่ก่อนที่คุณจะเลือกปุ่ม เมื่อคุณเลือกปุ่ม คุณจะให้ค่า X เป็น 1
หากคุณเพิ่มปุ่มอื่นและตั้งค่าคุณสมบัติ OnSelect เพื่อ Set(X, "Hello") จะเกิดข้อผิดพลาดเนื่องจากประเภท (สตริงข้อความ) ไม่ตรงกับประเภทก่อนหน้า ตั้งค่า (ตัวเลข). คำจำกัดความโดยนัยของตัวแปรทั้งหมดจะต้องมีประเภทตรงกัน ทั้งหมดนี้เกิดขึ้นเพราะมี X ในสูตร ไม่ใช่เพราะสูตรใด ๆ เหล่านั้นมีการทำงานจริง
คุณลบตัวแปรโดยลบฟังก์ชั่น ตั้งค่า UpdateContext นำทาง รวบรวม หรือ ClearCollect ทั้งหมดที่สร้างตัวแปรโดยปริยาย หากไม่มีฟังก์ชันเหล่านี้ตัวแปรจะไม่มีอยู่ คุณต้องลบการอ้างอิงตัวแปรทั้งหมด เพราะจะทำให้เกิดข้อผิดพลาด
อายุการใช้งานตัวแปรและค่าเริ่มต้น
ตัวแปรทั้งหมดจะถูกเก็บไว้ในหน่วยความจำขณะที่แอปทำงาน หลังจากที่แอปปิด ค่าที่ถูกเก็บไว้ในตัวแปรจะสูญหาย
คุณสามารถเก็บเนื้อหาของตัวแปรในแหล่งข้อมูล โดยใช้ฟังก์ชั่น Patch หรือ รวบรวม คุณยังสามารถจัดเก็บค่าในคอลเล็กชันบนอุปกรณ์โดยใช้ฟังก์ชัน บันทึกข้อมูล
เมื่อผู้ใช้เปิดแอป ตัวแปรทั้งหมดมีค่าเริ่มต้นเป็น ว่างเปล่า
การอ่านตัวแปร
คุณใช้ชื่อของตัวแปรเพื่ออ่านค่า ตัวอย่างเช่น คุณสามารถกำหนดตัวแปรด้วยสูตรนี้:
Set( Radius, 12 )
จากนั้นคุณสามารถใช้ รัศมี ทุกที่ที่คุณสามารถใช้ตัวเลข และจะถูกแทนที่ด้วย 12:
Pi() * Power( Radius, 2 )
หากคุณให้ตัวแปรบริบทชื่อเดียวกันกับตัวแปรส่วนกลางหรือคอลเล็กชัน ตัวแปรบริบทจะมีความสำคัญกว่า อย่างไรก็ตาม คุณยังสามารถอ้างอิงตัวแปรส่วนกลางหรือคอลเลกชัน ถ้าคุณใช้ ตัวดำเนินการขจัดความคลุมเครือ[@Radius]
ใช้ตัวแปรบริบท (Power Apps เท่านั้น)
มาดูวิธีสร้างเครื่องการเพิ่มของเราโดยใช้ตัวแปรบริบทแทนตัวแปรส่วนกลาง
วิธีที่ตัวแปรบริบททำงาน:
- คุณสร้างและตั้งค่าตัวแปรบริบทโดยใช้ฟังก์ชัน UpdateContext หรือ Navigate เมื่อแอปเริ่มต้น ตัวแปรบริบททั้งหมดมีค่าเริ่มต้นเป็น ว่างเปล่า
- คุณอัปเดตตัวแปรบริบทด้วยเรกคอร์ด ในเครื่องมือการเขียนโปรแกรมอื่น คุณมักใช้ "=" สำหรับการกำหนด แบบเดียวกับใน "x = 1" สำหรับตัวแปรบริบท ให้ใช้ { x: 1 } แทน เมื่อคุณใช้ตัวแปรบริบท ให้ใช้ชื่อของโดยตรงโดยไม่มีไวยากรณ์ของเรกคอร์ด
- คุณยังสามารถตั้งค่าตัวแปรบริบทเมื่อคุณใช้ฟังก์ชัน Navigate บนหน้าจอ ถ้าคุณคิดว่าหน้าจอเป็นกระบวนการหรือ Subroutine ประเภทหนึ่ง วิธีการนี้เหมือนกับพารามิเตอร์ที่ส่งผ่านเครื่องมือการเขียนโปรแกรมอื่น ๆ
- ข้อยกเว้นสำหรับ Navigate ตัวแปรบริบทจะถูกจำกัดให้อยู่ในบริบทของหน้าจอเดียว ซึ่งเป็นที่มาของชื่อของพวกเขา คุณไม่สามารถใช้ หรือตั้งค่าได้จากภายนอกบริบทนี้
- ตัวแปรบริบทสามารถเก็บค่าใดก็ได้ รวมถึงสตริง ตัวเลข เรกคอร์ด และ ตาราง
ลองสร้างเครื่องมือการเพิ่มของเราโดยใช้ตัวแปรบริบท
เพิ่มตัวควบคุม text input ที่ชื่อว่า TextInput1 และปุ่มสองปุ่มที่ชื่อว่า Button1 และ Button2
ตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม1 เป็น "เพิ่ม" และตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม2 เป็น "ล้าง"
เมื่อต้องการอัปเดตผลรวมสะสมทุกครั้งที่ผู้ใช้เลือกปุ่ม เพิ่ม ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้
UpdateContext( { ยอดรวมทั้งหมด: ยอดรวมทั้งหมด + TextInput1.Text } )
การที่สูตรนี้มีขึ้นทำให้ RunningTotal เป็นตัวแปรบริบทที่เก็บตัวเลข เนื่องจากตัวดำเนินการ + คุณสามารถอ้างอิง RunningTotal ได้ทุกที่ในหน้าจอนี้ เมื่อใดก็ตามที่ผู้ใช้เปิดแอปนี้ RunningTotal มีค่าเริ่มต้นเป็น ว่างเปล่า
ครั้งแรกที่ผู้ใช้เลือกปุ่ม เพิ่ม และ UpdateContext ทำงาน RunningTotal ถูกกำหนดเป็นค่า RunningTotal + TextInput1
เมื่อต้องการตั้งค่าผลรวมสะสมเป็น 0 ทุกครั้งที่ผู้ใช้เลือกปุ่ม ล้าง ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
UpdateContext( { จำนวนรวมทั้งหมด: 0 } )
ใช้ UpdateContext กับสูตร UpdateContext( { RunningTotal: 0 } ) อีกครั้ง
เพิ่มตัวควบคุม ป้ายชื่อ และตั้งค่าคุณสมบัติ ข้อความ เป็น ผลรวมสะสม
สูตรนี้จะถูกคำนวณใหม่โดยอัตโนมัติ และแสดงค่า ผลรวมสะสม เนื่องจากมีการเปลี่ยนแปลงตามปุ่มที่ผู้ใช้เลือก
แสดงตัวอย่างแอป และเรามีเครื่องการเพิ่มตามที่อธิบายไว้ข้างต้น ใส่ตัวเลขในกล่องข้อความ และกดปุ่ม เพิ่ม สองสามครั้ง เมื่อพร้อมแล้ว ให้กลับไปยังประสบการณ์การเขียนโดยใช้แป้น Esc
คุณสามารถตั้งค่าค่าของตัวแปรบริบทขณะนำทางไปยังหน้าจอ ซึ่งมีประโยชน์สำหรับการส่ง "บริบท" จาก "พารามิเตอร์" จากหน้าจอหนึ่งไปยังอีกหน้าจอหนึ่ง เพื่อสาธิตเทคนิคนี้ ให้ใส่หน้าจอ ใส่ปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
นำทาง(หน้าจอ1, ไม่มี, { รวมการทำงาน: -1000 } )
กดปุ่ม Alt ค้างไว้ในขณะที่คุณเลือกปุ่มนี้ เพื่อแสดง Screen1 และตั้งค่าตัวแปรบริบท RunningTotal เป็น -1000
เมื่อต้องการแสดงค่าของตัวแปรบริบท ให้เลือกเมนู ไฟล์ และเลือก ตัวแปร ในบานหน้าต่างด้านซ้าย
เมื่อต้องการแสดงตำแหน่งที่มีการกำหนดและใช้ตัวแปรบริบท ให้เลือก
ใช้คอลเลคชัน
สุดท้าย มาลองดูการสร้างเครื่องมือการเพิ่มของเราด้วยคอลเลกชัน เนื่องจากคอลเลกชันจัดเก็บตารางที่ง่ายต่อการปรับเปลี่ยน เราจะทำให้เครื่องการเพิ่มนี้เก็บ "เทปกระดาษ" ของแต่ละค่าตามที่ใส่ไว้
วิธีที่คอลเลกชันทำงาน:
- สร้างและตั้งค่าคอลเลกชันโดยใช้ฟังก์ชัน ClearCollect คุณสามารถใช้ฟังก์ชัน สะสม แทน แต่จะต้องใช้ตัวแปรอื่นแทนที่ตัวแปรเก่าอย่างมีประสิทธิภาพ
- คอลเลกชันเป็นแหล่งข้อมูลประเภทหนึ่ง และตาราง เมื่อต้องการเข้าถึงค่าเดียวในคอลเลกชัน ให้ใช้ฟังก์ชัน อันดับแรก และแยกเขตข้อมูลหนึ่งออกจากระเบียนผลลัพธ์ ถ้าคุณใช้ค่าเดียวกับ ClearCollect ซึ่งจะเป็นเขตข้อมูล Value ตามตัวอย่างนี้
First(VariableName).Value
มาลองสร้างเครื่องการเพิ่มของเราใหม่โดยใช้คอลเลกชัน:
เพิ่มการควบคุม การนำเข้าข้อความ ที่ชื่อว่า TextInput1 และปุ่มสองปุ่มที่ชื่อว่า Button1 และ Button2
ตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม1 เป็น "เพิ่ม" และตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม2 เป็น "ล้าง"
เมื่อต้องการอัปเดตผลรวมสะสมทุกครั้งที่ผู้ใช้เลือกปุ่ม เพิ่ม ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้
Collect(กระดาษเทป, TextInput1.Text)
การที่สูตรนี้มีขึ้นทำให้ PaperTape เป็นคอลเลกชันที่เก็บตารางสตริงข้อความแบบคอลัมน์เดียว คุณสามารถอ้างอิง PaperTape ได้ทุกที่ในแอปนี้ เมื่อใดก็ตามที่ผู้ใช้เปิดแอปนี้ PaperTape เป็นตารางที่ว่างเปล่า
เมื่อสูตรนี้ทำงาน จะเพิ่มค่าใหม่ลงในตอนท้ายของคอลเลกชัน เนื่องจากเรากำลังเพิ่มค่าเดียว Collect จะวางค่าลงในตารางคอลัมน์เดียวโดยอัตโนมัติ และคอลัมน์มีชื่อว่า ค่า ซึ่งคุณจะใช้ในภายหลัง
เมื่อต้องการล้างเทปกระดาษ เมื่อผู้ใช้เลือกปุ่ม ล้าง ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
เคลียร์(กระดาษเทป)
เมื่อต้องการแสดงผลรวมสะสม ให้เพิ่มป้ายชื่อ และตั้งค่าคุณสมบัติ ข้อความ เป็นสูตรนี้:
ผลรวม(กระดาษเทป,ค่า)
เมื่อต้องการเรียกใช้เครื่องการเพิ่ม ให้กด F5 เพื่อเปิดการแสดงตัวอย่าง ใส่ตัวเลขในตัวควบคุม text input และเลือกปุ่ม
เมื่อต้องการกลับไปยังพื้นที่ทำงานเริ่มต้น ให้กดแป้น Esc
เมื่อต้องการแสดงเทปกระดาษ ให้แทรกตัวควบคุม ตารางข้อมูล และตั้งค่าคุณสมบัติ รายการ เป็นสูตรนี้:
กระดาษเทป
ในบานหน้าต่างด้านขวา ให้เลือก แก้ไขฟิลด์ จากนั้นเลือก เพิ่มฟิลด์ เลือกคอลัมน์ ค่า จากนั้นเลือก เพิ่ม เพื่อแสดง
เมื่อต้องการดูค่าในคอลเลกชันของคุณ ให้เลือก คอลเลกชัน บนเมนู ไฟล์
เมื่อต้องการจัดเก็บและเรียกใช้คอลเลกชันของคุณ ให้เพิ่มตัวควบคุมปุ่มเพิ่มเติมสองตัว และตั้งค่าคุณสมบัติ ข้อความ เป็น โหลด และ บันทึก ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม โหลด เป็นสูตรดังนี้:
Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )
คุณจำเป็นต้องล้างคอลเลกชันก่อน เนื่องจาก LoadData จะผนวกค่าที่จัดเก็บไว้ในตอนท้ายของคอลเลกชัน
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม บันทึก เป็นสูตรนี้:
บันทึกข้อมูล (PaperTape, "StoredPaperTape")
แสดงตัวอย่างอีกครั้งโดยการกดแป้น F5 ใส่ตัวเลขในตัวควบคุม text input และเลือกปุ่ม เลือกปุ่ม บันทึก ปิดและโหลดแอปใหม่ และเลือกปุ่ม โหลด เพื่อโหลดคอลเลกชันของคุณใหม่