แชร์ผ่าน


ฟังก์ชัน Update และ UpdateIf

ใช้กับ: แอปพื้นที่ทำงาน แอปแบบจำลอง

อัปเดต เรกคอร์ด ใน แหล่งข้อมูล

Description

ฟังก์ชัน Update

ใช้ฟังก์ชัน Update เพื่อแทนที่ทั้งเรกคอร์ดในแหล่งข้อมูล ในทางกลับกัน ฟังก์ชัน UpdateIf และ Patch จะปรับเปลี่ยนค่าอย่างน้อยหนึ่งรายการในเรกคอร์ด ทิ้งค่าอื่นไว้ลำพัง

สำหรับ คอลเลกชัน ทั้งเรกคอร์ดต้องตรงกัน คอลเลกชันอนุญาตให้ทำเรกคอร์ดซ้ำได้ หลายเรกคอร์ดจึงอาจตรงกัน คุณสามารถใช้อาร์กิวเมนต์ RemoveFlags.All เพื่ออัปเดตสำเนาของเรกคอร์ดทั้งหมด มิฉะนั้น จะอัปเดตสำเนาของเรกคอร์ดเดียวเท่านั้น

ถ้าแหล่งข้อมูลสร้างค่าของคอลัมน์โดยอัตโนมัติ ค่าของ คอลัมน์ นั้นต้องได้รับการยืนยันอีกครั้ง

ฟังก์ชัน UpdateIf

ใช้ฟังก์ชัน UpdateIf เพื่อปรับเปลี่ยนค่าอย่างน้อยหนึ่งรายการในอย่างน้อยหนึ่งเรกคอร์ดที่ตรงกับอย่างน้อยหนึ่งเงื่อนไข เงื่อนไขสามารถเป็นสูตรใดก็ได้ที่ส่งผลให้เกิด จริง หรือ เท็จ และสามารถอ้างอิงคอลัมน์ของแหล่งข้อมูลตามชื่อ ฟังก์ชันจะประเมินเงื่อนไขสำหรับแต่ละเรกคอร์ด และปรับเปลี่ยนเรกคอร์ดใดๆ ที่ผลลัพธ์เป็น จริง

เมื่อต้องการระบุการปรับเปลี่ยน ให้ใช้เรกคอร์ดการเปลี่ยนแปลงที่มีค่าคุณสมบัติใหม่ ถ้าคุณระบุเรกคอร์ดการเปลี่ยนแปลงแบบอินไลน์นี้ภายในวงเล็บปีกกา สูตรของคุณสมบัติสามารถอ้างอิงคุณสมบัติของเรกคอร์ดที่ถูกปรับเปลี่ยน คุณสามารถใช้ลักษณะการทำงานนี้เพื่อปรับเปลี่ยนเรกคอร์ดโดยยึดตามสูตร

คล้ายกับ UpdateIf คุณยังสามารถใช้ฟังก์ชัน Patch เพื่อเปลี่ยนแปลงคอลัมน์ที่ระบุของเรกคอร์ดโดยไม่กระทบกับคอลัมน์อื่นได้

ทั้ง Update และ UpdateIf ส่งกลับแหล่งข้อมูลที่ปรับเปลี่ยนแล้วเป็น ตาราง คุณต้องใช้ฟังก์ชันใดก็ได้ใน สูตรของลักษณะการทำงาน

การมอบหมาย

เมื่อใช้กับแหล่งข้อมูล ฟังก์ชันเหล่านี้ไม่สามารถมอบสิทธิ์ได้ เฉพาะแหล่งข้อมูลส่วนแรกเท่านั้นที่จะมีการเรียกข้อมูลแล้วมีการนำฟังก์ชันไปใช้ สิ่งนี้อาจไม่แสดงข้อมูลการดำเนินการทั้งหมด คำเตือนอาจปรากฏขึ้นในขณะเขียน เพื่อเตือนคุณถึงข้อจำกัดนี้

การสนับสนุนการมอบหมาย (ทดลอง)

การสนับสนุนการมอบหมายสำหรับ UpdateIf และ RemoveIf อยู่ในการแสดงตัวอย่างการทดลอง (ปิดค่าเริ่มต้น) สำหรับแหล่งข้อมูลที่สนับสนุน หากแหล่งข้อมูลไม่รองรับฟีเจอร์นี้ Power Apps จะส่งการสอบถามไปยังเซิร์ฟเวอร์ และดึงข้อมูลทั้งหมดที่ตรงกับนิพจน์ตัวกรองสูงสุดไม่เกิน 500, 2000 หรือขนาดหน้าข้อมูล จากนั้นจะอัปเดตบันทึกเหล่านั้นและส่งกลับไปยังเซิร์ฟเวอร์เพื่อทำการอัปเดต

ไวยากรณ์

