Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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ış
Errors bir veri kaynağının kaydı değiştirildiğinde gerçekleşebilir. 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. Errors IsError ile algılanabilir ve her zamanki gibi IfError ve App.OnError ile değiştirilebilir veya gizlenebilir. Daha fazla bilgi için Hata İşleme bölümüne bakın.
- İşlemden sonra işlev, Errors önceki işlemler için hataları da döndürür. Hatanın bir durum değişkeninde yakalanmasına gerek kalmadan bir form ekranında hata iletisini görüntülemek için yararlı olabilir.
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
İşlev, Errors aşağıdaki sütunları içeren bir hata tablosu döndürür:
- Kayıt. Veri kaynağında hatanın oluştuğu kayıt. Kayıt oluşturulurken hata oluştuysa, bu sütun boş olur.
- Sütun. Hataya neden olan sütun (hata tek bir sütunla ilişkilendirilebiliyorsa). Aksi takdirde boş olur.
- İleti. Hatanın tanımı. Bu hata dizesi son kullanıcı için görüntülenebilir. Bu ileti veri kaynağı tarafından oluşturulabilir ve uzun olabilir ve kullanıcı için hiçbir anlamı olmayan ham sütun adları içerebilir.
- 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ürlerden birine uymayan genel bir doğrulama sorunu algılandı. |
Errors işlevine Record bağımsız değişkeni sağlanarak veri kaynağının tamamı veya yalnızca seçili bir satır için döndürülebilir.
Patch veya başka bir veri işlevi, örneğin bir kayıt oluşturulamazsa boş bir değer döndürebilir. öğesine boşErrorsgeçirebilirsiniz ve bu durumlarda uygun hata bilgilerini döndürür. Aynı veri kaynağında veri işlevlerinin daha sonra kullanılması bu hata bilgilerini temizler.
Hata yoksa, döndüren Errors tablo boş olur ve IsEmpty işleviyle test edilebilir.
Sözdizimi
Errors( DataSource [, Record ] )
- 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, Power Apps'in çakışmaları algılamaya çalışacağı bir veri kaynağı olan IceCream veri kaynağıyla çalışacağız:
Uyarı
Power Apps, Dataverse tablolarındaki değişiklikler için çakışmaları algılamaya çalışmaz.
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( Dondurma, Lezzet = "Çikolata" ) } )
Veri kaynağında bu değişikliği yapmak için Patch işlevi kullanılır:
- Yama ( Dondurma, EditRecord, Gallery.Updates )
Yalnızca Quantity özelliği değiştirildiğinden Gallery.Updates {Quantity: 90 } olarak değerlendirilir.
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. Bu, çakışma algılama için desteklenen bir veri kaynağı olduğundan Power Apps bunu algılar ve çakışan değişikliğin gerçekleşmesine izin vermez. Bu durumu şu formülle denetleyebilirsiniz:
- IsEmpty( Errors( IceCream, EditRecord ) )
İşlev aşağıdaki tabloyu döndürdüğünden Errorsfalse değerini döndürür:
| Kayıt | Sütun | İleti | Hata |
|---|---|---|---|
| { Flavor: "Chocolate", Quantity: 100 } | boş | "Değiştirmeye çalıştığınız kayıt başka bir kullanıcı tarafından değiştirildi. Kaydı yeniden yükleyin ve yeniden 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 )). İleti
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 almak için OnSelect özelliğini şu formül olarak ayarlayın:
ReloadButton.OnSelect = geri dönmek( Dondurma, EditRecord )