Update 및 UpdateIf 함수

적용 대상: 캔버스 앱 모델 기반 앱

데이터 원본레코드를 업데이트합니다.

Description

Update 함수

Update 함수를 사용하여 데이터 원본의 전체 레코드를 교체합니다. 반대로 UpdateIfPatch 함수는 다른 값은 그대로 두면서 레코드에서 하나 이상의 값을 수정합니다.

컬렉션의 경우 전체 레코드가 일치해야 합니다. 컬렉션은 중복 레코드를 허용하므로 여러 레코드가 일치할 수 있습니다. RemoveFlags.All 인수를 사용하여 레코드의 모든 복사본을 업데이트할 수 있거나 레코드 중 복사본 하나만 업데이트할 수 있습니다.

데이터 원본에서 열의 값이 자동으로 생성되는 경우 해당 의 값을 재확인해야 합니다.

UpdateIf 함수

UpdateIf 함수를 사용하여 하나 이상의 레코드에서 하나 이상의 조건에 일치하는 하나 이상의 값을 수정합니다. 조건은 결과가 true 또는 false가 되는 수식이 될 수 있고 이름으로 데이터 원본의 열을 참조할 수 있습니다. 함수는 각 레코드에 대한 조건을 계산하고 결과가 true인 레코드를 수정합니다.

수정을 지정하려면 새 속성 값을 포함하는 변경 레코드를 사용하십시오. 중괄호를 사용하여 이 변경 레코드 인라인을 제공하는 경우 속성 수식은 수정되는 레코드의 속성을 참조할 수 있습니다. 이 동작을 사용하여 수식에 따라 레코드를 수정할 수 있습니다.

UpdateIf와 유사하게 Patch 함수를 사용하여 다른 열에 영향을 주지 않으면서 레코드의 특정 열을 변경할 수 있습니다.

UpdateUpdateIf는 모두 수정된 데이터 원본을 테이블로 반환합니다. 두 함수 모두 동작 수식에서 사용해야 합니다.

위임

데이터 원본과 함께 사용할 경우 이러한 함수를 위임할 수 없습니다. 데이터 원본의 첫 번째 부분만 검색된 다음 함수가 적용됩니다. 이는 전체 스토리를 나타내지 않을 수 있습니다. 이 제한 사항을 상기시키기 위해 작성 시 경고가 표시될 수 있습니다.

위임 지원(실험적)

UpdateIf 및 RemoveIf에 대한 위임 지원은 이제 이를 지원하는 데이터 원본에 대해 실험적 프리뷰(기본값 OFF) 상태입니다. 데이터 원본이 이 기능을 지원하지 않는 경우 Power Apps는 이제 서버에 쿼리를 보내고 최대 500, 2000 또는 데이터 페이지 크기까지 필터 식과 일치하는 모든 데이터를 검색합니다. 그런 다음 해당 레코드를 업데이트하고 각 레코드를 업데이트할 서버로 다시 보냅니다.

구문

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

  • DataSource – 필수 항목입니다. 교체할 레코드가 포함된 데이터 원본입니다.
  • OldRecord – 필수 항목입니다. 교체할 레코드입니다.
  • NewRecord – 필수 항목입니다. 대체 레코드입니다. 변경 레코드가 아닙니다. 전체 레코드가 변경되고, 누락된 속성에 blank가 포함됩니다.
  • RemoveFlags.All – 선택 항목입니다. 컬렉션에서 동일한 레코드가 두 번 이상 나타날 수 있습니다. RemoveFlags.All 인수를 지정하여 레코드의 모든 복사본을 업데이트합니다.

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

  • DataSource – 필수 항목입니다. 레코드 또는 제거할 레코드가 포함된 데이터 원본입니다.
  • Condition(s) - 필수 항목입니다. 레코드 또는 수정할 레코드에 대해 true로 평가되는 수식입니다. 수식에서 DataSource의 열 이름을 사용할 수 있습니다.
  • ChangeRecord(s) – 필수 항목입니다. 각 해당 조건에서 조건을 충족하는 DataSource의 레코드에 적용할 새 속성 값의 변경 레코드입니다. 중괄호를 사용하여 레코드 인라인을 제공하는 경우 기존 레코드의 속성 값을 속성 수식에 사용할 수 있습니다.

예제

이러한 예제에서는 다음 테이블의 데이터로 시작되며 이름이 IceCream인 데이터 원본의 레코드를 교체 또는 수정합니다.

IceCream 예.

수식 설명 결과
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
데이터 원본에서 레코드를 교체합니다. 레코드 교체.

IceCream 데이터 원본이 수정되었습니다.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Quantity175보다 큰 레코드를 수정합니다. Quantity 필드는 10씩 증가하고 다른 필드는 수정되지 않습니다. 레코드 수정.

IceCream 데이터 원본이 수정되었습니다.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
데이터 원본에서 레코드를 교체합니다. Quantity 속성이 대체 레코드에 제공되지 않아 해당 속성이 결과에서 blank로 나타납니다. 수량이 공급되지 않으면 레코드 교체.

IceCream 데이터 원본이 수정되었습니다.
UpdateIf( IceCream, true, { Quantity: 0 } ) 데이터 원본의 모든 레코드에 대한 Quantity 속성의 값을 0으로 설정합니다. 모든 수량을 0으로 설정.

IceCream 데이터 원본이 수정되었습니다.

단계별

  1. Inventory라는 컬렉션을 가져오거나 만들고, 갤러리에 데이터 표시의 설명에 따라 갤러리에 표시합니다.

  2. 갤러리의 이름을 ProductGallery로 지정합니다.

  3. UnitsSold라는 슬라이더를 추가하고, 해당 Max 속성을 다음 식으로 설정합니다.
    ProductGallery.Selected.UnitsInStock

  4. 단추를 추가하고 OnSelect 속성을 이 수식으로 설정합니다.
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. F5 키를 눌러 갤러리에서 제품을 선택하고, 슬라이더로 값을 지정한 다음 단추를 선택합니다.

    지정한 제품의 재고에서 단위 수가 지정한 크기로 감소합니다.