Nedir?

Şema verilerinin form datasına yüklenmesi amacıyla kullanılır.

Sentaks
 <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

NameVerilerin 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.



NormalVarsayılan arama metodu
CreateRowIfNotExistsOnSchemaKayıt bulunamazsa boş bir kayıt eklenir
CreateNewRowŞemada yeni bir kayıt yaratılır

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





TypeSıralama tipini belirler. "Ascending" ve "Descending" değerlerini alır. Varsayılan "Ascending"

Ö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. 

Detay bölümü olmayan durumlarda kullanım
  <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. 

Detay bölümü olmayan durumlarda kullanım 2
<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>
Detay bölümü olmayan durumlarda kullanım 3
<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.   

Düğüm temizleme
<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.

Düğüm temizleme
 <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

Düğüm temizleme
 <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.

Düğüm temizleme
<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. 

Düğüm temizleme
 <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>




Bakınız

GetSchemaData

SetVariable

Set

  • No labels