Errors işlevi

Şunlar için geçerlidir: Tuval uygulamaları Model temelli uygulamalar

Bir veri kaynağında önceden yapılan değişikliklere ilişkin hata bilgilerini sağlar.

Genel bakış

Bir veri kaynağı kaydı değiştirildiğinde hatalar oluşabilir. Ağ kesintileri, yetersiz izinler ve düzenleme çakışmaları gibi birçok neden mümkündür.

Patch, Collect, Remove, RemoveIf, Update, UpdateIf ve SubmitForm gibi veri kaynaklarındaki verileri değiştirebilen işlevler iki şekilde hata verir:

  • Bu işlevlerin her biri işlemin sonucu olarak bir hata değeri döndürür. Hatalar IsError ile saptanabilir ve her zamanki gibi IfError ve App.OnError ile değiştirilebilir veya baskılanabilir. Daha fazla bilgi için Hata İşleme bölümüne bakın.
  • İşlemden sonra, Errors işlevi önceki işlemlerin hatalarını da döndürür. Bu, hatayı bir durum değişkeninde yakalamak zorunda kalmadan, hata iletisini bir form ekranında görüntülemeye yarayabilir.

Validate ve DataSourceInfo işlevlerini kullanarak bazı hataların oluşmasını önleyebilirsiniz. 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.

Açıklama

Errors işlevi, şu sütunları içeren bir hata tablosu döndürür:

  • Kayıt. Veri kaynağında hatanın oluştuğu kayıt. Hata kayıt oluşturma sırasında oluştuysa bu sütun boş değer alır.
  • Sütun. Hataya neden olan sütun (hata tek bir sütunla ilişkilendirilebiliyorsa). Aksi halde, bu sütun boş değer alır.
  • İleti. Hatanın tanımı. Bu hata dizesi son kullanıcı için görüntülenebilir. 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.
  • Hata. Hatanın çözülmesi için formüllerde kullanılabilen bir hata kodu:
ErrorKind Açıklama
ErrorKind.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. Kaydı yeniden yüklemek için Refresh işlevini kullanın ve değişikliği tekrar deneyin.
ErrorKind.ConstraintViolation Bir veya daha fazla kısıtlama ihlal edilmiştir.
ErrorKind.CreatePermission Kayıt oluşturma girişiminde bulunulmuştur ve geçerli kullanıcının kayıt oluşturma izni yoktur.
ErrorKind.DeletePermission Kayıt oluşturma girişiminde bulunulmuştur ve geçerli kullanıcının kayıt silme izni yoktur.
ErrorKind.EditPermission Kayıt düzenleme girişiminde bulunulmuştur ve geçerli kullanıcının kayıt düzenleme izni yoktur.
ErrorKind.GeneratedValue Veri kaynağının otomatik olarak oluşturduğu bir sütunu değiştirme girişiminde bulunulmuştur.
ErrorKind.MissingRequired Gerekli bir sütuna ilişkin değer kayıtta mevcut değildir.
ErrorKind.None Hata yoktur.
ErrorKind.NotFound Bir kaydı düzenleme veya silme girişiminde bulunulmuş ancak kayıt bulunamamıştır. Başka bir kullanıcı, kaydı değiştirmiş olabilir.
ErrorKind.ReadOnlyValue Salt okunur bir sütunu değiştirme girişiminde bulunulmuştur.
ErrorKind.Sync Veri kaynağı tarafından bir hata bildirilmiştir. Daha fazla bilgi için İleti sütununu kontrol edin.
ErrorKind.Unknown Bilinmeyen türde bir hata oluşmuştur.
ErrorKind.Validation Diğer türlere dahil olmayan, genel bir doğrulama sorunu algılanmıştır.

Hatalar, veri kaynağının tamamı için veya işlevde Kayıt bağımsız değişkeni kullanılarak yalnızca seçili bir satır için döndürülebilir.

Kayıt oluşturulamaması halinde Patch veya başka bir veri işlevi boş değer döndürebilir. Errors işlevine boş değer geçirebilirsiniz. Böyle durumlarda ilgili hata bilgileri döndürülür. Veri işlevlerinin, aynı veri kaynağında daha sonra da kullanılması durumunda bu hata bilgileri temizlenir.

Hiç hata yoksa Errors işlevinin döndürdüğü tablo boş olur ve IsEmpty işleviyle test edilebilir.

Sözdizimi

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

  • DataSource – Gerekli. Hatalarını döndürmek istediğiniz veri kaynağıdır.
  • Kayıt – İsteğe bağlı. Hatalarını döndürmek istediğiniz belirli bir kayıt. Bu bağımsız değişkeni belirtmezseniz işlev, veri kaynağının tamamı için hataları döndürür.

Örnekler

Adım Adım

Bu örnekte IceCream veri kaynağıyla çalışacağız:

Ice Cream.

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. Birlikte çalışılacak kayıt, bağlam değişkeniEditRecord içinde yer alır:

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

Veri kaynağında bu değişikliği yapmak için Patch işlevi kullanılır:

  • Patch( IceCream, EditRecord, Gallery.Updates )

Yalnızca Quantity özelliği değiştirildiğinden {Gallery.Updates}, Quantity: 90 sonucu döndürülür.

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. Power Apps bunu algılar ve çakışan değişikliğin etkili olmasını önler. Bu durumu şu formülle denetleyebilirsiniz:

  • IsEmpty( Errors( IceCream, EditRecord ) )

Errors işlevi şu tabloyu döndürdüğünden bu formül false döndürür:

Kayıt Sütun İleti Hata
{ Flavor: "Chocolate", Quantity: 100 } blank "Değiştirmeye çalıştığınız kayıt başka bir kullanıcı tarafından değiştirildi. Lütfen kaydı yeniden yükleyip tekrar deneyin." ErrorKind.Conflict

Bu hatayı kullanıcıya göstermek için forma bir etiket ekleyebilirsiniz.

  • Hatayı göstermek için etiketin Text özelliğini şu formül olarak ayarlayın:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Kullanıcının çakışmayı etkili bir şekilde çözmesi için forma bir Yeniden yükle düğmesi de ekleyebilirsiniz.

  • 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:
    !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:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )