29 Haziran 2013 Cumartesi

Web Servis ile TC Kimlik No Doğrulama

      Merhabalar, şimdi web servis kullanarak tc kimlik numaramızın doğrulamasını yapacağız. Web servisin ne olduğuna bakalım öncelikle; Web servisler modern internet döneminin XML mesajlaşma tabanlı entegrasyon yöntemi ya da diğer bir deyişle api’leridir. Web servisler çok amaçlı kullanılabilirler. Öncelikli amaçlar arasında, farklı sistemlerin birbirine entegrasyonu – mesajlaşması bulunmaktadır. Veri alışveriş yöntemine ait standartlar olduğundan dolayı web servisler platform bağımsızdır. Yani, .Net ile yazılan bir web servis java uygulamalarında kullanılabildiği gibi, java ile yazılmış bir web servis aynı mantıkla, .Net uygulamalarında ve ASP.Net web sitelerinde kullanılabilir.
      Uygulamaya geçelim şimdi de. Öncelikle Google’a tc no doğrula yazarak https://tckimlik.nvi.gov.tr/ sitesine giriyoruz.


      Resimde işaretli olan yerde sitenin bizim kullanmamıza izin vermiş olduğu web servisi görmekteyiz. Son olarak da şunu belirteyim bu uygulamayı isterseniz Asp.Net’de isterseniz Windows Form Uygulaması olarak yapabilirsiniz. Ben form uygulaması yapacağım şimdi. Form üzerine 4 textbox, 5 label ve 1 buton ekliyoruz. Uygulamamızın görüntüsü şu şekilde olacak..


      İlk olarak Solutions Explorer’daki References’a sağ tıklayıp Add Service Reference diyoruz ve açılan penceredeki adres kısmına https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL linkini yapıştırıyoruz ve GO butonuna basıyoruz.  Bu butona tıklayınca web servis üzerinden kullanabileceğimiz fonksiyonlar görünmektedir.  İsterseniz resim üzerinde işaretli olan yerden servisin ismini değiştirebilirsiniz. Ben değiştirmedim, eğer değiştirirseniz kodlarda ServiceReference1 yazan yere verdiğiniz ismi yazacaksınız.


Daha sonra ise butonun click event’ına şu kodları yazıyoruz:

var client = new ServiceReference1.KPSPublicSoapClient();

var cevap = client.TCKimlikNoDogrula
            (Convert.ToInt64(textBox1.Text), textBox2.Text.Trim().ToUpper(),
             textBox3.Text.Trim().ToUpper(), Convert.ToInt32(textBox4.Text));

label1.Text = "Sonuc : " + cevap.ToString();


      Öncelikle eklediğimiz web servisin fonksiyonlarına ulaşmak için istemciye (client) ait client adında bir nesne tanılmıyoruz ve daha sonra bu istemci ile servisin TCKimlikNoDogrula fonksiyonuna ulaşıyoruz. Bu fonksiyon bize boolean türünde yani true yada false şeklinde bir cevap gönderiyor. Biz bunu cevap isminde bir değişkene atıyoruz ve en son olarak da bunu label ile ekranda görüntülüyoruz.
      Web servisleri her zaman kullanabileceğimiz bir teknolojidir ve bence kesinlikle öğrenilmesi gerekmektedir. Siz uygulama geliştirdiğiniz şirketin web servislerini kullanarak uygulamanızın şirketin sistemi ile entegre bir şekilde çalışmasını sağlamış olacaksınız. Bu örnekleri artırmak tabii ki de mümkün, tavsiyem öğrenmenizdir arkadaşlar, herkese iyi çalışmalar...


18 Mayıs 2013 Cumartesi

Word'de Sayfa Numaralandırma


      Merhabalar arkadaşlar Word kullanan herkesin başına gelen bir durumdan bahsetmek istiyorum. Özellikle de tez yazan arkadaşlarımın işine yarayacak.

      Örneğin elimizde 25 sayfalık bir Word belgesi olsun. Biz ilk 6 sayfayı Romen rakamlarıyla 7'den sonrasını ise normal rakamlar ile 1'den başlayarak numaralandırmak isteyelim. Bunun için öncelikle 6 sayfamızın sonuna geliyoruz ve şu yolu izliyoruz:

Sayfa Düzeni -->  Kesmeler --> Sonraki Sayfa’ya tıklıyoruz.

      Sonra ilk sayfaya gidiyoruz ve ekle menüsünden Sayfa Numarasına tıklayıp numaranın nerede görüneceğini seçiyoruz.



      Sonra şekilden görüldüğü gibi Sayfa Numarası kısmından Sayfa Numaralarını Biçimlendir diyoruz ve Romen rakamlarını seçiyoruz.

      Daha sonra ise ikinci kısmımızın başı olan 7 sayfaya geliyoruz ve aynı işlemleri tekrar ediyoruz. Bu sefer açılan o küçük pencereden normal rakamları ve Sayfa Numaralandırma kısmından Başlangıç’ı seçiyoruz ve başlangıç değerimizi 1 yapıyoruz. Bu şekilde sayfamızın bir kısmını Romen rakamlarıyla numaralandırırken diğer kısımlarını normal sayılarla numaralandırıyoruz. Siz isterseniz aynı yöntemle 2,3,4… bölüme bölebilirsiniz. Umarım işinize yarar, iyi çalışmalar...




