다음을 통해 공유


Update 및 UpdateIf 함수

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

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

Description

Update 함수

이 함수를 Update 사용하여 데이터 원본의 전체 레코드를 대체합니다. 반면에 UpdateIf Patch 함수와 패치 함수는 레코드에서 하나 이상의 값을 수정하고 다른 값은 그대로 둡니다.

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

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

UpdateIf 함수

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

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

UpdateIf마찬가지로 Patch 함수를 사용하여 다른 열에 영향을 주지 않고 레코드의 특정 열을 변경할 수도 있습니다.

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

위임

이러한 함수는 데이터 원본에 위임하지 않습니다. 그러나 RemoveIfUpdateIf 로컬에서 작동하여 최대 500/2000개의 레코드까지 위임을 시뮬레이트합니다. 500/2000 레코드의 비 위임 제한을 초과하여 레코드를 점진적으로 줄입니다. If 조건을 충족하는 레코드가 수집됩니다. 일반적으로 최대 500/2000개의 레코드가 별도로 수집된 다음 실행당 수정됩니다. 그러나 함수가 평가를 위해 더 많은 레코드에 액세스할 수 있으므로 기존 로컬 데이터 캐시가 큰 경우 더 많은 레코드가 업데이트될 수 있습니다. 데이터 원본의 초기 부분만 검색된 다음 함수가 적용됩니다. 전체 그림을 나타내지 않을 수 있습니다. 이 제한을 상기시키기 위해 작성하는 동안 경고가 나타날 수 있습니다.

구문

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

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

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

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

예제

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

IceCream 예.

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

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

IceCream 데이터 원본이 수정되었습니다.
Update( IceCream,
LookUp( 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 키를 눌러 갤러리에서 제품을 선택하고, 슬라이더로 값을 지정한 다음 단추를 선택합니다.

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