Aracılığıyla paylaş


İfadelerdeki Veri Türleri (Rapor Oluşturucusu ve SSRS)

Veri türleri, verimli bir şekilde depolanıp işlenebilmeleri için farklı çeşitlerdeki verileri temsil eder. Tipik veri türleri arasında metin (dize olarak da bilinir), ondalık basamaklı veya basamaksız sayılar, tarih ve saatler ile resimler bulunur. Rapordaki değerler Rapor Tanım Dili (RDL) veri türünde olmalıdır. Bir değeri raporda görüntülerken tercihlerinize uygun olarak biçimlendirebilirsiniz. Örneğin, para birimini temsil eden bir alan rapor tanımında kayan noktalı sayı olarak depolansa da, seçtiğiniz biçim özelliğine bağlı olarak çeşitli biçimlerde görüntülenebilir.

Görüntüleme biçimleri hakkında daha fazla bilgi için, bkz. Rapor Öğelerini Biçimlendirme (Rapor Oluşturucusu ve SSRS).

[!NOT]

SQL Server Data Tools'daki Rapor Oluşturucusu ve Rapor Tasarımcısı ile rapor tanımları (.rdl) oluşturabilir ve bunları değiştirebilirsiniz. Her yazma ortamı raporları ve ilişkili öğeleri oluşturmak, açmak ve kaydetmek için farklı yollar sağlar. Daha fazla bilgi için, Web'de microsoft.com sitesinde Rapor Tasarımcısı'nda ve Oluşturucusu'nda Rapor Tasarlama makalesine bakın.

Rapor Tanım Dili (RDL) Veri Türleri ve Ortak Dil Çalışma Zamanı (CLR) Veri Türleri

RDL dosyasında belirtilen değerler, RDL veri türünde olmalıdır. Rapor derlendiğinde ve işlendiğinde, RDL veri türleri CLR veri türlerine dönüştürülür. Aşağıdaki tabloda, Varsayılan olarak işaretlenmiş dönüştüre gösterilmektedir:

RDL Türü

CLR Türleri

Dize

Varsayılan: Dize

Chart, GUID, Timespan

Boole

Varsayılan: Boole

Tamsayı

Varsayılan: Int64

Int16, Int32, Uint16, Uint64, Byte, Sbyte

DateTime

Varsayılan: DateTime

DateTimeOffset

Float

Varsayılan: Double

Single, Decimal

Binary

Varsayılan: Byte[]

Değişken

Byte[] dışında yukarıdakilerden herhangi biri

VariantArray

Değişken Dizisi

Serileştirilebilir

Serileştirilebilir olarak işaretlenmiş veya ISerializable uygulayan değişken veya türler.

Veri Türlerini Anlama ve İfadeleri Yazma

Değerleri karşılaştırmak veya birleştirmek üzere ifadeler yazarken, örneğin grup veya filtre ifadeleri tanımlarken ya da toplamları hesaplarken veri türlerinin anlaşılması önemlidir. Karşılaştırmalar ve hesaplamalar yalnızca aynı veri türündeki öğeler arasında geçerlidir. Veri türleri eşleşmiyorsa, rapor öğesindeki veri türünü, ifade kullanarak açık olarak dönüştürmeniz gerekir.

Aşağıdaki listede, verileri farklı bir veri türüne dönüştürmeniz gerekebilecek durumlar açıklanmaktadır:

  • Bir veri türündeki rapor parametresinin değerini farklı veri türündeki bir veri kümesi alanıyla karşılaştırma.

  • Farklı veri türlerinin değerlerini karşılaştıran filtre ifadeleri yazma.

  • Farklı veri türlerinin alanlarını birleştiren sıralama ifadeleri yazma.

  • Farklı veri türlerinin alanlarını birleştiren grup ifadeleri yazma.

  • Veri kaynağından alınmış değeri bir veri türünden farklı bir veri türüne dönüştürme.

Rapor Verilerinin Türünü Belirleme

Bir rapor öğesinin veri türünü belirlemek için, veri türünü döndüren bir ifade yazabilirsiniz. Örneğin, MyField alanının veri türünü göstermek için, şu ifadeyi tablo hücresine ekleyin: =Fields!MyField.Value.GetType().ToString(). Sonuç, MyField alanını göstermede kullanılan CLR veri türünü görüntüler, örneğin, System.String veya System.DateTime.

Veri Kümesi Alanlarını Farklı Veri Türüne Dönüştürme