20 Nisan 2013 Cumartesi

C# - Excel Aktarma ve Grafik Çizdirme

      Merhabalar, bu yazımda hepimizin işine yarayabilecek bir uygulamadan bahsedeceğim. Uygulamamızda random olarak ürettiğimiz 10 adet sayıyı Excel'e kaydeteceğiz ve grafik çizdireceğiz. İlk iş olarak Solutions Explorer penceresindeki References'e sağ tıklayıp Add Reference diyoruz. Açılan penceren Microsoft Office 14.0 Object Library ve Microsoft.Office.Interop.Excel'i ekliyoruz. Daha sonra using kısmında bunları belirtmemiz gerekiyor. using kısmına şunu ekliyoruz:

using OfficeExcel = Microsoft.Office.Interop.Excel;

      Öncelikle 10 random sayı üretiyoruz. Kod:         

private void button1_Click(object sender, EventArgs e)
{
    ArrayList liste = new ArrayList();
    Random sayi = new Random();
    for (int i = 0; i < 10; i++)
    {
        liste.Add(sayi.Next(0, 100));
    }
    ExcelAktar(liste);
}

      Sayılarımızı rastgele ürettik ve ExcelAktar fonksiyonumuza gönderdik. Kod:

static OfficeExcel.Application ExcelUygulama = new OfficeExcel.Application();
static OfficeExcel.Workbook ExcelKitap = ExcelUygulama.Workbooks.Add(Type.Missing);
static OfficeExcel.Worksheet ExcelSayfa = ExcelUygulama.ActiveSheet;
public void ExcelAktar(ArrayList liste)
{
   ExcelUygulama.Visible = true;
            
   //dizimizi excele aktarıyoruz öncelikle
   for(int i = 0; i < liste.Count; i++)
   {
       object hucre1 = ExcelSayfa.Cells[i+2, 2];
OfficeExcel.Range bolge1 =ExcelSayfa.get_Range(hucre1, hucre1);
bolge1.Value2 = liste[i];
   }

//grafik çizmek için gerekli nesnemizi oluşturduk öncelikle...
OfficeExcel.ChartObjects grafikciz = (OfficeExcel.ChartObjects)ExcelSayfa.ChartObjects(Type.Missing);
//grafiği nasıl çizeceğimi belirledim.. 4 parametre kullandık bu alanı belirtmek için
//1-soldan uzaklığı.. 2-üstten uzaklığı.. 3-alanın genişliği.. 4-alanın yüksekliği..
OfficeExcel.Chart grafik = grafikciz.Add(240, 15, 300, 300).Chart;
//burada excelden hangi hücredeki verileri kullarak grafik çizeceğimi belirttim
OfficeExcel.Range cizimalan = ExcelSayfa.get_Range("B2""B" + (liste.Count + 1));
//çizimimizi yaptırıyoruz..
grafik.SetSourceData(cizimalan, Type.Missing);
//grafiğimizin çizim şekli.
grafik.ChartType = OfficeExcel.XlChartType.xlLineMarkers;
//dosyayı kaydeteceğimiz yol.. ve kaydetme işlemi
string yol = @"C:\Users\PC\Desktop\" + DateTime.Now.ToShortDateString() + ".xlsx";
ExcelKitap.SaveAs(yol, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, OfficeExcel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        
}

        İşte bu kadar basit. istediğiniz gibi kodları düzenleyebilirsiniz. dosyayı kaydeteceğiniz yeri, hangi hücrelere veri kaydeteceksiniz, grafiğin çizim alanı, grafik tipi, hangi verileri kullanarak grafik çizeceksiniz vs vs vs...  Kolay gelsin :)


C# - Word'e Veri Aktarma

      Merhaba arkadaşlar, bu yazımda C# ile veri tabanından çekip datagridview'da görüntülediğimiz verileri word belgesine aktarmaktan bahsedeceğim. Öncelikle Solutions Explorer penceresindeki References'e sağ tıklayıp Add Reference diyoruz. Açılan penceren Microsoft Office 14.0 Object Library ve Microsoft.Office.Interop.Word'ü ekliyoruz. Daha sonra using kısmında bunları belirtmemiz gerekiyor. using kısmına şunu ekliyoruz:
using Word = Microsoft.Office.Interop.Word;

      Ben ilk başta basit bir entity framework sorgusu ile verilerimi datagridview'a aktardım. Daha Sonra WordAktar isminde bir fonksiyon yazdım. Kodlarım:


