Visual Studio 2015’de ReportViewer ve RDLC Report Bileşenleri Ekleme

Visual Studio 2015 ile “RDLC raporları” hazırlamak istediğinizde kurulumunuza bağlı olarak “Windows Forms Application” uygulaması geliştirirken, toolbox’da raporlama(reporting) tab’ını göremeyeceksiniz. Bunun sebebi “SQL Server Data Tools” yüklemesinin yapılmamış olmasıdır. Visual Studio 2015 ‘deTools” => “Extension & Updates”  seçeneğinin altında “Update” tab’ında “SQL Server Data Tools” yüklemesini göreceksiniz. Buradan gerekli güncellemeyi yapabilirsiniz ama bu güncelleme sonucunda da eğer “Windows Forms Application” uygulaması geliştirirken, toolbox’da raporlama(reporting) tab’ını göremiyorsanız; farklı bir yöntem daha mevcut.

Öncelikle “Denetim Masası” => “Program Ekle/Kaldır” kısmına gidiniz. Gelen listeden “Visual Studio 2015” ‘i sağ tıklayarak “Değiştir” seçeneği ile kuruluma “SQL Server Data Tools”  özelliğini seçerek “Update” işlemini yapınız. Yaklaşık 118 MB ‘lık bir yükleme sonucu kurulum tamamlandıktan sonra ilgili “toolbox” ve “Item Ekleme” kısmında ilgili nesneler görünecek ve kullanılabilecektir. İlgili adımları aşağıdaki görsellerden de takip ederek yapabilirsiniz.

reporting-in-visual-studio-1

 

kmb-udemy-reklam

SASS – Nedir? Visual Studio 2013 ile Entegrasyon

SASS-Syntactically Awesome StyleSheets

Syntactically Awesome StyleSheet…

SASS Nedir? ile SASS video serimize başlıyoruz. Sizlere bu video seri ile SASS ‘ın ne olduğu ve Visual Studio 2013 ile nasıl kullanılabileceğini anlatacağım. Serimizi takip eden videolarda da örneklerle beraber SASS ‘ın en belirgin özelliklerini size aktarıyor olacağım. SASS’ ı Visual Studio olmadan kullanmak isterseniz ücretli ya da ücretsiz(open source) uygulamaları bulunmaktadır. SASS ‘a ait sitedeki install başlığından bu uygulamaları görebilir ve ilgili web sayfalarına giderek indirebilirsiniz. Visual studio 2012 ve 2013 ile kullanmak isterseniz gerekli extension’ı kurmanız gerekmektedir. İster Visual Studio içindeki Tools –> Extension & Updates kısmından isterseniz de aşağıdaki web sayfasından SassyStudio isimli extension’ı indirerek kurabilirsiniz.

SASS dosyalarının uzantısı “.scss” şeklindedir. Visual studio kullanarak oluşturduğunuz bir web projesine sağ tıklayarak Add –> Add New Item diyerek Sass File ekleyebilirsiniz. Bir de Sass Partial File isimli bir dosya daha göreceksiniz. Bu dosyanın normal sass dosyadan farkı yoktur. Dosya adının başındaki “_”(alt çizgi) bu dosyanın önemli kısmıdır. Bu o dosyanın başka projelerde de kullanılabilecek olan bir kod parçası olarak işaretlendiğini belirtir. Yani Sass File’lara birden fazla daha önce yazmış olduğunuz sass partial file import edebilirsiniz.

Örnek bir SASS kodunu da giriş videosu yazımızda sizlerle paylaşmak istiyorum.

$yazi-tipim:    Helvetica, sans-serif; 
$ana-renk: #333;

body { 
    font: 100% $yazi-tipim; 
    color: $ana-renk; 
}

Buradaki kodlamada; sass file üzerinde değişken tanımlamayı görüyorsunuz. “$” simgesini değişken isminin önüne yazarak değişken tanımlıyoruz ve kullanırken de gene “$” simgesini kullanarak istediğimi yerde kullanıyoruz. Formül şu şekilde;

$[değişken_adı] : [değer] ;

Bu örnek sass dosyasını derlediğimizde(compile) – visual studio içinde kaydettiğimiz anda derlenmiş oluyor “.css” dosyamız oluşturuluyor.

body { 
    font: 100% Helvetica, sans-serif; 
    color: #333; 
}

