Patch işlevi
Şunlar için geçerlidir: Tuval uygulamaları Model yönetimli uygulamalar Power Platform CLI Masaüstü akışları
Bir veri kaynağında bir veya daha fazla kayıt oluşturur ya da kayıtları değiştirir veya veri kaynağının dışında kayıtları birleştirir.
Örneğin, kullanıcı etkileşimi gerektirmeyen veya birden fazla ekrana yayılan formlar kullanan güncelleştirmeler gerçekleştirdiğiniz karmaşık durumlarda kayıtları değiştirmek için Patch işlevini kullanabilirsiniz.
Veri kaynağındaki kayıtları basit değişiklikler için daha kolay bir şekilde güncelleştirmek için bunun yerine Edit form denetimini kullanın. Edit form denetimi eklediğinizde, kullanıcılara doldurulacak bir form sağlar ve bir veri kaynağı üzerinde yapılan değişiklikleri kaydedersiniz. Daha fazla bilgi edinmek için bkz. Veri formlarını anlama.
Patch işlevini nasıl kullanacağınızı öğrenmek için bu videoyu izleyin:
Genel bakış
Veri kaynağının bir veya daha fazla kaydını değiştirmek için Patch işlevini kullanın. Belirli alanların değerleri, diğer özellikler etkilenmeden değiştirilir. Örneğin, şu formül Contoso adlı bir müşterinin telefon numarasını değiştirir:
Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: "1-212-555-1234" } )
Kayıt oluşturmak için Defaults işlevi ile Patch işlevini kullanın. Kayıt oluşturmaya ve kayıtları düzenlemeye yönelik tek bir ekran oluşturmak için bu davranışı kullanın. Örneğin, şu formül Contoso adlı bir müşteri için kayıt oluşturur:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
Bir veri kaynağı ile çalışmıyor olsanız da iki veya daha fazla kaydı birleştirmek için Patch işlevini kullanabilirsiniz. Örneğin, şu formül Contoso'nun telefon numarasını ve konumunu tanımlayan tek bir kayıtta iki kaydı birleştirir:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Açıklama
Veri kaynağında kayıt oluşturma veya kaydı değiştirme
Bu işlevi bir veri kaynağıyla kullanmak için önce veri kaynağını, ardından da bir temel kayıt belirtin:
- Bir kaydı değiştirmek için temel kaydın bir veri kaynağından gelmesi gerekir. Temel kayıt, bir galerinin Items özelliğinden gelmiş, bir bağlam değişkenine yerleştirilmiş veya başka bir yol aracılığıyla gelmiş olabilir. Ancak, temel kaydı, veri kaynağına kadar izleyebilirsiniz. Kayıt, değişiklik için kaydın tekrar bulunmasına yardımcı olacak ek bilgiler içereceğinden bu önemlidir.
- Bir kayıt oluşturmak için Defaults işlevini kullanarak varsayılan değerlere sahip bir temel kayıt oluşturun.
Ardından, her biri temel kayıttaki özellik değerlerini geçersiz kılan yeni özellik değerleri içeren bir veya daha fazla değişiklik kaydı belirtin. Değişiklik kayıtları, sırayla bağımsız değişken listesinin başından sonuna kadar işlenir ve sonraki özellik değerleri, öncekileri geçersiz kılar.
Döndürülen Patch değeri, değiştirdiğiniz veya oluşturduğunuz kayıttır. Bir kayıt oluşturduysanız, döndürülen değer, veri kaynağının otomatik olarak oluşturduğu özellikleri içerebilir. Ancak döndürülen değer ilgili tablodaki alanlar için bir değer sağlamaz.
Örneğin, Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name"));
ve sonra MyAccount.'Primary Contact'.'Full Name'
kullanın. Bu durumda tam adı alamazsınız. Bunun yerine, ilişkili bir tablonun alanlarına erişmek için aşağıdaki gibi ayrı bir arama kullanın:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Bir veri kaynağını güncelleştirdiğinizde bir veya daha fazla sorun oluşabilir. Hataları saptayıp bunlara yanıt vermek için Hata İşleme bölümünde açıklandığı gibi, Yama'dan gelen dönüş değeriyle IfError ve IsError kullanın. Sorunları tanımlamak ve incelemek için, Veri Kaynakları ile Çalışma bölümünde açıklandığı gibi Errors işlevini de kullanabilirsiniz.
İlgili işlevler arasında, bir kaydın tamamını değiştirmek için kullanabileceğiniz Update işlevi ve kayıt oluşturmak için kullanabileceğiniz Collect işlevi bulunur. Bir koşula dayalı olarak birden fazla kaydın belirli özelliklerini değiştirmek için UpdateIf işlevini kullanın.
Veri kaynağında bir kayıt kümesi oluşturma veya kayıt kümesini değiştirme
Yama , tek bir çağrıyla birden çok kayıt oluşturmak veya değiştirmek için de kullanılabilir.
Tek bir temel kayıt geçirmek yerine, ikinci bağımsız değişkende temel kayıtların bulunduğu bir tablo sağlanabilir. Değişiklik kayıtları, temel kayıtlara bire bir karşılık gelecek şekilde bir tabloda da sağlanır. Her değişiklik tablosundaki kayıt sayısı, temel tablodaki kayıt sayısıyla aynı olmalıdır.
Patch bu şekilde kullanıldığında döndürülen değer aynı zamanda her bir kaydın, temel kayıtlara ve değişiklik kayıtlarına bire bir karşılık geldiği bir tablodur.
Veri kaynağının dışında kayıtları birleştirme
Birleştirmek istediğiniz iki veya daha fazla kayıt belirtin. Kayıtlar, sırayla bağımsız değişken listesinin başından sonuna kadar işlenir ve sonraki özellik değerleri, öncekileri geçersiz kılar.
Yama , birleştirilen kaydı döndürür ve herhangi bir veri kaynağındaki bağımsız değişkenlerini veya kayıtlarını değiştirmez.
Sözdizimi
Veri kaynağında kayıt oluşturma veya kaydı değiştirme
Patch(DataSource,BaseRecord,ChangeRecord1 [, ChangeRecord2 , ... ])
- DataSource – Gerekli. Değiştirmek istediğiniz kaydı içeren veya oluşturmak istediğiniz kaydı içerecek olan veri kaynağı.
- BaseRecord – Gerekli. Değiştirilecek veya oluşturulacak kayıt. Kayıt bir veri kaynağından geliyorsa bulunur ve değiştirilir. Defaults işlevinin sonucu kullanılıyorsa bir kayıt oluşturulur.
- ChangeRecords – Gerekli. TemelKayıt içinde değiştirilecek özellikleri içeren bir veya daha fazla kayıt. Değişiklik kayıtları, sırayla bağımsız değişken listesinin başından sonuna kadar işlenir ve sonraki özellik değerleri, öncekileri geçersiz kılar.
Veri kaynağında bir kayıt kümesi oluşturma veya kayıt kümesini değiştirme
Patch(DataSource,BaseRecordsTable,ChangeRecordTable1 [, ChangeRecordTable2 , ... ] )
- DataSource – Gerekli. Değiştirmek istediğiniz kayıtları içeren veya oluşturmak istediğiniz kayıtları içerecek olan veri kaynağı.
- BaseRecordTable – Gerekli. Değiştirilecek veya oluşturulacak kayıtların bulunduğu bir tablo. Kayıt bir veri kaynağından geliyorsa bulunur ve değiştirilir. Defaults işlevinin sonucu kullanılıyorsa bir kayıt oluşturulur.
- ChangeRecordTables – Gerekli. Her bir TemelKayıtTablosu kaydı için değiştirilecek özellikleri içeren bir veya daha fazla kayıt tablosu. Değişiklik kayıtları, sırayla bağımsız değişken listesinin başından sonuna kadar işlenir ve sonraki özellik değerleri, öncekileri geçersiz kılar.
Kayıt birleştirme
Yama( Kayıt1,Kayıt2 [, ...] )
- Kayıtlar - Gerekli. Birleştirmek istediğiniz en az iki kayıt. Kayıtlar, sırayla bağımsız değişken listesinin başından sonuna kadar işlenir ve sonraki özellik değerleri, öncekileri geçersiz kılar.
Örnekler
Kayıt oluşturma veya kaydı değiştirme (veri kaynağında)
Bu örneklerde, bu tablodaki verileri içeren ve otomatik olarak IDsütununda değerler oluşturan IceCream adlı bir veri kaynağında kayıt oluşturacak veya kaydı değiştireceksiniz:
Formül | Veri Akışı Açıklaması | Result |
---|---|---|
Yama ( Dondurma, LookUp( IceCream, Flavor = "Chocolate" ), { Quantity: 400 } ) |
IceCream veri kaynağındaki bir kaydı değiştirir:
|
{ ID: 1, Flavor: "Chocolate", Quantity: 400 } IceCream veri kaynağındaki Chocolate girişi değiştirilmiştir. |
Patch( Dondurma, Varsayılanlar ( Dondurma ), { Lezzet: "Çilek" } ) | IceCream veri kaynağında bir kayıt oluşturur:
|
{ ID: 3, Flavor: "Strawberry", Quantity: 0 } IceCream veri kaynağında Strawberry girişi oluşturulmuştur. |
Önceki formüller değerlendirildikten sonra veri kaynağı şu değerlere sahip olur:
Kayıtları birleştirme (veri kaynağının dışında)
Formül | Açıklama | Sonuç |
---|---|---|
Yama( { İsim: "James", Puan: 90 }, { İsim: "Jim", Geçti: doğru } ) | Veri kaynağının dışında iki kaydı birleştirme:
|
{ Name: "Jim", Score: 90, Passed: true } |
As veya ThisRecord kullanımı
Formülde As veya ThisRecord anahtar sözcüğünün kullanılması belirsiz değerlendirme bağlamını önler.
Aşağıdaki örnekte, If
deyiminde ilk aramayı düşünün. (OrderID = A[@OrderID])
arama kapsamındaki OrderId
ile kapsamdaki koleksiyonun OrderId
A
karşılaştırılması ForAll
beklenir. Bu durumda, muhtemelen A[@OrderId]
öğesinin yerel parametre olarak çözümlenmesini istersiniz. Ancak bu belirsizdir.
Power Apps şu anda hem sol taraftaki OrderId
hem de sağ taraftaki A[@OrderId]
öğesini arama kapsamındaki bir alan olarak yorumlar. Bu nedenle, koşul her zaman doğru olduğu için, arama her zaman [dbo].[Orders1]
öğesindeki ilk satırı bulur (başka bir deyişle, herhangi bir satırın OrderId
öğesi kendi değerine eşit olur.)
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
As veya ThisRecord kullanımı
Mümkün olduğunda, As işlecini veya ThisRecord öğesini kullanarak sol tarafın belirsizliğini ortadan kaldırın. Yukarıdaki senaryo için önerildiği gibi .
Formülünüz aynı veri kaynağı veya tabloda ForAll
, Filter
ve Lookup
ile birden çok kapsam kullandığında, kapsam parametreleri başka bir yerde aynı alanla çakışabilir. Bu nedenle, alan adını düzeltmek ve belirsizliğe engel olmak için As işlecinin veya ThisRecord'un kullanılması önerilir.
Örneğin, aşağıdaki örnekte belirsizliği gidermek için As işlecini kullanabilirsiniz.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]' As B,
B.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]' As C,
C.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
Alternatif olarak, ThisRecord öğesini aynı amaçla kullanabilirsiniz.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
As işlecinin kullanımı ve ThisRecord hakkında daha fazla bilgi için İşleçler makalesine bakın.