PowerApps의 Errors 함수Errors function in PowerApps

데이터 원본의 이전 변경에 대한 오류 정보를 제공합니다.Provides error information for previous changes to a data source.


데이터 원본의 레코드가 변경되면 오류가 발생할 수 있습니다.Errors can happen when a record of a data source is changed. 네트워크 중단, 부적절한 권한 및 편집 충돌을 포함한 여러 가지 원인이 있을 수 있습니다.Many causes are possible, including network outages, inadequate permissions, and edit conflicts.

Patch 함수 및 다른 데이터 함수는 오류를 직접 반환하지 않습니다.The Patch function and other data functions don't directly return errors. 대신 해당 작업의 결과를 반환합니다.Instead they return the result of their operation. 데이터 함수가 실행된 후에 Errors 함수를 사용하여 오류의 세부 정보를 얻을 수 있습니다.After a data function executes, you can use the Errors function to obtain the details of any errors. IsEmpty( Errors ( ... ) ) 수식에 [IsEmpty] 함수를 사용하여 오류가 있는지 확인할 수 있습니다.You can check for the existence of errors with the [IsEmpty] function in the formula IsEmpty( Errors ( ... ) ).

ValidateDataSourceInfo 함수를 사용하여 오류가 발생하기 전에 몇 가지 오류를 방지할 수 있습니다.You can avoid some errors before they happen by using the Validate and DataSourceInfo functions. 오류를 처리하고 방지하는 방법에 대한 더 많은 제안 사항은 데이터 원본 작업을 참조하세요.See working with data sources for more suggestions on how to work with and avoid errors.


Errors 함수는 다음 이 포함된 오류의 테이블을 반환합니다.The Errors function returns a table of errors that contains the following columns:

  • 레코드 -Record. 오류가 발생한 데이터 원본의 레코드입니다.The record in the data source that had the error. 레코드를 만드는 동안 오류가 발생하면 이 열은 공백입니다.If the error occurred during the creation of a record, this column will be blank.
  • -Column. 단일 열에 원인이 있는 오류인 경우 오류가 발생한 열입니다.The column that caused the error, if the error can be attributed to a single column. 그렇지 않으면 공백이 됩니다.If not, this will be blank.
  • 메시지 -Message. 오류에 대한 설명입니다.A description of the error. 이 오류 문자열은 최종 사용자에게 표시될 수 있습니다.This error string can be displayed for the end user. 이 메시지는 데이터 원본에서 생성될 수 있고, 긴 메시지일 수도 있으며, 사용자에게 아무 의미가 없는 원시 열 이름을 포함할 수 있습니다.Be aware that this message may be generated by the data source and could be long and contain raw column names that may not have any meaning to the user.
  • 오류 -Error. 오류를 해결할 수 있도록 수식에 사용할 수 있는 다음과 같은 오류 코드입니다.An error code that can be used in formulas to help resolve the error:
ErrorKindErrorKind 설명Description
ErrorKind.ConflictErrorKind.Conflict 동일한 레코드에 대한 또 다른 변경으로 인해 변경 충돌이 발생했습니다.Another change was made to the same record, resulting in a change conflict. Refresh 함수를 사용하여 레코드를 다시 로드한 다음, 다시 변경합니다.Use the Refresh function to reload the record and try the change again.
ErrorKind.ConstraintViolationErrorKind.ConstraintViolation 하나 이상의 제약 조건을 위반했습니다.One or more constraints have been violated.
ErrorKind.CreatePermissionErrorKind.CreatePermission 레코드를 만들려고 했지만 현재 사용자에게 레코드를 만들 수 있는 권한이 없습니다.An attempt was made to create a record, and the current user doesn't have permission to create records.
ErrorKind.DeletePermissionErrorKind.DeletePermission 레코드를 삭제하려고 했지만 현재 사용자에게 레코드를 삭제할 수 있는 권한이 없습니다.An attempt was made to delete a record, and the current user doesn't have permission to delete records.
ErrorKind.EditPermissionErrorKind.EditPermission 레코드를 편집하려고 했지만 현재 사용자에게 레코드를 편집할 수 있는 권한이 없습니다.An attempt was made to edit a record, and the current user doesn't have permission to edit records.
ErrorKind.GeneratedValueErrorKind.GeneratedValue 데이터 원본에서 자동으로 생성하는 열을 변경하려고 했습니다.An attempt was made to change a column that the data source generates automatically.
ErrorKind.MissingRequiredErrorKind.MissingRequired 레코드에서 필수 열에 대한 값이 누락되었습니다.The value for a required column is missing from the record.
ErrorKind.NoneErrorKind.None 오류가 없습니다.There is no error.
ErrorKind.NotFoundErrorKind.NotFound 레코드를 편집하거나 삭제하려고 했지만 레코드를 찾을 수 없습니다.An attempt was made to edit or delete a record, but the record couldn't be found. 다른 사용자가 해당 레코드를 변경했을 수 있습니다.Another user may have changed the record.
ErrorKind.ReadOnlyValueErrorKind.ReadOnlyValue 읽기 전용 열을 변경하려고 했습니다.An attempt was made to change a column that's read only.
ErrorKind.SyncErrorKind.Sync 데이터 원본에서 오류가 보고되었습니다.An error was reported by the data source. 자세한 내용은 메시지 열을 확인합니다.Check the Message column for more information.
ErrorKind.UnknownErrorKind.Unknown 오류가 있었지만 알 수 없는 종류입니다.There was an error, but of an unknown kind.
ErrorKind.ValidationErrorKind.Validation 다른 종류 중 하나에 적합하지 않은 일반적인 유효성 검사 문제가 발견되었습니다.There was a general validation issue detected, that did not fit one of the other kinds.

