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ı
Copilot Studio
Desktop akışları
Model temelli uygulamalar
Power Platform CLI
Dataverse işlevleri
Power Pages
Değerleri hesaplar ve bir tablonun tüm kayıtları için eylemleri gerçekleştirir.
Açıklama
İşlev, ForAll tablodaki tüm kayıtlar için bir formülü değerlendirir. Formül, bir değeri hesaplayabilir ve/veya veri değiştirme ya da bir bağlantıyla çalışma gibi eylemler gerçekleştirebilir. Tek bir kaydın formülünü değerlendirmek için With işlevini kullanın.
Sayıya göre yinelemek için Sequence işlevini işleviyle ForAll birlikte kullanın.
İşlenmekte olan kayıt alanları formül içinde bulunur. ThisRecord işlecini kullanın veya başka bir değere olduğu gibi yalnızca adla başvuruda bulunun. As işleci, formülünüzü daha anlaşılır ve iç içe geçmiş kayıtları erişilebilir hale getirmenizi kolaylaştıracak şekilde, işlenen kaydı adlandırmak için de kullanılabilir. Daha fazla bilgi için aşağıdaki örneklere ve kayıt kapsamıyla çalışma bölümüne bakın.
Dönüş değeri
Her formül değerlendirmesinin sonucu, giriş tablosundaki sıraya göre bir tabloda döndürülür.
Formülün sonucu tek bir değerse, sonuçta elde edilen tablo tek sütunlu bir tablodur. Formülün sonucu bir kayıt ise, sonuçta elde edilen tablo sonuç kaydıyla aynı sütunların bulunduğu kayıtları içerir.
Formülün sonucu boş bir değerse, bu giriş kaydı için sonuç tablosunda kayıt yoktur. Bu durumda, sonuç tablosunda kaynak tablodan daha az kayıt vardır.
Eylem gerçekleştirme
Formül, Patch ve Collect işlevleriyle bir veri kaynağının kayıtlarını değiştirme gibi eylemler gerçekleştiren işlevler içerebilir. Formül, bağlantılarda yöntemler de çağırabilir. ; işleci kullanılarak her kayıt için birden çok eylem gerçekleştirilebilir. İşlevin konusu ForAll olan tabloyu değiştiremezsiniz.
Formülünüzü yazarken kayıtların herhangi bir sırada ve mümkün olduğunda paralel olarak işlenebileceğini unutmayın. Tablonun ilk kaydı son kayıttan sonra işlenebilir.
Sıralama bağımlılıklarından kaçınmaya dikkat edin. Bu nedenle, bir işlev içinde ForAllUpdateContext, Clear ve ClearCollect işlevlerini kullanamazsınız çünkü bunlar bu etkiye duyarlı olabilecek değişkenleri tutmak için kolayca kullanılabilir. Collect işlevini kullanabilirsiniz ancak kayıtların eklenme sırası tanımlı olmaz.
Veri kaynaklarını değiştiren Collect, Remove ve Update de dahil olmak üzere çeşitli işlevler, döndürülen değer olarak, değiştirilen veri kaynağını döndürür. Bu dönüş değerleri büyük olabilir ve tablonun her kaydı ForAll için döndürülürse önemli kaynaklar kullanabilir. Ayrıca, bu dönüş değerlerinin beklediğiniz gibi olmadığını fark edebilirsiniz çünkü ForAll paralel çalışabilir ve bu işlevlerin yan etkilerini bunların sonucunu almaktan ayırabilir. veri değiştirme işlevlerinde genellikle olduğu gibi, değerinden ForAll dönüş değeri kullanılmazsa, dönüş değeri oluşturulmaz ve kaynak veya siparişle ilgili bir sorun yoktur. Ancak bir ve veri kaynağı döndüren işlevlerden birinin sonucunu ForAll kullanıyorsanız, sonucu nasıl yapılandırdığınız hakkında dikkatlice düşünün ve ilk olarak küçük veri kümelerinde deneyin.
Alternatifler
Power Apps'teki birçok işlev, tek sütunlu bir tablo kullanarak aynı anda birden fazla değeri işleyebilir. Örneğin, Len işlevi bir metin değerleri tablosunu işleyebilir ve aynı şekilde ForAll uzunluklardan oluşan bir tablo döndürebilir. Bu, birçok durumda kullanım ForAll gereksinimini ortadan kaldırabilir, daha verimli olabilir ve daha kolay okunabilir.
Dikkat edilmesi gereken bir diğer nokta da ForAllFiltre gibi diğer işlevlerde temsilci seçilemez olmasıdır.
Temsilci
Veri kaynağıyla birlikte kullanıldığında, bu işlev temsilci atanamaz. Veri kaynağının yalnızca ilk kısmı alınır ve işlev uygulanır. Sonuç, tüm hikayeyi temsil etmeyebilir. Yazma sırasında size bu sınırlamayı anımsatmak ve mümkün olduğunda temsilci atanabilir alternatiflere geçmenizi önermek üzere bir uyarı görüntülenebilir. Daha fazla bilgi edinmek için bkz. temsilci atamaya genel bakış.
Sözdizimi
ForAll(Tablo, Formül)
- Tablo - Gerekli. Üzerinde işlem yapılması gereken tablo.
- Formül - Gerekli. Tüm Tablo kayıtları için değerlendirilecek formül.
Örnekler
Hesaplamalar
Aşağıdaki örneklerde Squaresveri kaynağı kullanılmıştır:
Bu veri kaynağını koleksiyon olarak oluşturmak için bir Button denetiminin OnSelect özelliğini bu formüle ayarlayın, Önizleme modunu açın ve ardından düğmeyi seçin:
ClearCollect( Squares, [ "1", "4", "9" ] )
| Formül | Açıklama | Sonuç |
|---|---|---|
|
ForAll( Kareler, Kare( Değer ) ) Sqrt( Kareler ) |
Giriş tablosunun tüm kayıtları için Value sütununun karekökünü hesaplar. Sqrt işlevi tek sütunlu bir tabloyla da kullanılabilir ve bu örneği kullanmadan ForAllgerçekleştirmeyi mümkün hale getirir. |
|
| ForAll( Kareler, Güç( Değer, 3 ) ) | Giriş tablosunun tüm kayıtları için Value sütununu üçüncü kuvvetine yükseltir. Power işlevi tek sütunlu tabloları desteklemez. Bu nedenle, ForAll bu durumda kullanılmalıdır. |
|
Bağlantı kullanma
Aşağıdaki örneklerde Expressionsveri kaynağı kullanılmıştır:
Bu veri kaynağını koleksiyon olarak oluşturmak için bir Button denetiminin OnSelect özelliğini bu formüle ayarlayın, Önizleme modunu açın ve ardından düğmeyi seçin:
ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )
Bu örnek aynı zamanda bir Microsoft Translator bağlantısı da kullanır. Bu bağlantıyı uygulamanıza eklemek için bağlantıları yönetme makalesine bakın.
| Formül | Açıklama | Sonuç |
|---|---|---|
| ForAll(İfadeler, MicrosoftTranslator.Translate(Değer, "es")) | Expressions tablosundaki tüm kayıtlar için Value sütununun içeriklerini İspanyolcaya (kısaltması "es") çevirir. |
|
| ForAll(İfadeler, MicrosoftTranslator.Translate(Değer, "fr")) | Expressions tablosundaki tüm kayıtlar için Value sütununun içeriklerini Fransızcaya (kısaltması "fr") çevirir. |
|
Bir tabloyu kopyalama
Bazen verileri filtrelemeniz, şekillendirmeniz, sıralamanız ve denetlemeniz gerekir. Power Apps, bunu yapmak için Filter, AddColumns ve Sort gibi birçok işlev sağlar. Power Apps her tabloyu bir değer olarak ele alır ve formüller arasında kolayca akmasını ve kolayca tüketilmesine olanak tanır.
Ve bazen daha sonra kullanmak üzere bu sonucun bir kopyasını oluşturmak veya bilgileri bir veri kaynağından diğerine taşımak istersiniz. Power Apps, verileri kopyalamak için Collect işlevini sağlar.
Ancak bu kopyayı almadan önce, gerekirse dikkatlice düşünün. Pek çok durumda; temel alınan, isteğe bağlı veri kaynağını bir formülle filtrelemek ve şekillendirmek işe yarar. Kopya oluşturmanın bazı olumsuz yanları şunlardır:
- Aynı bilgilerin iki kopyası bunlardan birinin eşitlenmemiş hale gelebileceği anlamına gelir.
- Kopya oluşturmak, bilgisayar belleği, ağ bant genişliği ve/veya zamanın büyük bir kısmının kullanımına neden olabilir.
- Çoğu veri kaynağı için kopyalama için temsilci seçilemiyor ve bu da taşınabilecek veri miktarını sınırlandırıyor.
Aşağıdaki örneklerde Productsveri kaynağı kullanılmıştır:
Bu veri kaynağını koleksiyon olarak oluşturmak için bir Button denetiminin OnSelect özelliğini bu formüle ayarlayın, Önizleme modunu açın ve ardından düğmeyi seçin:
ClearCollect( Products,
Table(
{ Product: "Widget", 'Quantity Requested': 6, 'Quantity Available': 3 },
{ Product: "Gadget", 'Quantity Requested': 10, 'Quantity Available': 20 },
{ Product: "Gizmo", 'Quantity Requested': 4, 'Quantity Available': 11 },
{ Product: "Apparatus", 'Quantity Requested': 7, 'Quantity Available': 6 }
)
)
Amacımız yalnızca mevcut olanından daha fazlası istenen ve sipariş vermemiz gereken öğeleri içeren bir türev tablosu ile çalışmaktır:
Bu görevi, çeşitli artılar ve eksilerle tümü aynı sonucu veren birkaç farklı yöntemle gerçekleştirebiliriz.
İsteğe bağlı tablo şekillendirme
Bu kopyayı oluşturmayın! İhtiyaç duyduğumuz her yerde aşağıdaki formülü kullanabiliriz:
// Table shaping on demand, no need for a copy of the result
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Her kaydın 'Quantity Requested' ve 'Quantity Available' alanlarıyla, sırasıyla karşılaştırma ve çıkarma işlemlerinin gerçekleştirilmesi için Filter ve AddColumns işlevleri tarafından bir kayıt kapsamı oluşturulur.
Bu örnekte Filter işlevi temsilci olarak seçilebilir. Milyonlarca kayıt içeren bir tablodaki yalnızca birkaç kayıt dahi olsa ölçütlerle eşleşen tüm ürünleri bulabileceğinden bu oldukça önemlidir. Şu anda , ShowColumns ve AddColumns temsilci seçilemez, bu nedenle sipariş edilmesi gereken gerçek ürün sayısı sınırlıdır. Bu sonucun boyutunun her zaman nispeten küçük olduğunu biliyorsanız, bu yaklaşım uygundur.
Ve bir kopyasını oluşturmadığımız için, yönetecek veya güncel olmayan bilgilerin ek bir kopyası yoktur.
ForAll isteğe bağlı
Bir diğer yaklaşım da tablo şekillendirme işlevlerini değiştirmek için işlevini kullanmaktır ForAll :
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
Bu formülü okumak ve yazmak bazı kişiler için daha basit olabilir.
öğesinin hiçbir bölümü ForAll temsilci seçilemez. Ürünler tablosunun yalnızca ilk bölümü değerlendirilir ve bu tablo büyükse sorun olabilir. Önceki örnekte Filter işlevi temsilci olarak seçilebildiğinden büyük veri kümeleriyle daha iyi şekilde çalışabilir.
Sonucu toplama
Bazı durumlarda, verilerin bir kopyası gerekli olabilir. Bir veri kaynağından diğerine bilgi taşımanız gerekebilir. Bu örnekte, siparişler bir satıcının sistemindeki NewOrder tablosu üzerinden verilir. Yüksek hızlı kullanıcı etkileşimleri için, sunucu gecikme süresi olmaması için tablonun yerel bir kopyasını önbelleğe almak isteyebilirsiniz.
Önceki iki örnekle aynı tablo şekillendirmesini kullanır ancak sonucu yakalayıp bir koleksiyona alırız:
ClearCollect( NewOrder,
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
)
ClearCollect( NewOrder,
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
ClearCollect ve Collect için temsilci atanamaz. Sonuç olarak, bu şekilde taşınabilecek veri miktarı sınırlıdır.
İçinde toplama ForAll
Son olarak Collect işlemini doğrudan içinde ForAllgerçekleştirebiliriz:
Clear( NewOrder );
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
Collect( NewOrder,
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
Yine, işlev şu ForAll anda temsilci seçilemiyor. Ürünler tablomuz büyükse, ForAll yalnızca ilk kayıt kümesine bakar ve sipariş edilmesi gereken bazı ürünleri kaçırabiliriz. Ancak küçük kaldığını bildiğimiz tablolar için bu yaklaşım uygundur.
sonucunu yakalamadığımıza ForAlldikkat edin. İçinden yapılan Collect işlevi çağrıları, tüm kayıtlar için NewOrder veri kaynağını döndürür ve bu, onu yakalarsak çok sayıda veri toplayabilir.
Bileşen içindeki tabloyu eşleme
Bkz. Tabloları eşleme.