PowerApps'teki Errors işleviErrors function in PowerApps

Bir veri kaynağında önceden yapılan değişikliklere ilişkin hata bilgilerini sağlar.Provides error information for previous changes to a data source.

Genel BakışOverview

Bir veri kaynağı kaydı değiştirildiğinde hatalar oluşabilir.Errors can happen when a record of a data source is changed. Ağ kesintileri, yetersiz izinler ve düzenleme çakışmaları gibi birçok neden mümkündür.Many causes are possible, including network outages, inadequate permissions, and edit conflicts.

Patch işlevi ve diğer veri işlevleri doğrudan hata döndürmez.The Patch function and other data functions don't directly return errors. Bunun yerine, işlemlerinin sonucunu döndürürler.Instead they return the result of their operation. Bir veri işlevi yürütüldükten sonra hataların ayrıntılarını almak için Errors işlevini kullanabilirsiniz.After a data function executes, you can use the Errors function to obtain the details of any errors. IsEmpty( Errors ( ... ) ) formülünde [IsEmpty] işlevini kullanarak hata olup olmadığını denetleyebilirsiniz.You can check for the existence of errors with the [IsEmpty] function in the formula IsEmpty( Errors ( ... ) ).

Validate ve DataSourceInfo işlevlerini kullanarak bazı hataların oluşmasını önleyebilirsiniz.You can avoid some errors before they happen by using the Validate and DataSourceInfo functions. Hatalarla nasıl çalışacağınız ve hatalardan nasıl kaçınacağınız ile ilgili daha fazla öneri için bkz. veri kaynaklarıyla çalışma.See working with data sources for more suggestions on how to work with and avoid errors.

AçıklamaDescription

Errors işlevi, şu sütunları içeren bir hata tablosu döndürür:The Errors function returns a table of errors that contains the following columns:

  • Record.Record. Veri kaynağında hatanın oluştuğu kayıt.The record in the data source that had the error. Hata kayıt oluşturma sırasında oluştuysa bu sütun boş değer alır.If the error occurred during the creation of a record, this column will be blank.
  • Column.Column. Hataya neden olan sütun (hata tek bir sütunla ilişkilendirilebiliyorsa).The column that caused the error, if the error can be attributed to a single column. Aksi halde, bu sütun boş değer alır.If not, this will be blank.
  • Message.Message. Hatanın açıklaması.A description of the error. Bu hata dizesi son kullanıcı için görüntülenebilir.This error string can be displayed for the end user. Bu iletinin bir veri kaynağı tarafından oluşturulabileceğini ve uzun olmanın yanı sıra kullanıcıya bir anlam ifade etmeyen ham satır adları içerebileceğini göz önünde bulundurun.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.Error. Hatanın çözülmesi için formüllerde kullanılabilen bir hata kodu:An error code that can be used in formulas to help resolve the error:
ErrorKindErrorKind AçıklamaDescription
ErrorKind.ConflictErrorKind.Conflict Aynı kayıtta başka bir değişiklik daha yapılmıştır ve bu, bir değişiklik çakışmasına neden olmuştur.Another change was made to the same record, resulting in a change conflict. Kaydı yeniden yüklemek için Refresh işlevini kullanın ve değişikliği tekrar deneyin.Use the Refresh function to reload the record and try the change again.
ErrorKind.ConstraintViolationErrorKind.ConstraintViolation Bir veya daha fazla kısıtlama ihlal edilmiştir.One or more constraints have been violated.
ErrorKind.CreatePermissionErrorKind.CreatePermission Kayıt oluşturma girişiminde bulunulmuştur ve geçerli kullanıcının kayıt oluşturma izni yoktur.An attempt was made to create a record, and the current user doesn't have permission to create records.
ErrorKind.DeletePermissionErrorKind.DeletePermission Kayıt oluşturma girişiminde bulunulmuştur ve geçerli kullanıcının kayıt silme izni yoktur.An attempt was made to delete a record, and the current user doesn't have permission to delete records.
ErrorKind.EditPermissionErrorKind.EditPermission Kayıt düzenleme girişiminde bulunulmuştur ve geçerli kullanıcının kayıt düzenleme izni yoktur.An attempt was made to edit a record, and the current user doesn't have permission to edit records.
ErrorKind.GeneratedValueErrorKind.GeneratedValue Veri kaynağının otomatik olarak oluşturduğu bir sütunu değiştirme girişiminde bulunulmuştur.An attempt was made to change a column that the data source generates automatically.
ErrorKind.MissingRequiredErrorKind.MissingRequired Gerekli bir sütuna ilişkin değer kayıtta mevcut değildir.The value for a required column is missing from the record.
ErrorKind.NoneErrorKind.None Hata yoktur.There is no error.
ErrorKind.NotFoundErrorKind.NotFound Bir kaydı düzenleme veya silme girişiminde bulunulmuş ancak kayıt bulunamamıştır.An attempt was made to edit or delete a record, but the record couldn't be found. Başka bir kullanıcı, kaydı değiştirmiş olabilir.Another user may have changed the record.
ErrorKind.ReadOnlyValueErrorKind.ReadOnlyValue Salt okunur bir sütunu değiştirme girişiminde bulunulmuştur.An attempt was made to change a column that's read only.
ErrorKind.SyncErrorKind.Sync Veri kaynağı tarafından bir hata bildirilmiştir.An error was reported by the data source. Daha fazla bilgi için İleti sütununu kontrol edin.Check the Message column for more information.
ErrorKind.UnknownErrorKind.Unknown Bilinmeyen türde bir hata oluşmuştur.There was an error, but of an unknown kind.
ErrorKind.ValidationErrorKind.Validation Diğer türlere dahil olmayan, genel bir doğrulama sorunu algılanmıştır.There was a general validation issue detected, that did not fit one of the other kinds.