Ayrıca, veri kümesi alanlarını raporda kullanmadan önce dönüştürebilirsiniz. Aşağıdaki listede, varolan veri kümesi alanını dönüştürebileceğiniz yollar açıklanmaktadır:

  • Veri kümesi sorgusunu, dönüştürülmüş verileri olan yeni bir sorgu alanı ekleyecek şekilde değiştirin. İlişkisel veya çok boyutlu veri kaynaklarında, bu işlem, dönüşümü gerçekleştirmek üzere veri kaynaklarını kullanır.

  • Bir sonuç kümesi sütunundaki tüm verileri farklı veri türündeki yeni bir sütuna dönüştüren bir ifade yazarak, varolan rapor veri kümesi alanını temel alan bir hesaplanan alan oluşturun. Örneğin, şu ifade Year alanını tamsayı değerinden dize değerine dönüştürür: =CStr(Fields!Year.Value). Daha fazla bilgi için, bkz. Rapor Verileri Bölmesinde Alan Ekleme, Düzenleme, Yenileme (Rapor Oluşturucusu ve SSRS).

  • Kullandığınız veri işleme uzantısının önceden biçimlendirilmiş verileri almak için meta veri içerip içermediğini denetleyin. Örneğin, SQL Server Analysis Services MDX sorgusu, küpü işlerken daha önceden biçimlendirilmiş olan küp değerleri için FORMATTED_VALUE genişletilmiş özelliğini içerir. Daha fazla bilgi için, bkz. Using Extended Field Properties for an Analysis Services Database.

Parametre Veri Türlerini Anlama

Rapor parametrelerinin beş veri türünden birinde olması gerekir: Boole, Tarih/Saat, Tamsayı, Kayan veya Metin (Dize de denir). Veri kümesi sorgusu sorgu parametreleri içeriyorsa, rapor parametreleri otomatik olarak oluşturulur ve sorgu parametrelerine bağlanır. Rapor parametresinin varsayılan veri türü Dize'dir. Rapor parametresinin varsayılan veri türünü değiştirmek için, Rapor Parametre Özellikleri iletişim kutusunun Genel sayfasındaki Veri Türü açılır listesinden doğru değeri seçin.

[!NOT]

Tarih/Saat veri türlerindeki rapor parametreleri milisaniyeleri desteklemez. Milisaniyeleri içeren değerleri temel alan bir parametre oluşturabilseniz de, milisaniyeler içeren Tarih veya Saat değerleri olan kullanılabilir değerler açılır listesinden bir değer seçemezsiniz.

Veri Türlerini Dönüştüren veya Veri Bölümlerini Ayıklayan İfadeler Yazma

Birleştirme işlecini (&) kullanarak metin ve veri kümesi alanlarını birleştirdiğinizde, ortak dil çalışma zamanı (CLR) genellikle varsayılan biçimleri sağlar. Veri kümesi alanını veya parametresini açık olarak belirli bir veri türüne dönüştürmeniz gerektiğinde, verileri dönüştürmek için bir CLR yöntemini veya Visual Basic çalışma zamanı kitaplık işlevini kullanmanız gerekir.

Aşağıdaki tabloda, veri türlerini dönüştürme örnekleri gösterilmektedir.

Dönüşüm türü

Örnek

Tarih/Saat'i Dize'ye

=CStr(Fields!Date.Value)

Dize'yi Tarih/Saat'e

=DateTime.Parse(Fields!DateTimeinStringFormat.Value)

Dize'yi DateTimeOffset'e

=DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)

Yılı Ayıklama

=Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)

Boole'yi Tamsayı'ya

=CInt(Parameters!BooleanField.Value)

-1 True ve 0 False'tur.

Boole'yi Tamsayı'ya

=System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 True ve 0 False'tur.

DateTimeOffset değerinin yalnızca Tarih/Saat kısmı

=Fields!MyDatetimeOffset.Value.DateTime

DateTimeOffset değerinin yalnızca Fark kısmı

=Fields!MyDatetimeOffset.Value.Offset

Değerin görüntülenme biçimini denetlemek için Format işlevini de kullanabilirsiniz. Daha fazla bilgi için, bkz. İşlevler (Visual Basic) (İngilizce).

Gelişmiş Örnekler

Veri kaynağındaki tüm veri türleri için dönüşüm desteği sağlamayan veri sağlayıcısı olan bir veri kaynağına bağlandığınızda, desteklenmeyen veri kaynağı türlerinin varsayılan veri türü Dize'dir. Aşağıdaki örnekler, dize olarak döndürülen belirli veri türlerine çözümler sağlar.

Dize ile CLR DateTimeOffset Veri Türünü Birleştirme

Çoğu veri türünde, CLR, farklı veri türlerindeki değerleri & işlecini kullanarak tek bir dizeye birleştirebilmeniz için varsayılan dönüşümler sağlar. Örneğin şu ifade, "The date and time are: " metnini bir System.DateTime değeri olan StartDate veri kümesi alanıyla birleştirir: ="The date and time are: " & Fields!StartDate.Value.