Derleme sonrası; tanımladığımız değişkenleri kullandığımız yerde değişkenin değerlerinin yazıldığını görebilirsiniz. Tabii ki bu sass dosyalarının basit bir özelliği, çok daha fazlası ve gelişmiş yetenekleri var. Bunları ilerleyen videolarımızda sizlere anlatmaya çalışacağım. Bu giriş videosu için bu şekilde bir yazıyı yazarak da sizler için konuya giriş yapmış oluyorum. Video ile sizleri başbaşa bırakıyorum.

kmb-udemy-reklam

GitHub–Visual Studio 2012 ve Visual Studio 2013 Entegrasyonu

Git ve GitHub Serisi ile ilgili diğer videolara aşağıdaki linklerden ulaşabilirsiniz.

  1. Git ve GitHub Nedir? Neden Kullanayım? Nasıl Kurulur?
  2. GitHub Sitesi Hakkında Bilinmesi Gerekenler
  3. GitHub–Online Olarak Çalışmak
  4. GitHub–Offline Kullanmak ve Senkronizasyon

Serimizin bu videosunda artık yavaş yavaş yazılım spesifik kullanıcılara doğru GitHub’ın kullanımına yer veriyor olacağım ki zaten sistemin asıl amacı kodlama alanında hizmet vermek. Fakat farklı sektörlerce de kullanılabilecek esnek bir sistem olduğunu sizlere göstermek ve farklı sektör grubundan insanlarında kullanabilmesi yönünde önceki videolarımda programcılara yönelik, ağırlıkta anlatmadım.

Bu video’dan itibaren artık yazılımcı tarafından GitHub’ı Visual Studio ile ele alıyor olacağız. Tabii ki öncelikle Git, SVN sistemini ve GitHub Push hizmetini Visual Studio 2012 ve 2013 üzerinde kullanabilir hale getirelim. Bu işlemi extension’lar üzerinde ihtiyacımızı gideriyor olacağız. Aslında Visual Studio 2012 için böyle bir extension ile bu ihtiyacımızı gideriyor olacağız. Visual Studio 2013 zaten Git Source Provider entegrasyonu ile gelmektedir. Sadece aktifleştireceğiz.  Sizleri video ile baş başa bırakıyorum.

kmb-udemy-reklam

Visual Studio 2010 IDE Color Theme

Visual Studio 2010 ‘da Dark Theme yani karanlık bir tema kullanmak istediğinizde malesef Visual Studio 2012 ‘deki gibi hazır gelen bir tema extension’ı var ve yok. (Belki bende fazla araştırmamış olabilirim Gülümseme ) Google üzerinde arama yaptığınızda çıkan sonuçlardan ilk ikisinde aslında hazır bir renklendirme extension’ından bahsetmekte. Bu extension’ı internet sitesinden indirip kurabileceğiniz gibi visual studio 2010 extension manager kullanarak da yükleyebilirsiniz. Site’den indirmek isterseniz, The Expression color theme adresinden ulaşabilirsiniz.

Visual Studio 2010 Extension Manager ile kurmak isterseniz. Tools –> Extension Manager… –> “Visual Studio Color Theme Editor” aratıp yükleyiniz ve visual studio 2010’u yeniden başlatınız.

Visual Studio 2010 IDE Color Theme

Visual Studio 2010 IDE Color Theme

Böylece yeni bir tab gelecektir.

Visual Studio 2010 IDE Color Theme

Buradan hazır temaları seçebileceğiniz gibi, “Customize Colors…” seçeneği ile tek tek kendiniz de renklendirme yapabilirsiniz. Fakat ben buradan Text Editor(kod yazma kısmı) için bir düzenleme yapamadım. bulamamışta olabilirim. 

Bende kendimce hızlıca renk kodlarını değiştirerek bir renk ayar dosyası(vssettings) oluşturdum.

Renk ayarını yapmak için izlemeniz gereken kısayol; Tools –> Options –> Environment –> Font and Colors  şeklindedir.

Visual Studio 2010 IDE Color Theme

Visual Studio 2010 IDE Color Theme

Buradan tüm renkleri kendinizde değiştirebilirsiniz. Ama söylemeliyim ki biraz çetrefilli bir iş, hazırlıklı olun. Eğer isterseniz benim kendim için hazırladığım sadece renk ayarlarını içeren vsssettings dosyasını aşağıdan indirerek onuda import edebilirsiniz. Kendi oluşturduğum renkler için aşağıda bir görsel paylaşıyorum.