Hatalar, veri kaynağının tamamı için veya işlevde Record bağımsız değişkeni kullanılarak yalnızca seçili bir satır için döndürülebilir.Errors can be returned for the entire data source, or for only a selected row by providing the Record argument to the function.

Kayıt oluşturulamaması halinde Patch veya başka bir veri işlevi boş değer döndürebilir.Patch or another data function may return a blank value if, for example, a record couldn't be created. Errors işlevine boş değer geçirebilirsiniz. Böyle durumlarda ilgili hata bilgileri döndürülür.You can pass blank to Errors, and it will return appropriate error information in these cases. Veri işlevlerinin, aynı veri kaynağında art arda kullanılması durumunda bu hata bilgileri temizlenir.Subsequent use of data functions on the same data source will clear this error information.

Hiç hata yoksa Errors işlevinin döndürdüğü tablo boş olur ve IsEmpty işleviyle test edilebilir.If there are no errors, the table that Errors returns will be empty and can be tested with the IsEmpty function.

Söz dizimiSyntax

Errors( VeriKaynağı [, Kayıt ] )Errors( DataSource [, Record ] )

  • VeriKaynağı: Gerekli.DataSource – Required. Hatalarını döndürmek istediğiniz veri kaynağıdır.The data source for which you want to return errors.
  • Kayıt: İsteğe bağlı.Record – Optional. Hatalarını döndürmek istediğiniz belirli bir kayıt.A specific record for which you want to return errors. Bu bağımsız değişkeni belirtmezseniz işlev, veri kaynağının tamamı için hataları döndürür.If you don't specify this argument, the function returns errors for the entire data source.

ÖrneklerExamples

Adım AdımStep by Step

Bu örnekte IceCream veri kaynağıyla çalışacağız:For this example, we'll be working with the IceCream data source:

Kullanıcı, uygulama üzerinden bir veri girişi formuna Chocolate kaydını yükler ve ardından Quantity değerini 90 olarak değiştirir.Through the app, a user loads the Chocolate record into a data-entry form and then changes the value of Quantity to 90. Birlikte çalışılacak kayıt, EditRecord bağlam değişkeninde yer alır: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" ) ) } )

Veri kaynağında bu değişikliği yapmak için Patch işlevi kullanılır:To make this change in the data source, the Patch function is used:

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

Yalnızca Quantity özelliği değiştirildiğinden Gallery.Updates, { Quantity: 90 } sonucu döndürülür.where Gallery.Updates evaluates to { Quantity: 90 }, since only the Quantity property has been modified.

Ne yazık ki Patch işlevi çağrılmadan hemen önce Chocolate veri kaynağının Quantity değeri başka birisi tarafından 80 olarak değiştirilmiştir.Unfortunately, just before the Patch function was invoked, somebody else modifies the Quantity for Chocolate to 80. PowerApps bunu algılar ve çakışan değişikliğin etkili olmasını önler.PowerApps will detect this and not allow the conflicting change to occur. Bu durumu şu formülle denetleyebilirsiniz:You can check for this situation with the formula:

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

Errors işlevi şu tabloyu döndürdüğünden bu formül false döndürür:which returns false, because the Errors function returned the following table:

RecordRecord ColumnColumn İletiMessage HataError
{ Flavor: "Chocolate", Quantity: 100 }{ Flavor: "Chocolate", Quantity: 100 } boşblank "Değiştirmeye çalıştığınız kayıt başka bir kullanıcı tarafından değiştirildi."Another user has modified the record that you're trying to modify. Lütfen kaydı yeniden yükleyip tekrar deneyin."Please reload the record and try again." ErrorKind.ConflictErrorKind.Conflict

Bu hatayı kullanıcıya göstermek için forma bir etiket ekleyebilirsiniz.You can place a label on the form to show this error to the user.

  • Hatayı göstermek için etiketin Text özelliğini şu formül olarak ayarlayın: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

Kullanıcının çakışmayı etkili bir şekilde çözmesi için forma bir Reload düğmesi de ekleyebilirsiniz.You can also add a Reload button on the form, so that the user can efficiently resolve the conflict.

  • Düğmeyi yalnızca bir çakışmanın meydana gelmesi halinde göstermek için düğmenin Visible özelliğini şu formül olarak ayarlayın: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 ) )
  • Kullanıcının düğmeyi seçtiği değişikliği geri döndürmek için düğmenin OnSelect özelliğini şu formül olarak ayarlayın: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 )