Bazı veri türlerinde, ToString işlevini eklemeniz gerekebilir. Örneğin, şu ifade, tarihi, saat, ve UTC saat dilimine göre saat dilimi farkını içeren System.DateTimeOffset CLR veri türünü kullanarak aynı örneği gösterir: ="The time is: " & Fields!StartDate.Value.ToString().

Dize Veri Türünü CLR DateTime Veri Türüne Dönüştürme

Veri işleme uzantısı veri kaynağında tanımlı tüm veri türlerini desteklemiyorsa, veriler metin olarak alınabilir. Örneğin, datetimeoffset(7) veri türü değeri Dize veri türü olarak alınabilir. Avustralya'da Perth şehrinde, 1 Temmuz 2008, saat 06:05:07.9999999 için olan dize değeri şöyle görünecektir:

2008-07-01 06:05:07.9999999 +08:00

Bu örnek, tarihi (1 Temmuz 2008), ardından 7 basamaklık duyarlılığa kadar saati (06:05:07.9999999) ve sonra saat ve dakika cinsinden UTC saat dilimi farkını (artı 8 saat, 0 dakika) gösterir. Aşağıdaki örneklerde, bu değer MyDateTime.Value adlı bir String alanına yerleştirilmiştir.

Bu verileri bir veya daha fazla CLR değerine dönüştürmek için, aşağıdaki stratejilerden birini kullanabilirsiniz:

  • Metin kutusunda, dizenin bölümlerini ayıklamak için ifade kullanın. Örneğin:

    • Aşağıdaki ifade, UTC saat dilimi farkının yalnızca saat kısmını ayıklar ve onu dakikaya dönüştürür: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60

      Sonuç şudur: 480.

    • Aşağıdaki ifade, dizeyi tarih ve saat değerine dönüştürür: =DateTime.Parse(Fields!MyDateTime.Value)

      MyDateTime.Value dizesinde UTC farkı varsa, DateTime.Parse işlevi önce UTC farkını ayarlar (07:00 saatini - [+08:00] önceki gecenin 23:00 UTC saatine getirir). Ardından DateTime.Parse işlevi yerel rapor sunucusunun UTC farkını uygular ve gerekirse, saati yeniden Gün Işığından Yararlanma Saati'ne göre ayarlar. Örneğin, Redmond, Washington,'da Gün Işığından Yararlanma Saati'ne göre ayarlanmış yerel saat farkı [-07:00] değerini taşır ya da 23:00'ten 7 saat öncedir. Sonuç aşağıdaki DateTime değeridir: 2007-07-06 04:07:07 PM (6 Temmuz 2007, 16:07).

Dizeleri DateTime veri türlerine dönüştürme hakkında daha fazla bilgi için, MSDN'de Tarih ve Saat Dizelerini Ayrıştırma, Tarih ve Saati Belirli Bir Kültür İçin Biçimlendirme ve DateTime, DateTimeOffset ve TimeZoneInfo İçinden Birini Seçme konularına bakın (İngilizce).

  • Rapor veri kümesine, dizenin bölümlerini ayıklamak için ifade kullanan yeni bir hesaplanan alan ekleyin. Daha fazla bilgi için, bkz. Rapor Verileri Bölmesinde Alan Ekleme, Düzenleme, Yenileme (Rapor Oluşturucusu ve SSRS).

  • Ayrı sütunlar oluşturmak üzere tarih ve saat değerlerini bağımsız olarak ayıklamak için rapor veri kümesi sorgusunu Transact-SQL işlevlerini kullanacak şekilde değiştirin. Aşağıdaki örnekte, yıl için bir sütun ve dakikaya dönüştürülmüş olarak UTC saat dilimi için de başka bir sütun eklemek amacıyla DatePart işlevinin nasıl kullanılacağı gösterilmektedir:

    SELECT

    MyDateTime,

    DATEPART(year, MyDateTime) AS Year,

    DATEPART(tz, MyDateTime) AS OffsetinMinutes

    FROM MyDates

    Sonuç kümesinin üç sütunu vardır. İlk sütun tarih ve saat, ikinci sütun yıl ve üçüncü sütun da dakika cinsinden UTC farkıdır. Aşağıdaki satır örnek verileri göstermektedir:

    2008-07-01 06:05:07 2008 480

SQL Server veritabanı veri türleri hakkında daha fazla bilgi için SQL Server Books Online'da Data Types (Transact-SQL) (Veri Türleri (Transact-SQL)) ve Date and Time Data Types and Functions (Transact-SQL) (Tarih ve Saat Veri Türleri ve İşlevleri (Transact-SQL)) konularına bakın.

SQL Server Analysis Services veri türleri hakkında daha fazla bilgi için, SQL Server Books Online'da Data Types in Analysis Services (Analysis Services'ta Veri Türleri) konusuna bakın.

Ayrıca bkz.

Kavramlar

Rapor Öğelerini Biçimlendirme (Rapor Oluşturucusu ve SSRS)