Visual Studio 2010 IDE Color Theme

Beğenirseniz ve ayar dosyasını(vssettings) sizde import etmek isterseniz. Import  işlemide şu şekildedir. Tools –> Import and Export Settings… –> Import selected environment settings –> Yes, save my current settings(bu sizin şu an ki ayarlarınızı belirlediğiniz konuma kaydedecek, bir sorun olursa bu dosyayı import ederek eski haline dönebilirsiniz.) –> Browse… –> verdiğim link’ten indirdiğiniz vsssettings dosyasını seçin(Exported-2013-02-25-FontColor.vssettings) –> Next –> Finish

Visual Studio 2010 IDE Color Theme

Visual Studio 2010 IDE Color Theme

Visual Studio 2010 IDE Color Theme

Visual Studio 2010 IDE Color Theme

Visual Studio 2010 IDE Color Theme

Visual Studio 2010 IDE Color Theme

LINQ – SQL Database Erişimi, Select İşlemi ve Verileri XML Dosyaya Yazmak

Language Integrated Query (LINQ) , dil ile bütünleştirilmiş sorgu teknolojisi ile IEnumerable arayüzünden iplemente edilmiş dizi(array) nesneleri üzerinde SQL ifadeleri içeren sorgular ile filtreleme yapabilmenizi sağlamaktadır. Bu konuyla ilgili olarak internette bulunan makalelerin hepsini okumanızı tavsiye ederim. Bu teknolojinin kullanılmasını şiddetle tavsiye ederim. 🙂

LINQ ile IEnumerable arayüzünden iplemente edilmiş nesneler üzerinde SQL ifadelerini kullanarak sorgulama yapılabildiği gibi, Database nesnelerini temsil eden nesneler üzerinde de kullanabilir hatta XML nesnelerinde bile kullanabilirsiniz.
Yazdığınız kod daki netliği(okunabilirlik) ve sadeliği sizde kullanınca farkedeceksiniz.. Hatta sizi birçok rutin döngüden kurtaracaktır. Bu teknolojiyi kullandıktan sonra aklıma gelen ilk düşünce ,bence fazla uzak olmayan bir zaman sonra artık kod yazmayacağız ki bu teknoloji ile bile bu yönde çok büyük bir adım atıldığına inanıyorum. Bu teknolojiyi bile öğrenince bu teknolojinin kapsadığı alanda artık düşüneceğimiz tek şey; nasıl kod yazayım diye düşünmek değil, yapılacak iş nedir diye olacaktır. Bence bunu sizde farkedeceksiniz..
Güzel bir LINQ örneği ile bu yazıyı sonlandıralım 🙂
AdventureWorks isimli database’den “Production.ProductCategory” isimli tablodaki verileri çekecek ve üzerinde filtreleme yapacak ve ekrana verileri yazacak bir LINQ örneği düşünüyorum. Bunun için sırasıyla ilk önce bir console projesi oluşturalım. Ben ismini “CS30_CreateDLinq” oalrak adlandırdım. Projemizde kullacağımız LINQ nesneleri için projemize gereken referans’ları eklememiz gerekiyor. Referans listesi aşağıdaki gibi olmalıdır..

Projemiz de;
–> AdventureWorks database’ini temsil eden bir class,
–> Production.ProductCategory isimli tabloyu temsil eden bir class oluşturacağız..
İlk olarak Production.ProductCategory isimli tabloyu temsil eden bir class’ı oluşturalım. “ProductCategory.cs” isimli class’ı projemize ekliyoruz.

 

kmb-udemy-reklam


ProductCategory.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Linq;
using System.Text;
using System.Data.Linq.Mapping;
namespace CS30_CreateDLinq
{
[Table(Name = “Production.ProductCategory”)]
public class ProductCategory
{
[Column(Name = “ProductCategoryID”, IsPrimaryKey = true, CanBeNull = false, IsDbGenerated = true)]
public int ProductCategoryID { get; set; }
[Column(Name = “Name”, CanBeNull = false)]
public string Name { get; set; }
[Column(Name = “rowguid”, CanBeNull = false)]
public Guid RowGuid { get; set; }
[Column(Name = “ModifiedDate”, CanBeNull = false)]
public DateTime ModifiedDate { get; set; }
}
}