//öncelikle word uygulamasını ve dokümanını oluşturuyoruz.
static Word.Application WordUygulama = new Word.Application();
Word.Document WordDocument = WordUygulama.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
public void WordAktar()
{
     //word'ü görünür yaptık ve A4 formatında olduğunu belirttik
     WordUygulama.Visible = true;
     WordDocument.PageSetup.PaperSize = Word.WdPaperSize.wdPaperA4;
            
     //yazının sağa dayalı ve kalın olmasını belirttik..     WordUygulama.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
     WordUygulama.Selection.Font.Bold = (int)Word.WdConstants.wdFirst;

     //datagridview'deki verileri word e aktardık.
     for (int i = 0; i < dataGridView1.Rows.Count; i++)
     {
         for (int j = 0; j < dataGridView1.Columns.Count-1; j++)
         {
  WordUygulama.Selection.TypeText(dataGridView1[j, i].Value.ToString() + " ");
         }
         WordUygulama.Selection.TypeParagraph();
     }

     //dosyayı kaydeteceğimiz yolu belirttik VE kaydettik
string Wyol = @"C:\Users\PC\Desktop\" + DateTime.Now.ToShortDateString() + ".docx";
WordDocument.SaveAs(Wyol, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

}

      Artık kodu geliştirmek size kalmış :) İsterseniz yazı tipi ve boyutunu, görüntüleyeceğiniz kağıt formatını da ayarlayabilirsiniz. Son olarak ben dosya yolu olarak masaüstünü belirttim, siz bu yolu istediğiniz şekilde değiştirebilirsiniz.


2 Nisan 2013 Salı

C# - Matlab Bağlantısı

      Merhabalar, ilk yazımda sizlerle tezimde de kullandığım bir yöntemden bahsedeceğim.  Yaptığım araştırmalar sonucunda pek de net bir kaynak bulamadığım için elimden geldiğince açıklamaya çalışacağım. Matlab kodunu dll’e çevireceğiz ve bunu C# ile birlikte kullanacağız. Bu uygulamada Matlab R2008a ve Visual Studio 2010 kullandım.

      Öncelikle Matlab’da basit bir .m file oluşturalım ve ismi de ciz olsun. Şu kodları içine yazalım ve kaydedelim.
function ciz()

    t=-2:0.001:2;
    m=sin((2*pi).*t);
    plot(t,m);
    grid on;

end

Sonra Command Window penceresine deploytool yazalım ve enter'a basalım. Deployment Tool penceresi açılacaktır.


















Bu pencereden ilk menüden yeni bir proje yaratıyoruz.






















      Biz .Net’i seçiyoruz. İsmini ve nereye kaydedileceğini belirliyoruz. Sonra OK butonuna tıklıyoruz. Deployment penceremizde dosyamız oluştu. Projemize sağ tıklıyoruz Add File diyoruz ve kaydettiğimiz .m file dosyasını bulup ’a diyoruz.


















      Daha sonra da Deployment Tool penceresindeki Save butonuna tıklıyoruz. Bunları yaptıktan sonra yine aynı deployment tool penceresindeki setting butonuna tıklıyoruz.  Açılan pencereden General sekmesindeki Compiler Options File ayarına geliyoruz. Burada browser butonuna tıklayıp kaydettiğimiz .prj uzantılı dosyayı seçiyoruz. Ve arkasında Ok diyoruz penceremizi kapatıyoruz. Brada son olarak ise deployment tool penceresindeki build the project sekmesine tıklıyoruz ve projemizin dll dosyasını oluşturuyoruz. Bu işlem bilgisayarınıza bağlı olarak uzun sürebilir.

      Şimdi dll dosyamız hazır. Visual Studio’da bir tane form uygulaması açıyoruz ve bir tane buton bir tane de label ekliyoruz. Daha sonra References’a sağ tıklayıp Add Reference diyoruz. İlk olarak matlab’ı kurduğumuz dizindeki MWArray.dll dosyasını eklemeliyiz. Benim bilgisayarımdaki yolu:  
D:\Program Files\MATLAB\R2008a\toolbox\dotnetbuilder\bin\win32\v2.0
Sonra kendi oluşturduğumuz dll’i ekliyoruz. Deployment Tool’da oluşturduğumuz projeyi kaydettiğimiz yerde bir tane de klasör oluşmuştur. O klasörün içinde distrib adında oluşan klasörün içindeki dll dosyamızı seçiyoruz ve tamam deyip projemize ekliyoruz. Daha sonra using kısmına

using MathWorks.MATLAB.NET.Arrays;
using Untitled1;

diyerek eklediğimiz dll dosyalarını tanımlıyoruz. Butonun çift tıklayıp altına şu kodları yazıyoruz:

            Untitled1class obj = new Untitled1class();
            obj.ciz();

daha sonra projemizi çalıştırıp butona tıkladığımızda grafiğimiz açılacaktır.

















SQL Server - Satırları Birleştirme

Merhaba,  Bu yazımda sql server'da birden çok satırı birleştirip tek satır yapmayı anlatacağım. Senaryomuz şu şekilde olsun mesela; bir...