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
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.
Patch Kullanıcı etkileşimi gerektirmeyen güncelleştirmeler yapmanız veya birden çok ekrana yayılan formlar kullanmanız gibi karmaşık durumlarda kayıtları değiştirmek için işlevini kullanın.
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.
İşlevin nasıl kullanılacağını öğrenmek için bu videoyu Patch izleyin:
Genel bakış
bir veri kaynağının Patch bir veya daha fazla kaydını değiştirmek için 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, LookUp( Customers, Name = "Contoso" ), { Phone: "1-212-555-1234" } )
Kayıt oluşturmak için Defaults işleviyle kullanınPatch. 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" } )
Uyarı
Varsayılan değerlerle bir veri kaynağından bir kayıt kullanarak koleksiyona düzeltme eki eklediğinizde, düzeltme eki işlemi koleksiyonu hem belirtilen düzeltme eki değerleriyle hem de veri kaynağındaki varsayılan değerlerle güncelleştirir. Yeni kayıt oluşturmak için patch deyiminin DataSource ve Defaults işlevinin DataSource değerlerinin eşleşmesi gerekir.
Veri kaynağıyla çalışmıyor olsanız bile, iki veya daha fazla kaydı birleştirmek için kullanabilirsiniz Patch . Ö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ş, bağlam değişkenine yerleştirilmiş veya başka bir yoldan gelmiş olabilir. Ancak, temel kaydı, veri kaynağına kadar izleyebilirsiniz. Kayıt, değişiklik için kaydı yeniden bulmaya yardımcı olacak ek bilgiler içerdiğ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önüş değeri Patch , değiştirdiğiniz veya oluşturduğunuz kayıttır. Bir kayıt oluşturduysanız, dönüş değeri 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 ortaya çıkabilir. Hata İşleme'nin açıklandığı gibi hataları algılamak ve yanıtlamak için IfError ve IsError'ı döndür değeriyle Patch 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
Patch 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.
Bu şekilde kullanıldığında Patch , dönüş değeri aynı zamanda temel ve değişiklik kayıtlarına karşılık gelen her kaydın bire bir olduğu 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.
Patch birleştirilmiş kaydı döndürür ve hiç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. Yeni kayıt oluşturmak için patch deyiminin DataSource ve Defaults işlevinin DataSource değerlerinin eşleşmesi gerekir.
- 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. Yeni kayıt oluşturmak için patch deyiminin DataSource ve Defaults işlevinin DataSource değerlerinin eşleşmesi gerekir.
- 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
Patch( 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 | Açıklama | Result |
|---|---|---|
|
Patch( IceCream, 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( IceCream, Defaults( IceCream ), { Flavor: "Strawberry" } ) |
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 | Result |
|---|---|---|
| Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } ) | Veri kaynağının dışında iki kaydı birleştirme:
|
{ Ad: "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 OrderIdA 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.