Tablodaki her bir kolon için bir Property tanımladık ve kolonların özelliklerini property’lere attribute olarak ekledik.. Tablo ismini class’ın üstünde belirttik.
Şimdi database’i temsil eden class’ı oluşturalım. Bu class’da yukardaki tabloyu işaret eden bir property oluşturacağız.. Database’i temsil eden class’lar DataContext nesnesinden inherit edilir ve DataContext nesnesinin metodlarından faydalanacağız..

 


AdventureWorks.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CS30_CreateDLinq
{

[System.Data.Linq.Mapping.Database(Name = “AdventureWorks”)]
public class AdventureWorks : System.Data.Linq.DataContext
{

public System.Data.Linq.Table ProductCategories
{
get
{
return this.GetTable();
}
}

public AdventureWorks(string connectionString)
: base(connectionString)
{ }

}
}


Database ‘i temsil eden class’ın Constructor’ını oluştururken ConnectionString parametresi alıyoruz ve bu parametreyi inherit alınan DataContext nesnesine, base class’a geçiriyoruz.. DataContext nesnesi buradan gerekli bağlantı nesnelerini ve sorgulama nesnelerini hatta sorguları oluşturup çalıştırabiliyor.

Bu database nesnesine ProductCategory tablosunu temsil eden bir Property ekledik property’nin tipi ProductCategory class’ından oluşan bir Table ‘dır. Bu Property’in değeri okunmak istendiğinde yani kullanıldığında; GetTable extension(genişletilebilir) metodu ile belirtilen tip’te(ProductCategory tipinde) bir tablo elde edilir. Biz ProductCategory tablosundan veri okuyacağımız için bu tip ProductCategory tipi olmalıdır. Böylece elimizde ProductCategory class’larından oluşan bir tablo yani bir nevi bir liste elde etmiş olacağız.

Bu arada database’i temsil eden class üstüne bağlanmak istediğimiz database’in ismini attribute olarak geçmeyi unutmuyoruz..

Artık console verimizi çekmeye hazırız..

Program.cs class’ımıza şu şekilde yazıyoruz.. Kod açıklama satırları ile şöyle;


Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using System.Text;