함수에 Record 인수를 제공하여 전체 데이터 원본 또는 선택한 행에 대한 오류를 반환할 수 있습니다.Errors can be returned for the entire data source, or for only a selected row by providing the Record argument to the function.

예를 들어 레코드를 만들 수 없는 경우 Patch 또는 다른 데이터 함수에서 공백 값을 반환할 수 있습니다.Patch or another data function may return a blank value if, for example, a record couldn't be created. 공백Errors에 전달할 수 있으며, 이러한 경우 적절한 오류 정보를 반환합니다.You can pass blank to Errors, and it will return appropriate error information in these cases. 이후 동일한 데이터 원본에서 데이터 함수를 사용하면 이 오류 정보가 지워집니다.Subsequent use of data functions on the same data source will clear this error information.

오류가 없으면 Errors에서 반환하는 테이블은 비어 있으며, IsEmpty 함수에서 테스트할 수 있습니다.If there are no errors, the table that Errors returns will be empty and can be tested with the IsEmpty function.


Errors( DataSource [, Record ] )Errors( DataSource [, Record ] )

  • DataSource – 필수 항목이며,DataSource – Required. 오류를 반환하려는 데이터 원본입니다.The data source for which you want to return errors.
  • Record – 선택 항목이며,Record – Optional. 오류를 반환하려는 특정 레코드입니다.A specific record for which you want to return errors. 이 인수를 지정하지 않으면 함수에서 전체 데이터 원본에 대한 오류를 반환합니다.If you don't specify this argument, the function returns errors for the entire data source.


단계별 예제Step by Step

이 예제에서는 다음과 같은 IceCream 데이터 원본을 사용합니다.For this example, we'll be working with the IceCream data source:

사용자가 앱을 통해 초콜릿 레코드를 데이터 입력 양식에 로드한 다음, Quantity 값을 90으로 변경합니다.Through the app, a user loads the Chocolate record into a data-entry form and then changes the value of Quantity to 90. 사용할 레코드는 다음과 같은 EditRecord 컨텍스트 변수에 배치됩니다.The record to be worked with is placed in the context variable EditRecord:

  • UpdateContext( { EditRecord: First( Filter( IceCream, Flavor = "Chocolate" ) ) } )UpdateContext( { EditRecord: First( Filter( IceCream, Flavor = "Chocolate" ) ) } )

데이터 원본에서 이 변경 작업을 수행하려면 Patch 함수를 다음과 같이 사용합니다.To make this change in the data source, the Patch function is used:

  • Patch( IceCream, EditRecord, Gallery.Updates )Patch( IceCream, EditRecord, Gallery.Updates )

여기서 Gallery.Updates{Quantity: 90}, 때문만 수량 속성이 수정 되었습니다.where Gallery.Updates evaluates to { Quantity: 90 }, since only the Quantity property has been modified.

아쉽게도 Patch 함수가 호출되기 직전에 다른 사람이 초콜릿에 대한 Quantity를 80으로 수정했습니다.Unfortunately, just before the Patch function was invoked, somebody else modifies the Quantity for Chocolate to 80. PowerApps는 이를 감지하고 충돌하는 변경이 발생하지 않도록 합니다.PowerApps will detect this and not allow the conflicting change to occur. 다음 수식을 사용하여 이 상황을 확인할 수 있습니다.You can check for this situation with the formula:

  • IsEmpty( Errors( IceCream, EditRecord ) )IsEmpty( Errors( IceCream, EditRecord ) )

여기서는 Errors 함수에서 다음 테이블을 반환했으므로 false가 반환됩니다.which returns false, because the Errors function returned the following table:

레코드Record Column 메시지Message 오류Error
{Flavor: "초콜릿", Quantity: 100 }{ Flavor: "Chocolate", Quantity: 100 } 공백blank "다른 사용자가 수정하려는 레코드를 수정했습니다."Another user has modified the record that you're trying to modify. 레코드를 다시 로드하여 다시 시도하십시오."Please reload the record and try again." ErrorKind.ConflictErrorKind.Conflict

양식에 레이블을 배치하여 사용자에게 이 오류를 표시할 수 있습니다.You can place a label on the form to show this error to the user.

  • 오류를 표시하려면 레이블의 Text 속성을 다음 수식으로 설정합니다.To show the error, set the label's Text property to this formula:
    Label.Text = First(Errors( IceCream, EditRecord )).MessageLabel.Text = First(Errors( IceCream, EditRecord )).Message

사용자가 충돌을 효율적으로 해결할 수 있도록 양식에 다시 로드 단추를 추가할 수도 있습니다.You can also add a Reload button on the form, so that the user can efficiently resolve the conflict.

  • 충돌이 발생한 경우에만 단추를 표시하려면 단추의 Visible 속성을 다음 수식으로 설정합니다.To show the button only when a conflict has occurred, set the button's Visible property to this formula:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )!IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • 사용자가 단추를 선택하는 변경 내용을 되돌리려면 OnSelect 속성을 다음 수식으로 설정합니다.To revert the change which the user selects the button, set its OnSelect property to this formula:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )ReloadButton.OnSelect = Revert( IceCream, EditRecord )