İfadelerde Veri Türleriyle Çalışma (Rapor Oluşturucusu 3.0 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ü biçimleri hakkında daha fazla bilgi için bkz: Rapor Öğelerini Biçimlendirme (Rapor Oluşturucusu 3.0 ve SSRS).
Not
Business Intelligence Development Studio'daki Rapor Oluşturucusu 3.0 ve Rapor Tasarımcısı ile rapor tanımlarını (.rdl) oluşturabilir ve 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 3.0'da 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 |
---|---|
String |
Varsayılan: Dize Chart, GUID, Timespan |
Boolean |
Varsayılan: Boole değeri |
Tamsayı |
Varsayılan: Int64 Int16, Int32, Uint16, Uint64, Byte, Sbyte |
DateTime |
Varsayılan: DateTime DateTimeOffset |
Float |
Varsayılan: Çift 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, alan veri türünü göstermek için MyField, aşağıdakileri ekleyin ifade bir tablo hücresi için: =Fields!MyField.Value.GetType().ToString().The result displays the CLR data type used to represent MyField, for example, System.String or 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, aşağıdaki ifade alan dönüştürür Year arasında bir tamsayı değeri bir dize değeri için: =CStr(Fields!Year.Value).For more information, see Nasıl yapılır: Rapor Verileri Bölmesinde Alan Ekleme, Düzenleme, Yenileme (Rapor Oluşturucusu 3.0 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.For example, a SQL Server Analysis Services MDX query includes a FORMATTED_VALUE extended property for cube values that have already been formatted when processing the cube.Daha fazla bilgi için bkz: Bir Analysis Services veritabanı (ssrs) için genişletilmiş alan özellikleri.
Parametre Veri Türlerini Anlama
Rapor parametrelerini beş veri türlerinden biri olmalıdır: Boole, DateTime, tamsayı, kayan noktalı sayı veya metin (dize olarak da bilinir).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 parametresi varsayılan veri türünü değiştirmek için doğru değeri seçin veri türü kapalı açılır listede Genel sayfa Rapor parametre özellikler iletişim kutusu.
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 kullanarak metin ve dataset alanları Birleştir ne zaman işleç (&), ortak dil çalışma zamanı (clr) genellikle varsayılan biçimleri. sağlarVeri 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 tablo veri türleri dönüştürme örnekler gösterir.
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 False 0 olur. |
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: işlevleri (Visual Basic).
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
Değerler farklı veri türlerini tek bir arada kullanabilirsiniz veri türleri için clr varsayılan dönüşümleri sunar, böylece dize kullanarak & işleç.Örneğin, aşağıdaki ifade metni birleştirir "tarih ve saat: " bir dataset alan StartDate, olduğu bir System.DateTime değeri: ="The date and time are: " & Fields!StartDate.Value.
Bazı veri türlerinde, ToString işlevini eklemeniz gerekebilir.Örneğin, aşağıdaki ifade clr veri türü kullanarak aynı örnek gösterir System.DateTimeOffset, tarih ve saat utc saat dilimine göre mahsup bir saat dilimi içerir: ="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, bir datetimeoffset(7) veri türü değeri alınan bir dize veri türü.In Perth, Australia, the string value for July 1, 2008, at 6:05:07.9999999 A.M.would resemble:
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 örnekler için bu değer olarak yerleştirilen bir String alan adı verilen MyDateTime.Value.
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 parçası utc saat dilimi uzaklığı ve dakikaya dönüştürür yalnızca saat ayıklar: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60
Sonuç 480.
Aşağıdaki ifade, bir tarih ve saat değeri dize dönüştürür: =DateTime.Parse(Fields!MyDateTime.Value)
If the MyDateTime.Value string has a UTC offset, the DateTime.Parse function first adjusts for the UTC offset (7 A.M.- [+08:00] to the UTC time of 11 P.M.the night before).The DateTime.Parse function then applies the local report server UTC offset and, if necessary, adjusts the time again for Daylight Saving Time.Örneğin, Redmond, Washington, yerel saat farkı ayarlanması için gün ışığından yararlanma saatine [-07:00], ya da 7 saat 11 PM.'den öncekiSonuç şudur DateTime değeri: 2007-07-06 04:07:07 PM (Temmuz 6, 2007 at 4:07 p.m).
Dizelerine dönüştürme hakkında daha fazla bilgi için DateTime veri türlerini görmek ayrıştırma tarih ve saat dizeleri, belirli bir kültür için biçimlendirme tarih ve saat, ve arasında seçme DateTime, DateTimeOffset ve TimeZoneInfo MSDN'de.
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: Nasıl yapılır: Rapor Verileri Bölmesinde Alan Ekleme, Düzenleme, Yenileme (Rapor Oluşturucusu 3.0 ve SSRS).
Kullanmak için rapor dataset sorgu değiştirmek Transact-SQL bağımsız olarak yarat ayrı sütun için tarih ve saat değerleri ayıklamak için İşlevlerAşağıdaki örnek, nasıl kullanılacağını gösterir işlev DatePart yılı ve utc saat dilimi için bir sütun için bir sütun eklemek için dakikaya dönüştürülür:
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ı türleri hakkında daha fazla bilgi için bkz: "Veri türleri" ve "tarih ve saat veri türleri ve İşlevler" de sql Server Çevrimiçi Kitaplar.