namespace CS30_CreateDLinq
{

public class Program
{
static void Main(string[] args)
{

//Bütün veri çekilir..
var productCategories = GetProductCategoryData();

if (productCategories != null)
{
//Tüm veri listelenir..
foreach (ProductCategory pro in productCategories)
{
Console.WriteLine(
“\t” + pro.Name +
“\t” + pro.ProductCategoryID.ToString() +
“\t” + pro.RowGuid.ToString() +
“\t” + pro.ModifiedDate.ToShortDateString());
}
}

Console.WriteLine();
Console.ReadKey();

}

public static ProductCategory[] GetProductCategoryData()
{

//Database’i temsil eden nesne oluşturulur..
AdventureWorks adwentureWorksDatabase = new AdventureWorks(“Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True“);

//Tüm veri elde edilir..
var productCategories = from pro in adwentureWorksDatabase.ProductCategories
select pro;

//Veri yoksa uyarı verilir..
if (productCategories == null)
{
Console.WriteLine(“Database nesnesi null..”);
Console.WriteLine();
Console.ReadKey();
}

//Veri dizi olarak geri döndürülür..
return productCategories.ToArray();

}


Yukardaki kod ile ProductCategory tipinde bir dizi elde edip, verileri ekrana basıyoruz..

Peki verileri bir xml dosyaya yazmak istesek ve bunun için XLINQ ‘dan faydalansak, bunun için kodumuzu şu şekilde yeniden yazalım..

 


Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using System.Text;

namespace CS30_CreateDLinq
{

public class Program
{

static void Main(string[] args)
{

//Bütün veri çekilir..
var productCategories = GetProductCategoryData();

if (productCategories != null)
{

//Tüm veri listelenir..
foreach (ProductCategory pro in productCategories)
{
Console.WriteLine(
“\t” + pro.Name +
“\t” + pro.ProductCategoryID.ToString() +
“\t” + pro.RowGuid.ToString() +
“\t” + pro.ModifiedDate.ToShortDateString());
}

//Tüm veriyi XML dosyaya yazma işlemi başlatılır.
Console.WriteLine();
WriteProductCategoryDataToXmlFile();

}

Console.WriteLine();
Console.ReadKey();

}

public static ProductCategory[] GetProductCategoryData()
{

//Database’i temsil eden nesne oluşturulur..
AdventureWorks adwentureWorksDatabase =new AdventureWorks(“Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True“);

//Tüm veri elde edilir..
var productCategories = from pro in adwentureWorksDatabase.ProductCategories
select pro;

//Veri yoksa uyarı verilir..
if (productCategories == null)
{
Console.WriteLine(“Database nesnesi null..”);
Console.WriteLine();
Console.ReadKey();
}

//Veri dizi olarak geri döndürülür..
return productCategories.ToArray();
}

public static void WriteProductCategoryDataToXmlFile()
{

//Veriyi yazacak XML dosya oluşturulur..
string filePath = CreateXmlFile();

//XML dosyaya yazılacak veri elde edilir..
var productCategories = GetProductCategoryData();

//Veri varsa..
if (productCategories != null)
{

//Tüm veriyi XML dosyaya yazacak metod çağrılır..
WriteDataToXmlFile(productCategories, filePath);

//Yazım işleminin bitti§ini belirten uyarı verilir..
Console.WriteLine(“\nXML Dosya Oluşturuldu..\n”);
}
else
{

//Veri yoksa uyar verilir..
Console.WriteLine(“\nXML Dosya Oluşturmak için Gereken Veri Dizisi Yok !\n”);
}
}

private static string CreateXmlFile()
{

string path = string.Empty;

do
{
//Kullanıcıdan XML dosya konumu okunur..
Console.Write(“XML Dosya Konumunu Giriniz : “);
path = Console.ReadLine();

try
{

//Dosya oluşturulmaya çalıştırılır.. Eğer oluşturulamaz ise hata oluşur..
System.IO.File.Create(path).Close();

//Dosya oluşturulursa dosya konumu geri döndürülür..
return path;
}
catch (Exception)
{
//Dosyanın oluşturulamamasından dolayı uyarı verilir..
Console.WriteLine(“\nGeçerli Bir Konum Giriniz !\n”);
path = string.Empty;
}

//Dosya oluşturulana kadar işlem tekrarlanır..
} while (path.Trim() == string.Empty);

return path;
}

private static void WriteDataToXmlFile(ProductCategory[] productCategories, string filePath)
{

//Eğer XML ‘e yazılacak veri varsa..
if (productCategories.Length > 0)
{

//XmlElement’leri tutacak bir liste oluşturulur..
List productCategoryElements = new List();

//XmlElement’ler oluşturulup listeye atılır..
foreach (ProductCategory pro in productCategories)
{

productCategoryElements.Add(
new XElement(“ProductCategory”,
new XElement(“ProductCategoryID”, pro.ProductCategoryID.ToString()),
new XElement(“Name”, pro.Name),
new XElement(“RowGuid”, pro.RowGuid.ToString()),
new XElement(“ModifiedDate”, pro.ModifiedDate.ToShortDateString())));

}

//XmlDocument oluşturulur, Tanımlama bilgisi ve iç elementler XmlDocument’e eklenir..
XDocument xmlDoc = new XDocument(
new XDeclaration(“1.0”, string.Empty, “true”),
new XElement(“ProductCategories”, productCategoryElements.ToArray()));

//XmlDocument dosyaya yazılır..
xmlDoc.Save(filePath);

}
else
{

//Veri yoksa uyarı verilir..
Console.WriteLine(“\nXML Dosya Oluşturmak için Gereken Veri Dizisi Yok !\n”);

}
}
}

}

 


Yukardaki kodu çalıştırdığınızda ilk önce veriler listelenecektir. Ardından sizden bir dosya konumu istenecek ve belirttiğiniz dosya konumuna örneğin; “c:\test.xml” yada sadece “test.xml” yazarak programın çalıştığı proje klasöründeki BIN – DEBUG klasörü içine dosyanız oluşturulacaktır.. Eğer belirttiğiniz konum geçersiz yada belirttiğiniz konuma dosya oluşturulamazsa sizden tekrar geçerli bir konum istenecektir.

LINQ ile XLINQ kullanımını ve bir SQL database’den veri çekme işlemini nasıl yapacağımızı ve LINQ’nun sorgulama yapısını kısaca görmüş olduk. Konunun detayları için internette bol bol makale olduğundan çok detaya girmedim. LINQ ‘yu mutlaka kullanmanızı tavsiye ederim, bu basit örnekle bile avantajları ortadadır 🙂 Herkese iyi çalışmalar..

Uygulamayı indirmek için tıklayınız..