Update( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )

  • DataSource – จำเป็น แหล่งข้อมูลที่มีเรกคอร์ดที่คุณต้องการแทนที่
  • OldRecord – จำเป็น เรกคอร์ดที่จะแทนที่
  • NewRecord – จำเป็น เรกคอร์ดแทนที่ นี่ไม่ใช่เรกคอร์ดที่มีการเปลี่ยนแปลง ทั้งเรกคอร์ดจะถูกแทนที่ และคุณสมบัติที่หายไปจะ ว่างเปล่า
  • RemoveFlags.All – เลือกได้ ในคอลเลกชัน เรกคอร์ดเดียวกันอาจปรากฏขึ้นมากกว่าหนึ่งครั้ง ระบุอาร์กิวเมนต์ RemoveFlags.All เพื่ออัปเดตสำเนาของเรกคอร์ดทั้งหมด

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – จำเป็น แหล่งข้อมูลที่มีเรกคอร์ดที่คุณต้องการปรับเปลี่ยน
  • เงื่อนไข - จำเป็นต้องมี สูตรที่ประเมินเป็น จริง สำหรับเรกคอร์ดที่คุณต้องการปรับเปลี่ยน คุณสามารถใช้ชื่อคอลัมน์ว่า DataSource ในสูตรได้
  • ChangeRecord(s) - จำเป็นต้องมี สำหรับแต่ละเงื่อนไขที่สอดคล้องกัน เรกคอร์ดที่มีการเปลี่ยนแปลงของค่าคุณสมบัติใหม่ที่จะนำไปใช้กับเรกคอร์ด DataSource ที่ตรงตามเงื่อนไข ถ้าคุณระบุเรกคอร์ดแบบอินไลน์โดยใช้พร้อมกับวงเล็บปีกกา ค่าคุณสมบัติของเรกคอร์ดที่มีอยู่จะสามารถใช้ในสูตรของคุณสมบัติได้

ตัวอย่าง

ในตัวอย่างเหล่านี้ คุณจะแทนที่หรือปรับเปลี่ยนเรกคอร์ดในแหล่งข้อมูลที่มีชื่อว่า IceCream และที่เริ่มต้นด้วยข้อมูลในตารางนี้:

ตัวอย่างไอศกรีม

สูตร รายละเอียด ผลลัพธ์
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
แทนที่เรกคอร์ดจากแหล่งข้อมูล แทนที่เรกคอร์ด

แหล่งข้อมูล ไอศครีม ได้ถูกปรับเปลี่ยนแล้ว
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) ปรับเปลี่ยนเรกคอร์ดที่มี ปริมาณ ที่มากกว่า 175 ฟิลด์ ปริมาณ จะถูกเพิ่มค่าครั้งละ 10 และจะไม่ปรับเปลี่ยนฟิลด์อื่น ปรับเปลี่ยนเรกคอร์ด

แหล่งข้อมูล ไอศครีม ได้ถูกปรับเปลี่ยนแล้ว
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
แทนที่เรกคอร์ดจากแหล่งข้อมูล คุณสมบัติ Quantity ยังไม่อยู่ในเรกคอร์ดแทนที่ คุณสมบัตินั้นจึงจะ ว่างเปล่า ในผลลัพธ์ แทนที่เรกคอร์ดเมื่อไม่ได้ระบุปริมาณ

แหล่งข้อมูล ไอศครีม ได้ถูกปรับเปลี่ยนแล้ว
UpdateIf( IceCream, true, { Quantity: 0 } ) ตั้งค่าของคุณสมบัติ Quantity สำหรับเรกคอร์ดทั้งหมดในแหล่งข้อมูลเป็น 0 กำหนดปริมาณสำหรับทั้งหมดเป็น 0

แหล่งข้อมูล ไอศครีม ได้ถูกปรับเปลี่ยนแล้ว

ทีละขั้นตอน

  1. นำเข้าหรือสร้างคอลเลกชันชื่อว่า Inventory แล้วแสดงในแกลเลอรีตามที่ แสดงข้อมูลในแกลเลอรี อธิบายไว้

  2. ตั้งชื่อแกลเลอรีว่า ProductGallery

  3. เพิ่มแถบเลื่อนชื่อว่า UnitsSold แล้วตั้งค่าคุณสมบัติ Max ลงในนิพจน์นี้:
    ProductGallery.Selected.UnitsInStock

  4. เพิ่มปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
    UpdateIf (สินค้าคงคลัง, ชื่อผลิตภัณฑ์ = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. กด F5 เลือกผลิตภัณฑ์ในแกลเลอรี ระบุค่าด้วยแถบเลื่อน แล้วเลือกปุ่ม

    จำนวนของหน่วยในสินค้าคงคลังสำหรับผลิตภัณฑ์ทีคุณระบุลดลงตามจำนวนที่คุณระบุ