Nedir?
Şema verilerinin form datasına yüklenmesi amacıyla kullanılır.
<FillXmlWithSchema
Name="ShemaTabloName"
VariablePrefix=""
Into=""
TemplatePath=""
MasterDetailTemplatePath=""
ClearDestinationNodes="True"
DestinationNodeNameToClear=""
SearchMethodToUse="Normal"
LanguageId=""
Repository=""
LogQuery="False">
<Perform />
<Filter />
<Columns />
<Order>
<Order
Type="Ascending">
<ListColumn
Name="Name"
DataType="System.String, mscorlib" />
</Order>
</Order>
</FillXmlWithSchema>
Özellikler
Adı | Açıklama | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Name | Verilerin okunacağı şema tablo adıdır. | |||||||||
VariablePrefix | Her kolon adına eklenecek ön değişken adıdır. | |||||||||
Into | Tablodan okunan verilerin yazılacağı node adresidir. | |||||||||
TemplatePath | Şablon olarak kullanılacak node adresidir. XPath alır. | |||||||||
MasterDetailTemplatePath | Okunan kayıtların form verisine liste olarak yazılacağı node adresidir. XPath alır. | |||||||||
ClearDestinationNodes | Forma yazma sırasında mevcut form verilerinin silinip silinmeyeceğini belirtir. "True" ve "False" değerlerini alır. | |||||||||
DestinationNodeNameToClear | ClearDestinationNodes eğer dolu ise, formda silinecek olan node değeridir. | |||||||||
SearchMethodToUse | Arama metodunu belirler.
| |||||||||
LanguageId | Şema verileri okunurken tercih edilen dil değişkeni | |||||||||
Repository | Repository adıdır | |||||||||
Perform | Verilerin okunma işleminde gerçekleştirilecek alt işlemlerin tanımları yer alır | |||||||||
Columns | Kolon verilerinin değişkenler ve node alanları ile eşleştirmelerinin tanımları yer alır | |||||||||
Order | Verilerin okunma işleminde sıralama kolonları ve sıralama adlarını belirtilir
|
Örnekler
Bu örnekte DataDefinition tablosundan veriler DataDefinition ismindeki XML Node üzerinde getirilmektedir.
- DataDefinition XML Node altında yer alan ProductCode Node bilgisi veri tabanından getirilmiş olan ProductNo bilgisi ile update edilmektedir.
- Veriler getirilirken XML Node içerisindeki değerlere göre filtreleme yapılmaktadır. PromotionType bunun için iyi bir örnektir.
- <Column Node="PromotionType/@display" Name="PromotionType.Name" /> ifadesi ile DataDefinition tablosu ile ilişkili olan PromotionType tablosundan "Name" okunmakta ve ilgili node alanına yazılması sağlanmaktadır.
- ClearDestinationNodes="True" ile her çalıştırmada xmlnode bilgilerinin temizlenmesi gerektiği ifade edilmektedir.
- <OrderColumn Name="ProductNo.Description" DataType="System.String, mscorlib" /> ile ürün tanımlarına göre sıralama yapılması gerektiği belirtilmektedir.
<Order Type="Ascending"> ile sıralamanın alfabetik artan olması gerektiği belirtilmiştir.
<FillXmlWithSchema Name="DataDefinition" VariablePrefix="" Into="" TemplatePath="" MasterDetailTemplatePath="DataDefinition" ClearDestinationNodes="True" DestinationNodeNameToClear="" SearchMethodToUse="Normal" LanguageId="" Repository=""> <Perform> <Set Node="ProductCode"> <Value Culture="" Target="None">eval::./ProductNo</Value> </Set> </Perform> <Filter> <Criteria Name="PromotionType"> <Evaluate Target="None" Culture=""><![CDATA[PromoData/PromotionType]]></Evaluate> </Criteria> <Criteria Name="Status"> <Value Culture="" Target="None">A</Value> </Criteria> </Filter> <Columns> <Column Node="Id" Name="Id" /> <Column Node="ProductHierLevel1" Name="ProductHierLevel1" /> <Column Node="ProductNo" Name="ProductNo.ProductNo" /> <Column Node="ProductNo/@display" Name="ProductNo.Description" /> <Column Node="PromotionType" Name="PromotionType.Code" /> <Column Node="PromotionType/@display" Name="PromotionType.Name" /> <Column Node="PromotionRate" Name="PromotionRate" /> <Column Node="ProductKDV" Name="ProductNo.KDV" /> <Column Node="Condition1" Name="Condition1" /> <Column Node="Condition1/@display" Name="Condition1.Description" /> </Columns> <Order> <Order Type="Ascending"> <OrderColumn Name="ProductNo.Description" DataType="System.String, mscorlib" /> </Order> </Order> </FillXmlWithSchema>
Aşağıdaki örnekte, BTProjeBildirimRolleri tablosunda bulunan değerler $(CompanyCode) değerine göre filtrelenerek çekilir ve ilk gelen satır xml deki alanlara set edilir.
<FillXmlWithSchema Name="BTProjeBildirimRolleri" VariablePrefix="" Into="" TemplatePath="." MasterDetailTemplatePath="" ClearDestinationNodes="True" DestinationNodeNameToClear="" SearchMethodToUse="Normal" LanguageId="" Repository="">
<Perform />
<Filter>
<Criteria Name="Company">
<Value Culture="" Target="None">$(CompanyCode)</Value>
</Criteria>
</Filter>
<Columns>
<Column Node="/*/BTProjeBildirimRolleri/Company" Name="Company" />
<Column Node="/*/BTProjeBildirimRolleri/Company/@display" Name="Company.Name" />
<Column Node="/*/BTProjeBildirimRolleri/ITGroup" Name="ITGroup" />
<Column Node="/*/BTProjeBildirimRolleri/ITGroup/@display" Name="ITGroup.Name" />
<Column Node="/*/BTProjeBildirimRolleri/ITDirector" Name="ITDirector" />
<Column Node="/*/BTProjeBildirimRolleri/ITDirector/@display" Name="ITDirector.Person.DisplayName" />
</Columns>
<Order />
</FillXmlWithSchema>
Tek değer alma veya alınan değerler içerisinde işlemler yaparak Set işlemi yapmak için aşağıdaki örneği kullanabiliriz. Tablo içerisindeki değerlere TabloIsmı:AlanIsmi ile perform içerisinde ulaaşbiliyoruz.
<FillXmlWithSchema Name="AracTalepRaporu" VariablePrefix="" Into="" TemplatePath="" MasterDetailTemplatePath="" ClearDestinationNodes="True" DestinationNodeNameToClear="" SearchMethodToUse="Normal" LanguageId="" Repository="">
<Perform>
<Set Node="Personel/Sayac">
<Value Culture="" Target="None">$(AracTalepRaporu:Sayac)</Value>
</Set>
</Perform>
<Filter>
<Criteria Name="Id">
<Value Culture="" Target="None">$(InstanceId)</Value>
</Criteria>
</Filter>
<Columns>
<Column Node="" Name="Id" />
<Column Node="" Name="Sayac" />
</Columns>
<Order />
</FillXmlWithSchema>
<FillXmlWithSchema Name="IperiyodikOlayKayıtlari" VariablePrefix="" Into="" TemplatePath="" MasterDetailTemplatePath="/*/Ipek_PeriyodikOlayKayıtlari" ClearDestinationNodes="True" DestinationNodeNameToClear="" SearchMethodToUse="Normal" LanguageId="" Repository="">
<Perform />
<Filter>
<Criteria Name="BirSonrakiCalistirilmaTar" Comparison="GreaterOrEqual">
<Value Target="Date">Now</Value>
</Criteria>
<Criteria Name="Aktif">
<Value Target="Bool">True</Value>
</Criteria>
<Criteria Name="Tarih" Comparison="LessOrEqual">
<Value Target="Date">Now</Value>
</Criteria>
<Criteria Name="BirSonrakiCalistirilmaTar" Comparison="Less">
<DateTimeAdd Part="Day">
<Value Target="Date">Now</Value>
<Value Target="Integer">1</Value>
</DateTimeAdd>
</Criteria>
<Criteria Name="BitisTar" Comparison="Greater">
<Value Target="Date">Now</Value>
</Criteria>
</Filter>
<Columns />
<Order />
</FillXmlWithSchema>
Seçilen kayıtların Customer düğümü altına eklenmesini sağlar. Kayıtlar eklenmeden önce form verisi üzerinde var olan kayıtlar silinir. "DestinationNodeNameToClear" kısmı "Into" alanındaki düğüm ile birleştirilerek silinir.
<FillXmlWithSchema Name="Customers" VariablePrefix="" Into="Customers/Data" TemplatePath="Customers/Template" MasterDetailTemplatePath="" ClearDestinationNodes="True" DestinationNodeNameToClear="Template" SearchMethodToUse="Normal" LanguageId="" Repository="">
<Perform />
<Filter />
<Columns />
<Order />
</FillXmlWithSchema>
Tablodan okunan verinin değişkenlere atanması. Burada birden fazla kolon ve birden fazla değişkene veri atanabilir.
<SetVariable Name="$(FinansMuduru)">
<Value Culture="" Target="None" />
</SetVariable>
<FillXmlWithSchema Name="EBI_EmployeeRole" VariablePrefix="" Into="" TemplatePath="" MasterDetailTemplatePath="" ClearDestinationNodes="True" DestinationNodeNameToClear="" SearchMethodToUse="Normal" LanguageId="" Repository="">
<Perform>
<SetVariable Name="$(FinansMuduru)">
<Value Culture="" Target="None">$(EBI_EmployeeRole:RegistrationNumber)</Value>
</SetVariable>
</Perform>
<Filter>
<Criteria Name="Role">
<Value Culture="" Target="None">MIM</Value>
</Criteria>
</Filter>
<Columns>
<Column Node="" Name="RegistrationNumber" />
</Columns>
<Order />
</FillXmlWithSchema>
Birden fazla değişkene atama gerçekleştirme
<SetVariable Name="$(FinansMuduru)">
<Value Culture="" Target="None" />
</SetVariable>
<SetVariable Name="$(Role)">
<Value Culture="" Target="None" />
</SetVariable>
<FillXmlWithSchema Name="EBI_EmployeeRole" VariablePrefix="" Into="" TemplatePath="" MasterDetailTemplatePath="" ClearDestinationNodes="True" DestinationNodeNameToClear="" SearchMethodToUse="Normal" LanguageId="" Repository="">
<Perform>
<SetVariable Name="$(FinansMuduru)">
<Value Culture="" Target="None">$(EBI_EmployeeRole:RegistrationNumber)</Value>
</SetVariable>
<SetVariable Name="$(Role)">
<Value Culture="" Target="None">$(EBI_EmployeeRole:Role)</Value>
</SetVariable>
</Perform>
<Filter>
<Criteria Name="Role">
<Value Culture="" Target="None">MIM</Value>
</Criteria>
</Filter>
<Columns>
<Column Node="" Name="RegistrationNumber" />
<Column Node="" Name="Role" />
</Columns>
<Order />
</FillXmlWithSchema>
Verilerde 2 adet order by kullanımı varsayılan sıralama değeri Ascending olarak atanmaktadır.
<FillXmlWithSchema Name="Customers" VariablePrefix="" Into="" TemplatePath="" MasterDetailTemplatePath="/*/Customers" ClearDestinationNodes="True" DestinationNodeNameToClear="" SearchMethodToUse="Normal" LanguageId="" Repository="">
<Perform />
<Filter />
<Columns />
<Order>
<Order Type="Descending">
<OrderColumn Name="Aktif" DataType="System.Boolean, mscorlib" />
</Order>
<Order>
<OrderColumn Name="Lokasyon" DataType="System.String, mscorlib" />
</Order>
</Order>
</FillXmlWithSchema>
Tablodan gelen ilk değerin okunmasını sağlamak (select top 1 Name,VKN from schcustomers where name='test1' order by tarih desc) fill xml with schema nesnesi for each döngüsü mantığıyla çalışmaktadır.
<Break/> ifadesi eklenerek top 1 alması sağlanabilir. Burada sayaç ve if eklenerek bu alan top 10 top 5 gibi her tür işlem sağlanabilir.
<SetVariable Name="$(CustomerName)">
<Value Culture="" Target="None" />
</SetVariable>
<SetVariable Name="$(CustomerVKN)">
<Value Culture="" Target="None" />
</SetVariable>
<FillXmlWithSchema Name="Customers" VariablePrefix="" Into="" TemplatePath="" MasterDetailTemplatePath="" ClearDestinationNodes="True" DestinationNodeNameToClear="" SearchMethodToUse="Normal" LanguageId="" Repository="">
<Perform>
<SetVariable Name="$(CustomerName)">
<Value Culture="" Target="None">$(Customers:Name)</Value>
</SetVariable>
<SetVariable Name="$(CustomerVKN)">
<Value Culture="" Target="None">$(Customers:VKN)</Value>
</SetVariable>
<Break/>
</Perform>
<Filter>
<Criteria Name="Name">
<Value Culture="" Target="None">test1</Value>
</Criteria>
</Filter>
<Columns>
<Column Node="" Name="Name" />
<Column Node="" Name="VKN" />
</Columns>
<Order>
<OrderColumn Type="Descending">
<Column Name="Tarih" DataType="System.DateTime, mscorlib" />
</OrderColumn>
</Order>
</FillXmlWithSchema>