VISUAL BASIC.NET. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox(" Merhaba ") End Sub



Benzer belgeler
Her Select Case bloğu, mutlaka End Select ile bitmek zorundadır.

Yukardaki gibi sonsuz döngülü programlara Ctrl+Break tuş takımı ile müdahale edilmesi gerekir, aksi halde program sonsuz döngüye girer.

MT 373 Visual Basic Programlama Dersi

Uygulama 1) Tur sayısını 1 den klavyeden girilen n e kadar ekrana yazarak birikimli (kümülatif) toplam alan kaynak kodları yazınız.

Diziler İndisli Değişkenler

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

VISUAL BASIC.NET PROGRAMLAMA

Uygulama1) Şart yapısının kullanımı CheckBox1 bileşeninin işaretlendiğinde ekranda Kutu işaretlendi mesajı veren kodları yazınız.

Timer İle arka plan renk değişimi

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı

Visual Studio 2010 veya 2013, Sharp Develop 3.2 programlarını kurabilirsiniz.

Visual Basic Windows Window Progr Pr a ogr mlama a

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Visual Basic Uygulamaları-4. Dİ Zİ LER (ARRAYS) ve Nesne Kü meleri

Uygulamalar 4 IsMissing Fonksiyonlar ve Alt Programlar Prosedür Parametreleri Public Function f(x,y,optional t, Optional k) End Function 1.

İNTERNET TABANLI PROGRAMLAMA

HSancak Nesne Tabanlı Programlama I Ders Notları

İNTERNET TABANLI PROGRAMLAMA

Genel Kullanılış 1: [değişken ismi] = [değişken ismi] [işlem] [sayı veya string ifade veya değişken]

Uygulama 1) Aşağıdaki genel (global) değişken tanımlamalarını VB üzerinde yapınız. Süre 10 dak.

İNTERNET TABANLI PROGRAMLAMA- 4.ders

İNTERNET TABANLI PROGRAMLAMA- 3.ders

Örnek Uygulama: CheckedListBox da seçili olanları listbox nesnesine ekleyen program.

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

HSancak Nesne Tabanlı Programlama I Ders Notları

Response : Sunucunun istemciye veri yollamasını

DİZİLER. Bu ünitede yapılan örnekler Visual Studio 2010 programındaki Visual Basic programlama diliyle çözülmüştür.

Command Nesnelerini Kullanarak Tablolarda Değişiklik Yapmak:

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

HSancak Nesne Tabanlı Programlama I Ders Notları

INPUTBOX() ile Veri Girişi

Java String İşlemleri

Vbnet Vbne access bağ ba lant lan ı t s ı ı s, ekleme, güncelleme,,silme

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

UYGULAMALAR. İkinci liste kutusu (List 2) Birinci liste Kutusu (List 1) Metin Kutusu

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları


HSancak Nesne Tabanlı Programlama I Ders Notları

TEMEL STRING İŞLEMLERİ

İnternet Programcılığı Dersi 2.Dönem Ders Notu

HESAP MAKİNASI YAPIMI

NESNEYE YÖNELİK PROGRAMLAMA

De iflken = InputBox Görüntülenecek Metin Bafllık. InputBox tan gelecek cevap, bir de iflkene aktarılmalıdır. End Sub B R SAYI TUT

Excel Formüller ve Fonksiyonlar. Yusuf MANSUROĞLU Mühendislik Hizmetleri Müdür Yardımcısı

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI

Görsel Programlama (Visual Programming)

Daha önce bu işlemin iki tane dosya oluşturduğunu gördük. GecDenTest.aspx dosyasının source kısmında içeriğini inceleyecek olursanız en başta

Byte (Tamsayı) 1 0 ile 255 arasında 10 sayısı

Excel Nedir? Microsoft Excell. Excel de Çalışma sayfası-tablo

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

VISUAL BASIC STANDART KÜTÜPHANE FONKSİYONLARI

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Internet Programming II

Visual C# - Görsel Programlama II Örnek Sorular ve Cevaplar

C#(Sharp) Programlama Dili

Nesne Tabanlı Programlama

Length: metin uzunluğunu yada diğer bir deyişle dizi elaman sayısını döndürür.

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

BÖTE BİL. TEK. II DERSİ İÇİN HAZIRLANMIŞ DERS NOTLARININ BİR KISMI

SİNOP ÜNİVERSİTESİ MESLEK YÜKSEKOKULU MEKATRONİK PROGRAMI

Görsel Programlama 1

Def bildiri deyimi projenin general,declarations bölümünde tanımlanmalıdır

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Gidilen sayfadan bir önceki sayfaya geçilir. Şekil Git İşlemi diyalog kutusu

1. Excel Dönüşümü : 2. Rapor Master Tanımları :

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

YZM 2105 Nesneye Yönelik Programlama

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Visual Basic. Dosya İşlemleri

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

KONTROL YAPILARI (CONTROL STRUCTURES)

Programlama Dilleri 1. Ders 4: Diziler

Access e Nasıl Ulaşılır. Araç çubuklarını yeniden düzenlemek için Görünüm komutunun Araç çubukları seçeneği kullanılır.

Matematiksel Operatörler

Microsoft Office Excel 2007

Algoritma ve Programlamaya Giriş

Çözüm :RadioButtonList1 kontrolunuekliyoruz.enableautopostback iaktifleştiriyoruz..

Nesne Tabanlı Programlama

C Programlama Dilininin Basit Yapıları

T.C. istanbul ÜNiVERSiTESi ÖĞRENCi BiLGi SiSTEMi. ÖĞRETiM ELEMANI KULLANIM KILAVUZU

HSancak Nesne Tabanlı Programlama I Ders Notları

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

Ünite 7. Gelişmiş Nesneler II. Bilgisayar Programcılığı Önlisans Programı GÖRSEL PROGRAMLAMA I. Öğr. Gör. Rıza ALTUNAY

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

DOKUZ EYLÜL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ DEKANLIĞI DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: BİL 1007

Transkript:

VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldığında MERHABA mesajını veren programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox(" Merhaba ") ÖRNEK 2: Aşağıdaki çıktıyı veren programı yazınız. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox("Merhaba " & TextBox1.Text) ÖRNEK 3: Aşağıdaki çıktıyı veren programı yazınız. Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox("Toplam = " & Val(TextBox1.Text) + Val(TextBox2.Text))

ÖRNEK 4: Aşağıdaki çıktıyı veren programı yazınız. Private Sub Button1_Click_3(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox(TextBox1.Text & " Sen " & 2007 - Val(TextBox2.Text) & " Yaşındasın") ÖRNEK 5: Aşağıdaki çıktıyı veren programı yazınız. Private Sub Button1_Click_4(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label3.Text = " Sayıların Toplamı = " & Val(TextBox1.Text) + Val(TextBox2.Text) Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Label3.Text = " Sayıların Farkı = " & Val(TextBox1.Text) - Val(TextBox2.Text) ÖRNEK 6: Aşağıdaki çıktıyı veren programı yazınız.

Private Sub Button1_Click_5(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label3.Text = Val(Label3.Text) + Val(TextBox1.Text) ÖRNEK 7: Aşağıdaki çıktıyı veren programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim isim As String Dim soyisim As String isim = TextBox1.Text soyisim = TextBox2.Text Label3.Text = "Merhaba " & isim & " " & soyisim ÖRNEK 8: Aşağıdaki çıktıyı veren programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim s1, s2, sonuc As Integer s1 = Val(TextBox1.Text) s2 = Val(TextBox2.Text) sonuc = s1 + s2 TextBox3.Text = sonuc Örnek: Şekildeki gibi bir çıktı verecek programı yazın

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Adsoyad As String Dim Vize, Final As Integer Dim Ortalama As Double Adsoyad = TextBox1.Text Vize = Val(TextBox2.Text) Final = Val(TextBox3.Text) Ortalama = Vize * 0.4 + Final * 0.6 If (Ortalama >= 60 And Ortalama <= 100 And Final >= 50) Then ListBox1.Items.Add(Adsoyad & ": " & Ortalama) ElseIf (Ortalama >= 0 And Ortalama < 60 Or Final < 50) Then ListBox2.Items.Add(Adsoyad & ": " & Ortalama) Else MsgBox("Hatalı işlem") End If DEĞİŞKENLER VE VERİ TİPLERİ Değişkenler bir bilgiyi hafızada tutmak için kullanılır. Değişkenlerin tanımlanma zorunlu istenirse kapatılabilir. Bunun için kodların en başına Option Explicit Off deyimi kullanılır. Fakat kesinlikle değişkenlerin tanımlanma zorunluluğunun kapatılmaması tavsiye edilir. Aşağıdaki örneği inceleyin

Örnek: Bir butonun Click ne aşağıdaki kodları yazın. Option Explicit off ifadesini tüm kodların en yukarısına yazın. Option Explicit Off Public Class Form1... Private Sub Button1_Click(...) a = 5 b = 6 aratoplam = 1000 geneltoplam = a * b + aratplam MsgBox(geneltoplam) End Class Burada dikkat edilirse yanlışlıkla aratplam ifadesi kullanılmıştır. Bu ifade degişken tanımlama zorunluluğu kapatıldığı için hata vermemiş ve sonucu 30 olarak göstermiştir. Eğer degişken tanımlama zorunlu olsaydı bu ifade tanımlanmamış olacağı için hata verecekti ve böylece programdaki yanlışlık düzeltilecekti. Bu nedenle kesinlikle değişkenleri tanımlayın. DEĞİŞKEN TANIMLAMA: VB de değişken tanımlamaları Dim ile yapılır. Şu şekilde kullanılır. Dim degişken_ismi As tip Burada degişken_ismi ni biz veririz. Tip ise aşağıdaki değişken tiplerinden birisi olabilir. Sayısal Tipler: Byte, Short, Integer, Long, Single, Double, Decimal String Tipler: String, Char Mantıksal Tipler: Boolean Tarih Tipi: Date Birden fazla degişkeni tek bir satırda da tanımlayabiliriz. Dim x,y,z As Integer a,b As String Eğer Dim ifadesinden degişkenin tipi verilmezse degişken tüm degişkenleri içine alan Variant tipinde tanımlanır. Fakat Variant degişkenler programı çok yavaşlatır kullanılması tavsiye edilmez. Dim x,y,z VB de degişkenler bir nesne olarak işlem görür. Yani tanıladığınız bir String, string tipinde bir nesnedir ve string sınıfının bütün özellik ve metodları değişken üzerine uygulanabilir. Bu konu ileride nesneye yönelik programlamada ele alınacaktır. Örnek: Örnegin string tipinde bir degişken tanımlayın ve bu degişkene bir isim atayın. Daha sonra isimin boyunu ekranda string nesnesinin özelliğini kullanarak gösterin. (özellik ve metodlar. Koyunca kendiliğinden çıkar). Private Sub Button1_Click(...) Dim isim As String isim = "Ali"

MsgBox(isim.Length) Bu örnekte sonuç 3 olarak çıkar. Degişken üzerinde işlem yapmak için o degişkenin tanımlandığı sınıfa ait özellikler kullanılabileceği gibi, o sınıfa ait fonksiyonlarda kullanılır. Aynı örneği Strings sınıfına ait Len() fonksiyonu kullanarak yapalım. Örnek: Örnegin string tipinde bir degişken tanımlayın ve bu degişkene bir isim atayın. Daha sonra isimin boyunu ekranda string nesnesinin özelliğini kullanarak gösterin. (özellik ve metodlar. Koyunca kendiliğinden çıkar). Private Sub Button1_Click(...) Dim isim As String isim = "Ali" MsgBox(Len(isim)) Yine sonuç 3 çıkar. SAYISAL TİPLER: Tüm sayısal değişken ve aralıklarını tablo şeklinde gösterelim. Adı Hafıza(Byte) Alabileceği değer aralığı Tanımı Boolean? 2 byte 1 (true) yada 0 (false) degerlerini alır 1 ve 0 değerlerini alır. Byte 1 Byte 0 255 İşaretsiz tam sayı tipidir. Short 2 Byte -32.768 +32.767 İşaretli tam sayı tipidir. Integer 4 Byte -2.147.483.648 +2.147.483.647 İşaretli tam sayı tipidir. Long 8 Byte -9.223.372.036.854.775.808 +9.223.372.036.854.775.807 İşaretli tam sayı tipidir. Single Double 4 Byte 8 Byte ± 3,402823 x10 38 ± 1,401298 x 10-45 Ondalık sayı tipidir. ± 1,79769313486232 x10 308 ± 4,94065645841247 x 10-324 Ondalık sayı tipidir. Decimal 14 Byte ±79.228.162.514.264.337.593.543.950.335 ±7.9228162514264337593543950335 Tam sayılar için Ondalık Sayılar için Sayı büyüklüğünün önemli olduğu durumlarda Single ve Double kullanılır. Basamak sayısının önemli olduğu durumlarda ise Decimal kullanılır. Yukarıda dikkat edilirse Single 7 basamaktan sonra, Double ise 15 basamaktan sonra sayının gerisini 10 üzerili olarak saklamaktadır. Oysa Decimalda ise basamak sayısı 29 basamağa kadar tutulabilmektedir. Bunun için aşağıdaki örneği yapın.

Örnek: 12345678901234567890 sayısını Single, Double ve Decimal değişken kullanarak üzerine 5 sayısını ekleyip toplayınız. Private Sub Button1_Click(...) Dim x As Single, y As Double, z As Decimal x = 1234567890123456789 y = 1234567890123456789 z = 1234567890123456789 x = x + 5 y = y + 5 z = z + 5 MsgBox("x=" & x) MsgBox("y=" & y) MsgBox("z=" & z) Görüleceği gibi çıkan sonuçlar şöyle olacaktır. x=1,2345678e+18 = 1234567800000000000 y=1,234567890123456e+18=1234567890123456000 z=12345678901234567894 x ve y sonucu yanlış verdi fakat z doğru çıktı. Bu nedenle hassa matematiksel işlemlerde ve parasal işlemlerde Decimal kullanılmalıdır. Sınır Aşımı: Girilen sayı değerleri değişkenin sınırları dışına çıktığında OverFlowException hatası verir. Bu tip hataların önüne geçmek için uygun tiplerde tanımlamalıyız yada Try-Catch bloğun yazarak oluşacak hatayı yakalamalıyız. Aşağıdaki örneği uygulayınız. Örnek: Byte olarak tanımlanan bir değişkene önce 1 den 500 kadar sayıları yükleyeme çalışın. Sayı 255 i geçtiğinde hata verir. Hata mesajını göstermeden kullanıcıya sayı 255 i aşıyor uyarısı veren bir program yazın. Private Sub Button1_Click(...) Dim i As Integer Dim x As Byte Try For i = 1 To 500 x = i Next Catch MsgBox("Sayı 255'i aşıyor") End Try

Oluşan hatanın kullanıcıya gösterilmemesi ve bir uyarı verilmesi için burada Try-Catch-End Try blogu kullanılmıştır. Hata oluşma ihtimali olan kodlar Try-Catch arasına, Uyarı mesajı ise Catch-End Try arasına yazılmıştır. Sayılarla İlgili Fonksiyonlar ve İşlemler: Sayılarla ilgili bazı standart fonksiyonlar ve işlemler aşağıda özetlenmiştir. IsNumeric(değişken): Bu fonksiyon verilen değişkenin bir sayı olup olmadığını bildirir. Değişkenin içeriği sayı ise geri dönen değer True olur. Val(string): Bu fonksiyon stringin içerisindeki bilgiyi sayıya çevirir. İçinde geçersiz karakter bulursa bulduğu yere kadar çevirir. Fix(sayı): Sayının virgülden sonraki kısmını direk atar. Math.Round(sayı,basamak_sayısı): Virgülden sonra kaç basamak yuvarlatmak isteniyorsa bu fonksiyon kullanılabilir. 0 verilirse virgülden sonraki basamakların hepsi yuvarlatılır. Örnek: Eski Türk lirasında 100000 TL nin altındaki paraların bir değeri yoktur. Girilen bir küsüratlı bir paranın 100000 altındaki değerlerini yuvarlatın. Private Sub Button1_Click(...) Dim para As Long para = Val(TextBox1.Text) para = (Math.Round(para / 100000, 0) * 100000) Label1.Text = para Bunu gerçekleştirmek için sayı 100000 bölünür ve virgüllü hale getirilir. Virgülden sonraki sayılar yuvarlatıldıktan sonra tekrar 100000 çarpılır. Program çalıştırılırsa 12345678912 sayısı 12345700000 olarak çıkar. Format(sayı,biçim): Sayıları istediğimiz biçimde göstermeye yarar. Örnek: Format(Val(TextBox1.Text), ##,## TL ) kodu girilen sayıyı ekranda her 3 haneye virgül atar ve sonuna TL yazar. Örnek: Bir malın birim fiyatını Text kutusuna yazarken hatalı yazımı önlemek için her 3 basamakta bir nokta yazsın ve rakamlar sola yaslı olsun. Aynı zamanda her yazılan rakam sayının sonuna yazılsın (otomatik olarak sona gitsin). Bu sayı o malın adeti ile çarpıldığında sonucu yine noktalı göstersin ve sonuna TL ifadesini eklesin. Rakam yerine harf girildiğinde uyarı versin. Private Sub Button1_Click(...) Try Label5.Text = Format(CDec(TextBox2.Text) * CInt(TextBox3.Text), "##,## TL") Catch MsgBox("Geçersiz sayı girildi") End Try Private Sub TextBox2_TextChanged(...)

Try TextBox2.Text = Format(CDec(TextBox2.Text), "##,##") TextBox2.SelectionStart = TextBox2.Text.Length Catch End Try Burada Text kutularına yazılan string ifadeyi sayıya çevirmek için Val kullanılmamıştır. Çünkü Val binlik basamak olarak virgül kabul eder. Halbuki türkçede nokta kullanılır. Bunun yerine Windows un türkçe ayarlarını tanıyan Cval, CDbl, Cdec dan biri kullanılır Örnek: Dışarıdan girilen bir sayı Türkçe para gösterim sistemine dönüştürüp bize göstersin Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sayi As Double Dim para As String sayi = Val(TextBox1.Text) para = Format(sayi, "###,###.##TL") TextBox2.Text = para Rnd(): Bu fonksiyon 0 ile 1 arasında rastgele sayı üretir. MsgBox(Rnd() MsgBox(Rnd() * 100) MsgBox(Int(Rnd() * 100)) Genel formül: Rnd*(b-a) + a 0 ile 1 arasında rastgele bir sayı 0 ile 100 arasında rastgele bir sayı 0 ile 100 arasında rastgele bir tam sayı a ile b arasında rastgele bir sayı. Bu fonksiyonlar denenirse her seferinde aynı sayıları ürettiği gözlenir. Bunu önlemek için Randomize() fonksiyonu kullanılır. Randomize fonksiyonu başlangıç referans sayısını belirler. Bunuda sistemin saatinden alır. Örnek: 5 ile 15 arasında rastgele tamsayı üreten bir program yazın. Private Sub Button1_Click(...)

Randomize() MsgBox(Int(Rnd() * (15-5) + 5)) Ödev: 0 dan 100 kadar bir rastgele sayı tutacak ve kullanıcının bu sayıyı bulmasını isteyecek basit bir sayı bulma oyunu hazırlayın. Bunu adam asmaca oyununa benzeterek resimli olarak yapıp süsleyin. Örnek ÖDEV: Formun üzerine 1 tane buton ve 1 tane label ekleyin. Butona tıklayınca Rastgele şu şekilde bir sayı atsın. 23.4565656 gibi. Daha sonra bu sayıyı dönüştürüp 23.46 TL olarak göstersin. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Randomize() 'Zamana bağlı olarak her seferinde rastgel sayı atar. 'Label1.Text = Int(Rnd() * 100) 'Tam sayı kısmını alır. 'Label1.Text = Fix(Rnd() * 100) 'Tam sayı kısmını alır. 'Label1.Text = Math.Round((Rnd() * 100), 2) 'Label1.Text = Format((Rnd() * 100), "##.## TL") 'Label1.Text = Format("{0:c}", (Math.Round(Rnd() * 100, 2))) Dim a As String = (Rnd() * 100) Label1.Text = a Dim Dizi As String() = a.split(new Char() {","c}) Dim parca As String For Each parca In Dizi ListBox1.Items.Add(parca) Next Dim sayi1 As String = parca(0) Dim sayi2 As String = parca(1) Dim yenisayi2 As Integer = Val(sayi2) yenisayi2 = Math.Round(yenisayi2, 2) Label2.Text = sayi1 & yenisayi2 & " TL"

STRING TIPLER Stringler üzerinde sayısal işlem yapılamayan ifadelerdir. Char ve String tip olmak üzere iki kısıma ayrılır. Char: İki baytlık bir karakter veri tipidir. İçinde sadece bir karakter barındırır. Fazla sayıda karakter ataması yapılırsa ilk karakteri dikkate alır. Geriye doğru silme yada Enter gibi Ascii kodu içinde bulunan karakterleride Chr() fonksiyonuyla birlikte kullanabilirsiniz. Örneğin enter tuşu için Chr(13) kullanabilirsiniz. Dim c1,c2, as Char c1= A c2=chr(65) Msgbox(c1) Msgbox(c2) String: Karakter sınırı verilmezse 2 milyar karaktere kadar alabilir. İçerisine aldığı karakterler Unicode Stringlerdir. Unicode stringler uzak doğu dilleride dahil tüm dillerin karakterlerini kapsamaktadır. STRİNGLERLE İLGİLİ METODLAR: VB.Net de Stringler diğer tipler gibi birer nesnedir. String tipi değişkenin adı yazılıp nokta konduğunda o string üzerinde yapılabilecek özellik ve metodların (işlemlerin) bir listesi çıkar. Stringlerin iki adet özelliği (length, Chars) vardır. Diğerleri metoddur (string üzerinde yapılabilecek işlemleri gösterir). Length(): Bu özellik Stringin uzunluğunu verir. [string.length() ] Chars(): Bu özellik Stringin istenen karakterini verir. İndis 0 dan başlar. [string.chars(2) ] Örnek: Bir TextBox ın içine yazılan bir metindeki kelimeleri arada boşluk, virgül ve noktaları araştırarak yine aynı TextBox ın içinde alt alta sıralasın. Private Sub Button1_Click(...) Dim metin, kelime As String Dim a As Char Dim i As Integer metin = TextBox1.Text TextBox1.Text = "" For i = 0 To metin.length() - 1 a = metin.chars(i) If a = " " Or a = "," Or a = "." Then kelime = kelime + Chr(13) TextBox1.Text = TextBox1.Text + kelime kelime = "" Else kelime = kelime + a End If Next

Burada enterları kare sembolü şeklinde göstermiştir. Bu metni kopyalayıp Word e atarsak word de kelimeler alt alta sıralanır. Yada kelimeleri listbox da listeleyebilirdiniz. ToLower(): Stringi küçük harfe çevirir. [string.tolower() ] ToUpper(): Stringi büyük harfe çevirir. [string.toupper() ] - Bu iki ifade windows un dilinin kurallarına göre çevirir. Yani türkçe windows da türkçe dil kurallarına göre çevrim yapar. Eğer başka dil kurallarına göre çevrim yapılması isteniyorsa şöyle kullanılır. [string.toupper(new System.Globalization.CultureInfo( en ) ] -------------- 000 --------------- Compare(): İki stringi gelişmiş özellikler kullanarak karşılaştırmak için kullanılır. - Stringleri büyük küçük harf duyarlı olarak karşılaştırır. [ string.compare(string1, string2)=0 ] - Büyük-küçük harf duyarlı olmaması isteniyorsa şöyle kullanılır [string.compare(string1,string2,true)=0 ]. Bu iki ifadede iki string eşitse sonucu 0 olarak döndürür. - Stringin bir parçasını karşılaştırma. [ string.compare( string1, kaçıncıharfden, string2, kaçıncıharfden, kaçharf) - Hangi dil kuralına göre karşılaştırma yapacağını belirlemek içinse şöyle kullanılır. [string.compare(string1, string2, True, New System.Globalization.CultureInfo( en )) ] CompareTo(): İki stringi büyük küçük harf duyarlı olarak karşılaştırmanın başka bir yöntemidir. [string1.compareto(string2)=0 ]. Büyük küçük harf duyarlılığı olduğu için string önce tamamen küçük harfe yada büyük harfe çevrilmelidir. [string1.tolower.compareto(string2)=0]. stringler eşitse 0 döndürür. Equals(): İki stringi karşılaştırmanın üçüncü bir yolu ise bu metoddur. Burada 0 yerine True yada False döndürür. İki şekilde kullanılabilir. Büyük-küçük harf duyarlıdır. [string.equals(string1,string2) ] yada [string1.equals(string2) ] şeklinde kullanılabilir. -------------- 000 --------------- StringWith(): Stringin belirlenen verilen metinle başlayıp başlamadığını kontrol eder. True yada False döndürür. Büyük-küçük harf duyarlı olduğu için ToUpper yada ToLower ile dönüştürülmesi lazım. Kullanımı şöyledir. [aranacakmetin.toupper.stringwith(arananmetin) ] EndsWith(): Stringin belirlenen metinle bitip bitmediğini kontrol eder. Kullanımı StringWith ile aynıdır. -------------- 000 --------------- TrimStart(): Stringin başındaki boşlukları atar. TrimEnd(): Stringin sonundaki boşlukları atar. Trim(): Stringin her iki tarafındaki boşlukları atar. - Bu metodlar kullanılırken metinin içindeki özel karakterler şu şekilde atılabilir. [string.trimend(,,., :, ; ) ] -------------- 000 --------------- SubString(): Stringin bir parçasını almak için bu metod kullanılır. İki şekilde kullanılabilir. [string1.substring(başlangıç)] yada [ string1.substring(başlangıç,uzunluk) ] Split(): Bir stringi belli bir karakterler parçalara ayırmak için kullanılır. Parçalanan bölümler bir çok sayıda olabileceği için geriye dönen karakterler diziye atılmalıdır. İki şekilde kullanılabilir. [dizidegişkeni=arananstring.split(ayırıcıstring) ] yada [dizidegişkeni=arananstring.split(ayırıcıstring,kaçadetalınaksa)] -------------- 000 --------------- IndexOf(): Bir stringi başka bir stringin içinde aramak için kullanılır. Aramaya baştan başlar. Bulursa kaçıncı karakterde bulduğunu geri döndürür. Bulamazsa -1 döndürür. Kullanımı [aranılacakstring.indexof(arananstring) ] yada [aranılacakstring.indexof(arananstring,kaçıncıharfden) ] LastIndexOf(): IndexOf la aynıdır sadece aramaya sondan başlar.

IndexOfAny(): Bir stringin içinde birden fazla stringin olup olmadığını aramak için kullanılır. Aramaya baştan başlar. Kullanımı [ string1.indexofarray(aranankarakterler) ] LastIndexOfAny(): Tek farkı aramaya sondan başlar. -------------- 000 --------------- Concat(): Bu metod iki veya daha fazla stringi birleştirmek için kullanılır. Kullanımı [string1=str.concat(str1,str2,str3) ] Join(): Bir grup stringin arasına bir karakter koyarak birleştirmek için kullanılır. Kullanımı [string1=str.join(konulacakkarakter, dizi) ] Insert(): Bir stringin içine belli bir stringi yerleştirmek için kullanılır. Kullanımı [string1.insert(kaçıncıharfden,yerleştirilecekstring) ] Replace(): Bir stringin içinde geçen bir metni başka başka bir metinle değiştirmek için kullanılır. Kullanımı [string1=str.replace(arananmetin, yerinekonacakmetin) ] Remove(): Bir stringin içinden belli bir bölümü çıkarmak için kullanılır. Kullanımı [string1=str.remove(kaçıncıharfden, kaçharf) ] -------------- 000 --------------- PadLeft(), PadRight(): Stringin sağına ve soluna istenen sayıda karekter ekleyerek stringin boyunu uzatmayı sağlar. [EklenecekString.PadRight(adet, karakter)]. Örneğin Ali.PadRight(2, * ) ifadesinin sonucu Ali** olarak verir. Boşluk karakteri eklenerek stringin boyu uzatılmış olur. Format(): Bir stringi farklı şekillerde formatlamak için bu metod kullanılır. Örnekler; - String.Format( Sayın {0} Bey, {1} Tarihinde sizleri düğünümüze bekliyoruz., Ali, 15.06.2005) Çıktısı Sayın Ali Bey, 15.06.2005 Tarihinde sizleri düğünümüze bekliyoruz olacaktır. - String.Format( Bugün={0:d}, Today) Çıktısı Bugün= 06.11.2005 şeklinde olacaktır. Örnek: Bir TextBox ın içine yazılan bir metindeki kelimeleri aradaki boşluklardan parçalara ayırıp her bir parçayı diziye atsın. Ardından dizideki elemanları Listbox ta görüntülesin. Private Sub Button1_Click(...) Dim kelime() As String Dim i As Integer kelime = TextBox1.Text.Split(" ") For i = 1 To UBound(kelime) ListBox1.Items.Add(kelime(i)) Next Burada.Split() metoduyla textbox ın içindeki tüm kelimeler boşluklardan parçalara ayrılmakta ve kelimeler dizi değişkenine aktarılmaktadır. For döngüsünde bir dizinin en yüksek eleman numarasını veren Ubound() fonksiyonu kullanılarak dizinin içindeki tüm kelimeler Listbox da görüntülenmektedir. Stringler Üzerinde İşlem Yapan Fonksiyonlar

Daha öncede vurgulandığı gibi VB.Net de tüm değişkenler birer nesne gibi davranmaktadır. Her nesnenin özellikleri ve üzerinde işlem yapan metodları bulunmaktadır. String değişkenleri üzerinde işlem yapan Metodları daha önceden gördük. Şimdi ise yine stringler üzerinde işlem yapan Fonksiyonları görelim. Hemen hemen aynı işlemleri yine Fonksiyonlar kullanarak yapabiliriz. Stringler üzerinde Metodları kullanırken String değişkeninden sonra nokta konur ve metod yazılır. Fonksiyon kullanırken ise Fonksiyon yazılır ve parantezler içine string yazılır. Örneğin: ali.toupper() bir metod dur ve ali yazısını ALİ ye çevirir. Aynı işlemi fonksiyon kullanarak yapmak istersek Ucase(ali) dersek sonuçta yine ALİ çıkar. Strignlerle ilgili belli başlı fonksiyonlar şunlardır. StrComp(metin1, metin2, [şart]) : İki stringi karşılaştırmak için kullanılır. Şart yazan kısımda 0 verilirse büyük küçük ayrımı yapılır, 1 verilirse bu ayrım yapılmaz. Geri dönen değer 0 ise strignler eşittir. Pozitif ise birinci string büyüktür, negatif ise ikinci string büyüktür. Büyüklük alfabetik sıralamaya göredir. LTrim(metin) : Verilen stringin başındaki boşlukları kaldırır. Rtim(metin) : Verilen stringin sonundaki boşlukları kaldırır. Trim(metin) : Verilen stringin her iki tarafındaki boşlukları kaldırır. Ucase(metin) : Verilen stringi büyük harfe çevirir. Lcase(metin) : Verilen stringi küçük harfe çevirir. StrReverse(metin) : Verilen stringin harflerini tersten yazar. Len(metin) : Verilen stringin içindeki karakter sayısını verir. Boşluklar da dahil. Strings.Right(metin,n) : Verilen stringin sağdan n karakter alınmasını sağlar. Strings.Left(metin,n) : Verilen stringin soldan itibaren n karakter alınmasını sağlar. Mid(metin,başlanğıç,[uzunluk]) : Verilen metnin içinde başlanğıç noktasından uzunluk kadar kadar karakteri verir. InsStr([KaçıncıHarfden], Neyinİçinde, neyi, [nasıl]) : Bir stringin içinde başka bir stringi baştan itibaren arar. Nasıl parametresi 0 olursa büyük küçük ayrımı yapar, 1 olursa yapmaz. Geriye dönen değer 0 ise aranan ifade bulunamamıştır. Bulunmuşsa stringi bulduğu yerin sayısını verir. InsStrRev(Neyinİçinde, Neyi, [KaçıncıHarfden], [Nasıl]) : Bir stringin içinde başka bir stringi sondan itibaren arar. Replace(Neyinİçinde, Neyi, Neİle, [KaçıncıHaftden], [KaçTane],[Nasıl]) : Bir stringin içindeki bir ifadeyi (neyi) başka bir ifade ile (neile) değiştirir. KaçıncıHarfden parametresi kullanılmazsa baştan itibraren değiştirir. KaçTane parametresi kullanılmazsa bulduğu tüm değişiklikleri yapar. Nasıl parametresi 0 ise büyük küçük ayrımı yapar, 1 ise yapmaz. Space(sayı) : Verilen sayı kadar boşluk oluşturur. Val(string) : Verilen stringi sayıya çevirir. Str(sayı) : Verilen sayıyı stringe çevirir. Asc(karakter) : Verilen karakterin Ascii kodunu verir. Chr(AsciiKodu) : Verilen kodun karakter karşılığını üretir. Karakter Gruplarını Tanıyan Metodlar Char.IsLetter : Karakterin alfabetik bir harf olup olmadığını öğrenmek için kullanılır. Char.IsDigit: Karakterin 0-9 arası bir rakam olup olmadığını öğrenmek için kullanılır. Char.IsLower: Karakterin küçük harf olup olmadığını öğrenmek için kullanılır. Char.IsUpper: karakterin büyük harf olup olmadığını öğrenmek için kullanılır. Örnek: Formun üzerinde 2 tane textbox olsun. Bunlardan birincisine ad soyad girilsin. İkincisine ise doğum tarihi girilsin. Eğer ad soyad kısmına rakam girilirse yada doğum tarih kısmına harf girilirse ses çıkararak uyarı versin. Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If Char.IsDigit(e.KeyChar) Then e.handled = True Beep() End If

Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If Not Char.IsDigit(e.KeyChar) Then e.handled = True Beep() End If Burada basılan tuşları alabilmek için KeyPress olayını kullanacağız. Kullanıcı bir tuşa bastığında bu olay meydana gelir. Prosedür içinde bu olayı temsil eden değişken e değişkenidir. Bu olayın KeyChar özelliği bize basılan tuşu verir. Kullanıcının bastığı tuşu iptal etmek için ise aynı olayın Handled özelliği kullanılır. Beep() fonksiyonu ise sesli uyarı verir. ÖRNEK: Bir çok satırlı textbox ın içerine atılan metindeki kelimleri ayırıp listbox da alt alta sıralı olarak gösterin.

TARİH TİPİ DEĞİŞKENLER Date: Tarih tipi değişkenler bu ifadeyle tanımlanırlar. Tarihler işaretleri arasında yada # # işaretleri arasında tanımlanabilirler. Tırnak içinde tanımlanırlarda Windowsun ayarlarını kullanır. Yani Türkçede gün/ay/yıl olur. Oysa ingilizcede tarih ay/gün/yıl olarak kullanılır. Dim tarih as Date şeklinde tanımlanır. IsDate(tarih ve saat): Bu fonksiyon verilen bir tarihin yada saatin geçerli olup olmadığını tespit eder, geçerli ise True döndürür. Windows un ayarlarını kullanır. Today: Bilgisayarın tarihini öğrenmek ve değiştirmek için kullanılır. TimeOfDay: Bilgisayarın saatini öğrenmek ve değiştirmek için kullanılır. Now : Bilgisayarın hem tarihini hemde saatini sadece öğrenmek için kullanılır. Örnek: Formun üzerine iki tane text box, bir tane buton koyun. Birinci textboxtan sistemin tarihini, ikinci textbox tan sistemin saatini açılışta gösterin ve ardından değiştirin. Eğer formata uygun değer girilmezse uyarı versin. Private Sub Form1_Load(...) TextBox1.Text = Today TextBox2.Text = TimeOfDay Private Sub Button1_Click(...) If IsDate(TextBox1.Text) Then Today = TextBox1.Text Else MsgBox("Tarih Geçersiz") End If If IsDate(TextBox2.Text) Then TimeOfDay = TextBox2.Text Else MsgBox("Saat Geçersiz") End If Tarih Tipi Değişkenlerin Metodları: Tarih tipi değişkenler üzerinde işlemler yapmak için hem metodlar (değişkenin yanına noktayı koyduğumuzda çıkan pencereden seçebilirsiniz) hemde fonksiyonlar kullanılır. Örneğin metodlardan add ile başlayanlar tarih yada saatle ilgili olarak ekleme veya çıkarma işlemi yapar. Bazı önemli metodlar şunlardır..adddays(gün): Tarihe belirtilen gün kadar ekleme veya çıkarma yapar..addmonths(ay): Tarihe belirtilen ay kadar ekleme veya çıkarma yapar..addyears(yıl): Tarihe belirtilen yıl kadar ekleme veya çıkarma yapar..month: Tarihin ayını verir..year: Tarihin yılını verir.

.DayOfYear: Yılın kaçıncı gün olduğunu verir..dayofweek: Haftanın kaçıncı gün olduğunu verir. 0 Pazar, 1 Pazartesi şeklinde gider..isleapyear(yıl): Belirtilen yılın artık yıl olup olmadığını (29 şubat çekiyorsa) True değeri döndürerek verir..addhours(saat): Zamana belirtilen saat kadar ekleme veya çıkarma yapar..addminutes(dakika): Zamana belirtilen dakika kadar ekleme veya çıkarma yapar..addseconds(saniye): Zamana belirtilen saniye kadar ekleme veya çıkarma yapar..hour: Zamanın saat kısmını verir..minute: Zamanın dakika kısmını verir..second: Zamanın saniye kısmını verir..millisecond: Zamanın milisaniye (1/1000 saniye) kısmını verir..tooadate: Tarih tipindeki değişkenin değerini integer türü bir değişkene çevirir. Böylece tarihler üzerinde işlem yapmak kolaylaşır. Örnek: Formun üzerine bir tane textbox, bir tane buton koyun. Doğum tarihinizi girdiğinizde size hangi gün doğduğunuzu veren programı en kısa şekilde yazmaya çalışın. Private Sub Button1_Click(...) Dim tarih As Date Dim gunler() As String = {"paz", "pzt", "sal", "çar", "per", "cum", "cmt"} tarih = TextBox1.Text MsgBox(gunler(tarih.DayOfWeek)) Örnek: Satılan bir ürünün borcunun gecikmeli ödenmesi nedeniyle ödenecek ceza miktarını gösteren bir program yazın. Geciken her gün başına ürünün fiyatına 1/1000 ceza eklesin. Ödemenin yapıldığı gün sistem saati olsun ve kendiliğinden yüklensin. Private Sub Button1_Click(...) Dim tarih1, tarih2 As Date Dim fark, ceza As Long tarih1 = TextBox3.Text tarih2 = TextBox4.Text fark = tarih2.tooadate - tarih1.tooadate ceza = fark * 0.001 * Val(TextBox2.Text) TextBox5.Text = ceza TextBox6.Text = Format((Val(TextBox2.Text) + ceza), "##,##") Private Sub Form1_Load(...) TextBox4.Text = Today

DateAndTime.Timer: Bu özellik bir zaman sayacıdır ve gece yarısından itibaren kaç milisaniye (salise) geçtiğini verir. Sayının tam kısmı Saniyeyi, ondalık kısmı ise milisaniyeyi gösterir. Bu özellik kullanılarak iki işlem arasında geçen süre hesaplanabilir. Örnek: Bir döngünün kaç saniye sürdüğünü kullanılan değişkenlerin tipini tanımlayarak ve tanımlamadan hesaplayın. Private Sub Button1_Click(...) Dim ilk, son As Double Dim i ilk = DateAndTime.Timer For i = 1 To 10000000 i = i Next son = DateAndTime.Timer MsgBox("geçen süre=" & (son - ilk)) ÖDEV: Formun üzerine iki tane tane combobox yerleştirip buradan ay ve yılı seçtiğimizde bize o ayın tüm günlerini haftalık günleri ile birlikte gösteren bir program yazın. ÖDEV: Geçen süreyi tahmin etme üzerine

HAZIR FONKSİYONLAR A)Matematiksel Fonksiyonlar 1)Math.abs(Ondalık Sayı)=Ondalıklı sayıların mutlak değerini alır. ÖRNEK: Göster butonuna basıldığında textboxtaki negatif ondalıklı sayının mutlak değerini alan program kodlarını yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox2.Text = Math.Abs(Val(TextBox1.Text)) 2) Math.Ceiling(Ondalık Sayı)=Ondalıklı sayıyı yukarıya yuvarlar. Math.Floor(Ondalık Sayı)=Ondalıklı sayıyı aşağıya yuvarlar. 3) Math.PI=Pi sayısını verir(22/7) 4) Math.Pow(Sayı1,Sayı2)=Sayının üssünü(kuvvetini) alır. Sayı1=Üssü alınacak sayı Sayı2=Üs ÖRNEK:25 Sayısının 0.5 (1/2) üssünü alan programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("Sayının Kuvveti " & Math.Pow(25, 0.5)) 5) Math.Round(Ondalıklı Sayı,Hassasiyet)=Ondalıklı sayıyı verilen hassasiyete göre yuvarlar. Hassasiyet=Ondalıklı sayının virgülden sonraki basamaklarının kaç tane olacağını belirtir. ÖRNEK: Msgbox(Math.Round(17.247691,3)) Sonuç olarak 17.248 gösterecektir. 6) Math.Sin()=Verilen açının sinüs değerini verir. Math.Cos()=Verilen açının kosinüs değerini verir. Math.Tan()=Verilen açının tanjant değerini verir. Math.ASin()=Verilen değerin sinüs cinsinden açısını bulur. Math.ACos()=Verilen değerin kosinüs cinsinden açısını bulur. Math.ATan()=Verilen değerin tanjant cinsinden açısını bulur.

ÖRNEK: Msgbox(Math.Tan(22/28)) Sonuç olarak 1 değerini verecektir. NOT: Açılar radyan cinsinden verilmelidir. Yukarıdaki örnekte de 22/28 (yani 45 ) radyan cinsinden verilmiştir. ÖRNEK: Msgbox(Math.A.Sin(0.5)) Sonuç olarak 0.5235 radyan değerini verir. Bu değerde 30 dereceye karşılıktır.

DÖNGÜLER VE BLOKLAR Program içerisinde kontrolü, tekrarlı işlemlerin yapılmasını sağlarlar. IF THEN ELSE DEYİMİ: Programın koşullara bağlı olarak karar vermesini sağlar. Yapısı A) IF Koşul THEN İşlemler B)IF Koşul1 THEN İşlemler1 ELSEIF Koşul2 THEN İşlemler2 ELSEIF Koşul3 THEN İşlemler3 ELSE İşlemler N END IF NOT 1: ELSEIF istenilen sayı kadar arttırılır. Her seferinde yanına koşul yazılmalıdır. NOT 2: Sadece ELSE deyimi hiçbir şartın sağlanmadığı durumlarda kullanılır. Yanına koşul yazılmaz. ÖRNEK 1: Girdiğimiz notun harfsel olarak karşılığını veren programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim puan As Integer puan = Val(TextBox1.Text) If puan <= 100 And puan >= 90 Then MsgBox("A1 ile Geçtiniz") ElseIf puan < 90 And puan >= 80 Then MsgBox("A2 ile Geçtiniz") ElseIf puan < 80 And puan >= 70 Then MsgBox("B1 ile Geçtiniz") ElseIf puan < 70 And puan >= 65 Then MsgBox("B2 ile Geçtiniz") ElseIf puan < 65 And puan >= 60 Then MsgBox("C ile Geçtiniz") ElseIf puan < 60 And puan >= 0 Then MsgBox("F3 ile Kaldınız") Else : MsgBox("Hatalı Giriş Yaptınız") End If

ÖRNEK 2: Kullanıcı adı ve şifreye göre giriş yapan ve Msgbox la şifrenin doğru olup olmadığını gösteren programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim kullanici, sifre As String kullanici = TextBox1.Text sifre = TextBox2.Text If kullanici = "Ali" And sifre = "123" Then MsgBox("Şifre Doğru") Else : MsgBox("Şifre Yanlış") End If NOT 3: Textbox ın içeriğini yıldız(*) olarak göstermek için Textbox ın properties penceresinden Password Char özelliğine * yazılır. ÖRNEK 3: Örnek 2 için form daha yüklenirken bir pencere açılsın ve burada bizden sadece şifre istesin. Tamam tuşuna basıldığında şifre doğru ise form gözüksün,yanlış ise programı kapatsın.bu işlemi yapan programın kodlarını yazınız. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sifre As String sifre = InputBox("Şifre Giriniz", "ŞİFRE KONTROLÜ", "", 300, 200) If sifre <> "123" Then End NOT 4: Dışarıdan bir pencere ile bir değer alınırken inputbox() fonksiyonu kullanılır. Kullanılışı: sifre=inputbox( Şifrenizi Giriniz:, SIFRE KONTROLU,,300,200) NOT 5: Programdan çıkışı sağlamak için End komutu kullanılır. Örnek 3 te IF koşulunun sonuna yazılan End ; eğer şifre 123 e eşit değilse programdan çık anlamındadır. IF tek satırda yazıldığı için end if e gerek yoktur.

FOR NEXT DÖNGÜSÜ Çalışmasını istediğimiz kodları birçok kez çalıştırmak istersek bu döngüyü kullanabiliriz. Yapısı: FOR sayaç değişkeni =ilk değer TO son değer [step sayacın artış miktarı] Çalışacak Kodlar NEXT sayaç değişkeni NOT 1: [ ] ler tercihe bağlı olduğunu gösterir ve program yazarken kullanılmaz. NOT 2:FOR NEXT döngüsünde step adımı kullanılmazsa sayaç birer birer artar. ÖRNEK 4: İlk değer ve son değer arasındaki sayıları toplatıp Label a yazdıran programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim toplam As Integer = 0 Dim ilkdeger, sondeger, i As Integer ilkdeger = Val(TextBox1.Text) sondeger = Val(TextBox2.Text) For i = ilkdeger To sondeger toplam = toplam + i Next i Label4.Text = toplam ÖRNEK 5: 1 den 6 ya kadar olan sayıları 2 şer 2 şer olmak üzere ekranda Msgbox la gösteren programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Byte For i = 1 To 6 Step 2 MsgBox(i) Next i

ÖRNEK 6: İlk değer ile son değer arasındaki değerleri artış miktarına göre Msgbox la ekranda gösteren programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i, ilk, son, art_mik As Integer ilk = Val(TextBox1.Text) son = Val(TextBox2.Text) art_mik = Val(TextBox3.Text) For i = ilk To son Step art_mik MsgBox(i) Next i FOR EACH DÖNGÜSÜ For Each döngüsü bir dizinin içerisindeki elemanları otomatik olarak bir değişkene atıp bu değişkeni kullanarak sırayla elemanları görüntülememizi yada üzerinde işlem yapmamızı sağlar. Örnek: Biz diziye 6 tane ili tanımlama satırında atayıp daha sonra butona basıldığında bu dizi deki her bir elemanı for next döngüsü kullanmadan Listeye ekletin. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim Sehirler() As String = {"Adana", "Ankara", "Bursa", "İstanbul", "İzmir"} Dim Sehir As String For Each Sehir In Sehirler ListBox1.Items.Add(Sehir) Next DO LOOP, DO WHİLE LOOP, DO UNTIL LOOP, WHILE LOOP DONGULERİ

Do-Loop Döngüsü: Bu döngü içeriden çıkılmadığı sürece sonsuza kadar döner Örnek: 1-100 kadar olan sayıları sonsuz döngü kullanarak Listeye ekleyin Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer Do i = i + 1 ListBox1.Items.Add(i) If i = 100 Then Exit Do Loop Do while-loop Döngüsü Başlangıçta bizden bir şart ister ve bu şart geçerli olduğu müddetçe çalışır. Eğer yinede arada bir şart gerçekleştiğinde çıkmak istersek Exit Do ile çıkabiliriz. Örnek: 1-100 kadar olan sayıları Do while-loop döngüsü ile listeye ekletin. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer Do While (i < 100) i = i + 1 ListBox1.Items.Add(i) 'If i = 78 Then Exit Do Loop

Do Until- Loop döngüsü: Şart sağlana kadar döngüyü çalıştıracaktır. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer Do Until (i > 100) i = i + 1 ListBox1.Items.Add(i) 'If i = 78 Then Exit Do Loop *********************** Do i = i + 1 ListBox1.Items.Add(i) 'If i = 78 Then Exit Do Loop Until (i > 100) ****************** Do i = i + 1 ListBox1.Items.Add(i) 'If i = 78 Then Exit Do Loop While (i < 100) ÖRNEK 1: 0 100 arasındaki sayılardan rasgele seçen ve ne zamanki sayı 50 olduğunda döngüden çıkan ve kaçıncı seferde bulduğunu gösteren programı yazınız.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, i As Integer i = 0 Randomize() Do a = Int(Rnd() * (100) + 1) If a = 50 Then Exit Do i = i + 1 Loop MsgBox("Sayi=" & a & " " & "Kaç Seferde Bulduğunuz=" & i) Aynı program Do-Loop While döngüsü ile yapılacak olursa komutları şu şekilde olurdu: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, i As Integer i = 0 Randomize() Do a = Int(Rnd() * (100) + 1) i = i + 1 Loop While a <> 50 MsgBox("Sayi=" & a & " " & "Sayaç=" & i) NOT: 100 ile 10000 arasındaki sayıları listeye eklemek isteyelim. Eğer Do While Kullanılırsak (i>100) yada i<10000 şeklinde ifade etmeliyiz. i 100 den büyük mü? =Evet yada üst sınırı kullanırsak i 10000 den küçük mü=evet. Her ikisindede evet dediğimiz için döngü çalışacaktır. Eğer Until kullanırsak. (i>10000) i 10000 den büyük olana kadar devam et. İ=100 olsun. i 10000 den büyükmü? Hayır Cevabı aldığımız için döngü çalışacaktır. Ne zaman çıkacak evet cevabını aldığımızda çıkacaktır. Dikkat edilirse birinde Evet dediğimizde çalışıyor, Diğerinde ise hayır dediğimizde çalışıyor. Aşağıdaki örnekleri inceleyin. Dim i As Integer = 100 'Dim kare As Integer 'For i = 1 To 100 'ListBox1.Items.Add(i) 'Next

'Do 'i = i + 1 'ListBox1.Items.Add(i) 'kare = i * i 'If kare > 30000 Then Exit Do 'Loop 'Do While (i >= 100) 'i = i + 1 'ListBox1.Items.Add(i) 'If i = 10000 Then Exit Do 'Loop 'Do 'i = i + 1 'ListBox1.Items.Add(i) 'Loop While (i = 10000) 'Do Until (i >= 10000) 'i = i + 1 'ListBox1.Items.Add(i) 'Loop Do i = i + 1 ListBox1.Items.Add(i) Loop Until (i > 10000)

LİSTBOX (LİSTE KUTUSU) NOTLAR: 1) ListBox1.Selectedindex komutu listede seçili olan elemanın numarasını verir. 2) ListBox1.Selecteditem komutu listede seçili olan elemanı gösterir. 3) ListBox1.Items.RemoveAt( ) komutu index (sıra) numarası verilen elemanı siler. Parantez içine sıra numarası yazılır. 4) ListBox1.Items.Remove( ) komutu ismi yazılan elemanı siler. Parantez içine isim yazılır. 5) ListBox1.Items.Count komutu listedeki eleman sayısını verir. 6) ListBox1.Items.IndexOf( ) komutu listeden seçilen elemanın kaçıncı eleman olduğunu gösterir. ÖRNEK 1: Aşağıdaki çıktıyı veren programı yapınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Add(TextBox1.Text) TextBox1.Text = " " Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear() Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) ListBox1.Items.Remove(ListBox1.SelectedItem) Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click If ListBox1.Items.Count < TextBox2.Text Then ListBox1.Items.Insert(ListBox1.Items.Count, TextBox3.Text)

Else : ListBox1.Items.Insert(Val(TextBox2.Text), TextBox3.Text) End If Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click MsgBox("Eleman Sayısı " & ListBox1.Items.Count) Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click MsgBox("Seçtiğiniz Kişinin Sıra Numarası " & ListBox1.Items.IndexOf(TextBox4.Text)) Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged MsgBox(ListBox1.SelectedItem) COMBOBOX(AÇILIR LİSTE) ComboBox, ListBox ın aynısıdır. Aralarındaki tek fark maddeler burada gizlenmiş olarak gösterilir. Kullanılan komutlar ListBox komutları ile aynıdır. ÖRNEK 2: 0 ile 100 arasından 10 tane sayıyı rasgele olarak ComboBox ın içerisinde toplayan programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sayi, i As Integer Randomize() For i = 1 To 10 sayi = Int(Rnd() * (100-0) + 0) ComboBox1.Items.Add(sayi) Next i NOT: Randomize() fonksiyonu zamana bağlı olarak Rnd() fonksiyonunu çalıştırır. Eğer bu fonksiyon kullanılmaz ise Rnd() programda hep aynı sayıları üretecektir. Bu fonksiyon sayesinde Rnd() zamana bağlı olarak yeni sayılar üretir. Zaman sürekli ilerlediği için dolayısıyla her üretilen sayı grubu bir öncekilerden farklı olacaktır. Rnd Fonksiyonunun Kullanılışı Int(Rnd()*(son değer-ilk değer)+ilk değer)

Örnek: Sayfaya 1 tane ComboBox, 1 tane ListBox 2 tane buton ekleyin. Birinci butona tıkladığımızde 0-100 arasından 100 tane sayıyı Combobox a attırın. Daha sonra ikinci butona tıkladığımızda her sayıdan kaç tane attığını Listbox da göstersin. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim RastgeleSayi As Integer For i = 1 To 100 RastgeleSayi = Int((Rnd() * 100)) ComboBox1.Items.Add(RastgeleSayi) Next Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sayac As Integer Dim OkunanSayi As Integer For i = 0 To 99 sayac = 0 OkunanSayi = ComboBox1.Items.Item(i) Next For j = 0 To 99 If OkunanSayi = ComboBox1.Items.Item(j) Then sayac = sayac + 1 End If Next ListBox1.Items.Add(OkunanSayi & "-" & sayac) End Class

ÖDEV: Google arama motoru benzeri Tam kelime Kısmı kelime arama yapan bir program yazın. CHECKBOX Seçenekler arasından bir veya birden fazla seçim yapmamızı sağlar. ÖRNEK 3: Aşağıdaki çıktıyı veren programı yapınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim takim As String takim = " " If CheckBox1.Checked = True Then takim = takim + "FENERBAHÇE " End If If CheckBox2.Checked = True Then takim = takim + "GALATASARAY " End If If CheckBox3.Checked = True Then takim = takim + "BEŞİKTAŞ " End If If CheckBox1.Checked = False And CheckBox2.Checked = False And CheckBox3.Checked = False Then MsgBox("Takım Tutmuyorsunuz") Else MsgBox("Tuttugumuz Takım/Takımlar " & takim) End If RADİOBUTTON Seçenekler arasından sadece bir tanesini seçmemizi sağlar. Kullanımı Checkbox nesnesi ile aynıdır. Yalnız burada RadioButton ların mutlaka daha önceden GroupBox nesnesi içerisine konması gerekir. Bu nesne RadioButton ları grup haline getirir. Butonlarda biri seçildiğinde diğerinin seçimini iptal eder.

ÖRNEK 4: Aşağıdaki çıktıyı veren programı yapınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If RadioButton1.Checked = True Then MsgBox("Tutugunuz Takım FENERBAHÇE") ElseIf RadioButton2.Checked = True Then MsgBox("Tutugunuz Takım GALATASARAY") ElseIf RadioButton3.Checked = True Then MsgBox("Tutugunuz Takım BEŞİKTAŞ") Else MsgBox("Takım Tutmuyorsunuz") End If Örnek: Formun üzerine

PİCTUREBOX ÖZELLİKLERİ 1) Picturebox ın properties özellikler penceresindeki Image özelliğine resmin yolu verilir. Kullanımı: Picturebox1.Image= Image.FromFile ( Resmin Konumu ) 2) Picturebox ın properties özellikler penceresindeki SizeMode özelliğindeki StretchImage seçeneği resmi çerçeveye uydurur, AutoSize seçeneği ise çerçeveyi resme uydurur. Kullanımı: Picturebox1.SizeMode= StretchImage Picturebox1.SizeMode= AutoSize 3) Picturebox ın Width özelliği resmin genişliğini ayarlamamızı sağlar Kullanımı: Picturebox1.Width= ( sayı ) 4) Picturebox ın Height özelliği resmin yüksekliğini ayarlamamızı sağlar Kullanımı: Picturebox1.Height= ( sayı ) ÖRNEK 1: Aşağıdaki çıktıyı veren program kodlarını yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Width = Val(TextBox1.Text) PictureBox1.Height = Val(TextBox2.Text) PictureBox1.Image = Image.FromFile("C:\Documents and Settings\All Users\Belgeler\Resimlerim\Örnek Resimler\Kış.Jpg") Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize OPENFİLEDİALOG Resimlerin konumunun otomatik olarak alınmasını sağlar. OpenFileDialog kutusu tasarım aşamasında gözükürken program çalıştırıldığında bu kutu görünmez. OpenFileDialog kutusunun Properties özellikler penceresinden Filter özelliğine (Dosya Türü kısmında görünecek isim *.Dosyanın uzantısı) yazılır. ÖRNEK 2: Aşağıdaki resmi görüntüleyen ve msgbox ile resmin konumunu veren program kodlarını yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OpenFileDialog1.Filter = "Bitmap Resimleri *.bmp Jpeg Resimleri *.jpg" OpenFileDialog1.ShowDialog() PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName.ToString) MsgBox(OpenFileDialog1.FileName.ToString) NOT 1: OpenFileDialog kutusunun ShowDialog( ) özelliği bize otomatik olarak resimlerin bulunduğu diyalog kutusunu getirir. NOT 2: OpenFileDialog kutusunun FileName.ToString özelliği ise bize resmin konumunu verir.

ÖRNEK: Listeden seçilen resmi picturebox ta görüntüleyen programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OpenFileDialog1.Filter = "Bitmap Resimleri *.bmp JPEG Resimleri *.jpg" OpenFileDialog1.ShowDialog() ListBox1.Items.Add(OpenFileDialog1.FileName.ToString) Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged PictureBox1.Image = Image.FromFile(ListBox1.SelectedItem) PICTUREBOX NESNESİ Örnek: Bir resim albümü yapınız. Public Class Form1 Dim s As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim resimyolu As String OpenFileDialog1.ShowDialog() resimyolu = OpenFileDialog1.FileName PictureBox1.Image = Image.FromFile(resimyolu) ListBox1.Items.Add(resimyolu) Private Sub RadioButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.Click PictureBox1.SizeMode = PictureBoxSizeMode.Zoom Private Sub RadioButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.Click PictureBox1.SizeMode = PictureBoxSizeMode.Normal Private Sub ListBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.Click PictureBox1.Image = Image.FromFile(ListBox1.SelectedItem) Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim ilkresim As String s = 0 ilkresim = ListBox1.Items.Item(s) PictureBox1.Image = Image.FromFile(ilkresim) Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim sonresim As String s = ListBox1.Items.Count - 1 sonresim = ListBox1.Items.Item(s)

PictureBox1.Image = Image.FromFile(sonresim) Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim resim As String s = s + 1 If s > ListBox1.Items.Count - 1 Then s = 0 End If resim = ListBox1.Items.Item(s) PictureBox1.Image = Image.FromFile(resim) Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim resim As String s = s - 1 If s < 0 Then s = ListBox1.Items.Count - 1 End If resim = ListBox1.Items.Item(s) PictureBox1.Image = Image.FromFile(resim) End Class

TİMER Bu nesne belirlenen bir işlemi belli zaman aralıklarında yapılmasını sağlar. Nesnenin en önemli özelliği Interval özelliğidir. Eğer Interval =1000 olarak alırsak zaman aralıkları 1 saniye olacaktır. Yani timer nesnesinin içerisine yazmış olduğumuz kodlar her 1 saniyede bir çalışacaktır. ÖRNEK 1:Formun üzerinde dakika ve saniyeleri gösteren bir sayaç yapınız. Dim i As Integer = 0 Dim j As Integer = 0 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick i = i + 1 Label2.Text = i If i Mod 60 = 0 Then j = j + 1 Label1.Text = j i = 0 End If ÖRNEK 2:Form üzerine yerleştirilen resmin zamanla hareket etmesini sağlayan program kodlarını yazınız. Dim i As Integer = 0 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick i = i + 1 PictureBox1.Left = PictureBox1.Left + i ÖRNEK 3:Forma bir resim eklenip bu resmin form üzerinde rasgele yer değiştirmesini sağlayan ve resim üzerine tıklandığında da resmi kaç saniyede yakaladığını msgboxla gösteren programı kodlarını yazınız.

Dim l As Integer Dim t As Integer Dim en, boy, s As Integer Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Randomize() l = Int(Rnd() * 200) t = Int(Rnd() * 200) PictureBox1.Left = l PictureBox1.Top = t s = s + 1 Private Sub PictureBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.Click Timer1.Enabled = False MsgBox(s & " Saniyede Yakaladınız") ÖDEV: Gerçek bir tetris programı yazın. Bunun için Picturebox ve Timer nesnesi kullanın. Yardımcı olacak kodlar aşağıda verilmiştir. Public Class Form1 Dim x As Integer = 200 Dim y As Integer Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick y = y + 10

KoordinatHesaplama(x, y) Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If e.keycode = Keys.Left Then x = x - 10 End If If e.keycode = Keys.Right Then End If x = x + 10 If e.keycode = Keys.Up Then End If If e.keycode = Keys.Down Then End If y = 400 Timer1.Enabled = False KoordinatHesaplama(x, y) Sub KoordinatHesaplama(ByVal x As Integer, ByVal y As Integer) PictureBox2.Location = New Point(x, y) PictureBox3.Location = New Point(x + 32, y) PictureBox4.Location = New Point(x + 64, y) PictureBox5.Location = New Point(x + 96, y) End Class

DİZİLER Aynı değişken içerisinde indis kullanılarak çok sayıda değeri hafızada tutmak istersek dizileri kullanabiliriz. Dizilerin indisi 0 dan başlar ve hafızada ayrılan yer sayısınca sayısı artırılabilir. Diziler bilgileri geçici olarak hafızada tutarlar(memory(ram))( Elektrik kesintisinde bilgiler kaybolur) Diziler 1,2,3 ya da çok sayıda boyutlu olarak tanımlanabilir. Örnek: Dışarıdan n adet sayıyı diziye alan ve daha sonra bunları sırayla listbox a ekleyen bir program yazınız. Dışarıdan sayıları Inputbox a alın. Daha öncesinde kaç sayı girileceğini de isteyin. Public Class Form1 Dim isim() As String Dim i, j As Integer Dim ElemanSayisi As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click i = i + 1 ReDim Preserve isim(i) isim(i) = TextBox1.Text ElemanSayisi = i TextBox1.Clear() 'Bu satır Textbox'ın içerisini boşaltır. TextBox1.Select() 'Bu satır imlecin içerisine otomatik olarak yerleşmesini sağlar Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear() For j = 1 To ElemanSayisi ListBox1.Items.Add(isim(j)) Next End Class ÖRNEK 1: Aşağıdaki programı deneyiniz.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a(3) As Integer 'Bu dizi toplam 4 tane sayıyı içinde tutar. Dim i As Integer a(0),a(1),a(2),a(3) a(0) = 5 a(1) = 3 a(2) = 7 a(3) = 8 For i = 0 To 3 MsgBox(a(i)) Next i ÖRNEK 2: 3 tane ismi içinde tutacak olan bir diziyi string olarak tanımlayınız ve bu diziye 3 tane isim atayın. Daha sonra bu isimleri msgboxla gösteren program kodlarını yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim isim(2) As String Dim i As Integer isim(0) = "Ali" isim(1) = "Can" isim(2) = "Oya" For i = 0 To 2 MsgBox(isim(i)) Next i ÖRNEK 3: Bir Textbox a girilen 3 tane ismi Ekle butonuyla bir diziye ekleyin.daha sonra Göster butonuna basıldığında bu isimleri msgbox la listeleyen program kodlarını yazınız. Dim ad(2) As String Dim i As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ad(i) = TextBox1.Text i = i + 1 TextBox1.Text = " " Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim j As Integer For j = 0 To 2 MsgBox(ad(j)) Next j ÖRNEK 4: 3.Örneği başlangıçta diziye kaç tane isim girileceğini bilmeden yapalım. Dim ad() As String Dim i As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ReDim Preserve ad(i) ad(i) = TextBox1.Text i = i + 1 TextBox1.Text = " " Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim j As Integer For j = 0 To i - 1 MsgBox(ad(j)) Next j NOT : ReDim Preserve ad(i) komutunda Preserve kelimesini kullanırsak dizinin önceki elemanlarını da dizi içinde tutmuş oluruz. Eğer bu kelimeyi kullanmazsak her seferinde dizinin içerisini boşaltır önce yazılan elemanlar kaybolur. Örnek:??? Public Class Form1 Dim kisi(10, 2) As String Dim i, j As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kisi(i, 0) = TextBox1.Text

kisi(i, 1) = TextBox2.Text i = i + 1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim k As Integer For k = 0 To i - 1 Next ListBox1.Items.Add(kisi(k, 0) & "," & kisi(k, 1)) End Class ÖRNEK 5: İstediğimiz kadar sayı ekleyip eklediğimiz sayıları Listboxta gösteren topla dediğimizde de sayıların toplamını Label da gösteren program kodlarını yazınız. Dim sayi() As Integer Dim i As Integer = 0 Dim toplam As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ReDim Preserve sayi(i) sayi(i) = TextBox1.Text i = i + 1 TextBox1.Text = " " Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim j As Integer ListBox1.Items.Clear() toplam = 0 For j = 0 To i - 1 ListBox1.Items.Add(sayi(j)) toplam = toplam + sayi(j) Next j Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Label1.Text = "Toplam=" & toplam

ÖRNEK: Bir öğrenci listesini Ad, vize, Final bilgileri olmak üzere dışarıdan sırayla alın. En sonunda bu listeyi Listeboxda Ali,23,56 şeklinde göstersin. Public Class Form1 Dim Dizi(100, 3) As String Dim i, j As Integer Dim ElemanSayisi As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click i = i + 1 Dizi(i, 0) = TextBox1.Text Dizi(i, 1) = TextBox2.Text Dizi(i, 2) = TextBox3.Text ElemanSayisi = i Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear() For j = 1 To ElemanSayisi ListBox1.Items.Add(Dizi(j, 0) & "," & Dizi(j, 1) & "," & Dizi(j, 2)) Next End Class Araştırma: Bur örnekte Redim çalıştırılamadı. İnternetten araştırılıp bulunacak. ÖRNEK 6: b00 b01 b02 b10 b11 b12 Yukarıda verilen matrisin elemanlarını dışarıdan alıp bu değerleri toplatan program kodlarını yazınız.

Dim SatirSayisi, SutunSayisi As Integer Dim i, j As Integer Dim toplam As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click SatirSayisi = Val(TextBox1.Text) - 1 SutunSayisi = Val(TextBox2.Text) - 1 Dim B(SatirSayisi, SutunSayisi) As Integer For i = 0 To SatirSayisi For j = 0 To SutunSayisi B(i, j) = InputBox("B" & i & j & " Elemanını Giriniz", "MATRİS GİRİŞİ") toplam = toplam + B(i, j) Next j Next i Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click MsgBox("SAYILARIN TOPLAMI=" & toplam)

Örnek: Dinamik olarak iki matrisin toplamını yapan bir program yazınız Public Class Form1 Dim M, N, i, j As Integer Dim A(10, 10), B(10, 10), C(10, 10) As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click M = Val(TextBox1.Text) N = Val(TextBox2.Text) Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click For i = 1 To M For j = 1 To N A(i, j) = InputBox("A Matrisi" & i & "," & j & "Gir", "A Matrisi") Next Next For i = 1 To M For j = 1 To N B(i, j) = InputBox("B Matrisi" & i & "," & j & "Gir", "B Matrisi") Next Next For i = 1 To M For j = 1 To N Next Next C(i, j) = A(i, j) + B(i, j) Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

For i = 1 To M For j = 1 To N MsgBox("(C" & i & "," & j & ")=" & C(i, j)) Next Next End Class ÖDEV: mxn boyutlu iki matrisin çarpımını yapan programı görsel düzeyi yüksek olarak programlayın ÖDEV: Rastgele ormanda uçan bir kelebeği yakalayan bir oyun programı hazırlayın. Dim hiz As Integer Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim X, Y As Integer Randomize() X = Rnd() * 400 Y = Rnd() * 300 PictureBox2.Location = New Point(X, Y) Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click 'MsgBox("Yakaladın") 'Timer1.Enabled = False ListBox1.Items.Add(hiz) hiz = hiz - 200 If hiz > 0 Then

Timer1.Interval = hiz End If Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load hiz = 1000 Timer1.Interval = Hiz

Örnek: Dışarıdan girilen N adet sayıyı sıralayan bir program yazın. Dim Sayi(100) As Integer Dim s As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click s = s + 1 Sayi(s) = Val(TextBox1.Text) Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i, j As Integer Dim A As Integer For j = 1 To s For i = 1 To s - 1 If Sayi(i) > Sayi(i + 1) Then A = Sayi(i) Sayi(i) = Sayi(i + 1) Sayi(i + 1) = A

End If Next Next Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click For i = 1 To s ListBox1.Items.Add(Sayi(i)) Next Örnek: Dışarıdan alınan n adet sayıyı for each döngüsü kullanarak listeye ekletin. Dim sayi() As Integer Dim s As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ReDim Preserve sayi(s) sayi(s) = Val(TextBox1.Text) s = s + 1 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click For Each Rakam In sayi ListBox1.Items.Add(Rakam) Next

ÇİZİM KOMUTLARI Çizim komutları için aşağıdaki örneği inceleyin Örnek: Formun üzerine 3 tane butona ekleyin. Bunların her birine tıklayıp Line (doğru), Circle( Daire), Rectangle (Dikdörtgen) çizim işlemini yaptırın. Bunlardan sadece daireyi çizerken Picturbox ın tam ortasına 100 yarıçapında daire çizsin Public Class Form1 Dim X1, Y1, X2, Y2 As Integer Dim CizgiRengi As Pen Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click X1 = 10 Y1 = 30 X2 = 150 Y2 = 200 CizgiRengi = Pens.Yellow PictureBox1.CreateGraphics.DrawLine(CizgiRengi, X1, Y1, X2, Y2)

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim R As Integer R = 100 X1 = PictureBox1.Width / 2 - R Y1 = PictureBox1.Height / 2 - R X2 = 2 * R Y2 = 2 * R CizgiRengi = Pens.Red PictureBox1.CreateGraphics.DrawEllipse(CizgiRengi, X1, Y1, X2, Y2) Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click X1 = 10 Y1 = 30 X2 = 150 Y2 = 200 CizgiRengi = Pens.LightGreen Y2) PictureBox1.CreateGraphics.DrawRectangle(CizgiRengi, X1, Y1, X2, End Class ÖRNEK 1:Tıklanan noktanın 10 ve 10 un katları şeklinde Label da x1 ve y1 koordinatlarını gösteriniz.

Dim x1, y1, a, b As Integer Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown x1 = e.x y1 = e.y a = x1 Mod 10 b = y1 Mod 10 Label1.Text = x1 Label2.Text = y1 Label3.Text = a Label4.Text = b If a < 5 Then x1 = x1 - a Else : x1 = x1 + (10 - a) End If If b < 5 Then y1 = y1 - b Else : y1 = y1 + (10 - b) End If Label5.Text = x1 Label6.Text = y1 ÖRNEK 2: Bir pictureboxüzerinde dışarıdan alınan bir sayıya bağlı olarak o sayının katları şeklinde noktaları gösteriniz. Dim sayi, i, j, x, y As Integer Dim kalem As Pen Dim ciz As Graphics Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics sayi = Val(TextBox1.Text) For i = 0 To 300 Step sayi For j = 0 To 300 Step sayi x = i y = j ciz.drawellipse(kalem, x - 1, y - 1, 2, 2) Next j Next i

ÖRNEK 3: Ekrana önce 20 piksel aralıklarla ızgara noktalarını çizdirelim. Daha sonra Mouse ile picturebox ın üzerinde çizgi çizerken bu noktalar üzerinde çizgileri çizdirelim. Ara değerlerde çizgi çizmesin(grid aralığı 20 piksel olacak). Dim kalem As Pen Dim ciz As Graphics Dim x, y, i, j As Integer Dim x1, y1, a, b, x2, y2 As Integer Dim tiklama As Integer = 1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics For i = 0 To 300 Step 20 For j = 0 To 300 Step 20 x = i y = j ciz.drawellipse(kalem, x - 1, y - 1, 2, 2) Next j Next i Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics x = e.x y = e.y a = x Mod 20 b = y Mod 20 If a < 10 Then x = x - a Else : x = x + (20 - a) End If If b < 10 Then y = y - b Else : y = y + (20 - b) End If If tiklama = 1 Then x1 = x y1 = y

tiklama = 2 ElseIf tiklama = 2 Then x2 = x y2 = y tiklama = 1 ciz.drawline(kalem, x1, y1, x2, y2) End If ÖRNEK 4: Örnek 3 te verilen uygulamada çizilen her çizgiyi diziye kaydedin. Bir temizleme butonuyla Picturebox temizlendikten sonra Yeniden Çiz butonuyla aynı duvarları tekrar çizdirin. Dim kalem As Pen Dim ciz As Graphics Dim x, y, i, j As Integer Dim x1, y1, a, b, x2, y2 As Integer Dim tiklama As Integer = 1 Dim cizgi(100, 3) As Integer Dim k, s, t As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click For i = 0 To 300 Step 20 For j = 0 To 300 Step 20 x = i y = j ciz.drawellipse(kalem, x - 1, y - 1, 2, 2) Next j Next i Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown x = e.x y = e.y a = x Mod 20 b = y Mod 20 If a < 10 Then x = x - a Else : x = x + (20 - a) End If If b < 10 Then y = y - b Else : y = y + (20 - b) End If If tiklama = 1 Then x1 = x

y1 = y tiklama = 2 ElseIf tiklama = 2 Then x2 = x y2 = y tiklama = 1 ciz.drawline(kalem, x1, y1, x2, y2) k = k + 1 cizgi(k, 0) = x1 cizgi(k, 1) = y1 cizgi(k, 2) = x2 cizgi(k, 3) = y2 End If Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click PictureBox1.Image = Nothing Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click For s = 1 To k ciz.drawline(kalem, cizgi(s, 0), cizgi(s, 1), cizgi(s, 2), cizgi(s, 3)) Next s Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics ÖRNEK 5: 25 Piksellik aralıklarla ızgarayı gösterin. Daha sonra Mouse ile herhangi bir noktaya tıklanıp buna en yakın olan ızgara noktası üzerine bir daire çizdirin. Bu daire fareyi temsil etsin. Başka bir butona tıklayarak fare 25 piksellik aralıklarla rasgele hareket etsin.

Dim kalem As Pen Dim ciz As Graphics Dim x, y, i, j As Integer Dim x1, y1, a, b, x2, y2 As Integer Dim tiklama As Integer = 1 Dim cizgi(100, 3) As Integer Dim k, s, t As Integer Dim farex, farey As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click For i = 0 To 300 Step 25 For j = 0 To 300 Step 25 x = i y = j ciz.drawellipse(kalem, x - 1, y - 1, 2, 2) Next j Next i Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown x = e.x y = e.y a = x Mod 25 b = y Mod 25 If a < 12.5 Then x = x - a Else : x = x + (25 - a) End If If b < 12.5 Then y = y - b Else : y = y + (25 - b) End If farex = x farey = y ciz.drawellipse(kalem, farex - 10, farey - 10, 20, 20) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics farex = 200 farey = 200 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Enabled = True Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Randomize() s = Rnd() * 3 If s = 0 Then farex = farex + 25 farey = farey + 0 End If If s = 1 Then farex = farex + 0 farey = farey - 25 End If If s = 2 Then farex = farex - 25

farey = farey + 0 End If If s = 3 Then farex = farex + 0 farey = farey + 25 End If ciz.drawellipse(kalem, farex - 10, farey - 10, 20, 20) MENÜ VE ARAÇ ÇUBUKLARI (MENUS & TOOLBARS) Programlarımızı daha görsel hale getirmek için Menus (Menü), Toolbars (Araç Çubuğu), Status Bar (Durum Çubuğu) gibi elemanlar kullanabiliriz. Bu işlem için Yan taraftaki Toolbox (araç kutusu) ndan elemanı seçip formun üzerine bırakırız. Ve resimlerde olduğu gibi gerekli ayarlamaları yaparız. Menü Ekleme Public Class Form1 Private Sub KapatCtrlZToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KapatCtrlZToolStripMenuItem.Click End

Private Sub YeniToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles YeniToolStripMenuItem.Click MsgBox("Merhaba") End Class

VB.NET DE DATABASE KULLANIMI.NET ortamı veritabanı ile haberleşirken iki temel yapıyı kullanır. Bunlar. a) SQL Server.NET Data Provider: SQL server 7.0 sonrası için kullanılır. b) OLE DB.NET Data Provider: OLE DB destekli veri kaynakları için kullanılır. Microsoft Access, Oracle, XML document gibi. Veri tabanıyla bağlantının yapısı şu şekildedir. Veri Tabanı Connection Command DataAdapter DataSet Uygulama Bunları sırayla açıklayalım. OLEDBCONNECTION (bağlantı) Burada OleDb veri tabanıyla bağlantıda kullanılan Nesnedir. OleDbConnection ise bunun bir alt işlemlerini gören yani bağlantıyı sağlayan bir metoddur. ConnectionString ise bağlantının nasıl yapacağını bildiren tanımlamalar içermektedir. Bu tanımlamalar microsoft Access için kulanılırken şöyledir. Provider= Microsoft.Jet.OLEDB.4.0 Data Source= Veri tabanın adresi Örnek: Access veritabanın açarak bir deneme.mdb isminde bir veri tabanı oluşturun. Bunun içindeki tablonun adınıda Tablo1 olarak atayın. Tabloların genelikle ilk sütünü primary key olarak atanırki her kayıt için farklı bir bilgi bulundurur. Böylece kayıtlar karıştırılmaz. Tablonun içinede bilgiler yazın. VB.net geçip bir form açın ve üzerine bir buton yerleştirin. Butonun içerisine aşağıdaki kodu yazın. Private Sub Button1_Click(...) Dim baglantim As New OleDb.OleDbConnection Try baglantim.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=deneme.mdb;"

baglantim.open() Catch hata As System.Exception MsgBox(hata.Message) End Try baglantim.close() Eğer veri tabanını verilen adreste bulduysa herhangi bir şey söylemez. Bulamadıysa aşağıdaki gibi bir hata verir. VB.net projelerinin kaydedildiği yeri bulun yada ilk projeyi oluştururken çalıştığınız yeri belirleyin. Proje dizini oluşturulduktan sonra database /bin dizinin içine atın. Zaten verilen bu hata mesajındada database nerede aradığı gözükmektedir. OLEDBCOMMAND: (sorgulama) veri tabanından sorgulama yapmak için kullanılır. Kullanım yeri Connection dan sonra gelir. Örnek: Aynı örneğin içirisinde Connection satırlarından sonra şu satırları ekleyin. Private Sub Button1_Click(...)... Dim sorgu As New OleDb.OleDbCommand sorgu.connection = baglantim sorgu.commandtext = "SELECT * FROM Tablo1" baglantim.close() OLEDBDATAREADER: (bilgileri geçici yükleme) Veri tabanından okunan bilgiler geçici olarak bu nesneye yüklenir. Bu bir nevi dizidir. Bu nedenle dizinin her elemanı sütünları ifade eder. Daha sonra bir döngü kullanılarak bilgiler buradan bir Görüntüleme nesnesine (Datalist, DataGrid) aktarılabilir. Örnek: Aynı örneğin içirisinde Connection satırlarından sonra şu satırları ekleyin. Private Sub Button1_Click(...)...... Dim okuyucu As OleDb.OleDbDataReader 'Okuyucu nesnesi oluşturuluyor. okuyucu = sorgu.executereader 'Sorguyu çalıştırıyor ve Sorgudan gelen bilgiler okuyucuya yükleniyor. Do While okuyucu.read = True ListBox1.Items.Add(okuyucu(0) & " " & okuyucu(1) & " " & okuyucu(2) & " " & okuyucu(3)) Loop baglantim.close()

Örnek: Veritabanına Access üzerinden kişilerin ad soyad ve yaşlarını girin. Yaşı 20 den büyük olanları listeletin. Private Sub Button1_Click(...)...... Dim okuyucu As OleDb.OleDbDataReader 'Okuyucu nesnesi oluşturuluyor. okuyucu = sorgu.executereader 'Sorguyu çalıştırıyor ve Sorgudan gelen bilgiler okuyucuya yükleniyor. Do While okuyucu.read = True If okuyucu(3) > 20 Then ListBox1.Items.Add(okuyucu(0) & " " & okuyucu(1) & " " & okuyucu(2) & " " & okuyucu(3)) End If Loop baglantim.close() Bu örnekteki gibi istenilen bilgileri görüntülemek için iki yöntem vardır. Bunlardan birincisi a) SQL sorgudan tüm bilgiler okunduktan sonra bunlardan istenilenleri görüntülenir. Burada yapılan bu şıktır. b) SQL sorgusu esnasında istenilen bilgiler okunur ve bunlar görüntülenir. Bunu sağlamak için aşağıdaki şekilde sorgu komutlarını degiştirmeliyiz............. Dim sorgu As New OleDb.OleDbCommand sorgu.connection = baglantim sorgu.commandtext = "SELECT * FROM Table1 WHERE val(yas)>20" NOT: Buradaki kodları denerken bir hata ile karşılaşırsanız hatanın oluştuğu kodu Yukarıda örnek olarak verildiği gibi mutlaka Try Catch bloku içinde çalıştırın. Hangi hatanın neden meydana geldiğini türkçe olarak size söyler.

ÖRNEK 1:ID, ADI, SOYADI ve YAŞ bilgilerini Microsoft Access te oluşturulan veri tabanındaki bilgilere göre listeleyen programın kodlarını yazınız. okuyucu sorgu Visual Basic Formu Access Veritabanı ID AD SOYAD YAS baglanti komut LİSTELE BUTONU Veritabanı Bağlantısı Imports System.Data.OleDb Public Class Form1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'bağlantı Dim baglanti As OleDbConnection baglanti=new OleDbConnection ("provider=microsoft.jet.oledb.4.0;data source=d:\vt2.mdb") baglanti.open() Veritabanı ndan hangi bilgilerin alınacağı Bilgileri Taşıma 'sorgulama Dim sorgu As String sorgu= "select * from tablo1" Dim komut As New OleDbCommand(sorgu, baglanti) 'okuyucu Dim okuyucu As OleDbDataReader

Bilgileri Listeleme " " & okuyucu = komut.executereader() While okuyucu.read = True ListBox1.Items.Add(okuyucu.Item("ID") & " " & okuyucu.item("ad") & okuyucu.item("soyad") & " " & okuyucu.item("yas")) End While 'KAPATMA İŞLEMLERİ okuyucu.close() baglanti.close() End Class ÖRNEK 2:Yukarıdaki örneğe göre kaydetme işlemini yapan program kodlarını yazınız. KAYDET BUTONU Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Veritabanı Bağlantısı & Veritabanı Bağlantısı Dim baglanti As OleDbConnection baglanti=new OleDbConnection ("provider=microsoft.jet.oledb.4.0;data source=d:\vt1.mdb") baglanti.open() Dim sorgu As String sorgu = "INSERT INTO TABLO1 (AD,SOYAD,YAS) VALUES('" & TextBox1.Text "', '" & TextBox2.Text & "','" & TextBox3.Text & "')" Dim komut As OleDbCommand komut = New OleDbCommand(sorgu, baglanti) komut.executenonquery() baglanti.close() MsgBox("BİLGİLER EKLENDİ") End Class ÖRNEK 3:Yukarıdaki örneğe göre ID numarasına göre kayıt bulma(arama) işlemini yapan program kodlarını yazınız.

ARAMA BUTONU Veritabanı Bağlantısı Aranan Kelime Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim yol As String yol = "provider=microsoft.jet.oledb.4.0;data source=d:\vt1.mdb" Dim baglanti As OleDbConnection baglanti = New OleDbConnection(yol) baglanti.open() Dim aranan As Integer aranan = Val(TextBox1.Text) Veritabanı ndan hangi bilgileri alacağımızı n ifadesi Okunan Bilgilerin Taşındığı Kısım Bilgilerin Gösterildiği Kısım Dim sorgu As String sorgu = "select*from tablo1 where ID like'%" & aranan & "%'" Dim komut As OleDbCommand komut = New OleDbCommand(sorgu, baglanti) Dim okuyucu As OleDbDataReader okuyucu = komut.executereader While okuyucu.read = True TextBox2.Text = okuyucu.item("ad") TextBox3.Text = okuyucu.item("soyad") TextBox4.Text = okuyucu.item("yas") End While okuyucu.close() baglanti.close() ÖRNEK 4:Yukarıdaki örneğe göre kayıtları güncelleme işlemini yapan program kodlarını yazınız.

GÜNCELLEME BUTONU Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim yol As String yol = "provider=microsoft.jet.oledb.4.0;data source=d:\vt1.mdb" Dim baglanti As OleDbConnection baglanti = New OleDbConnection(yol) baglanti.open() Dim idguncelleme As Integer Dim adguncelleme, yasguncelleme, soyadguncelleme As String idguncelleme = Val(TextBox1.Text) adguncelleme = TextBox2.Text soyadguncelleme = TextBox3.Text yasguncelleme = TextBox4.Text Dim sorgu As String 'sorgu = "update tablo1 set SOYAD='" & soyadguncelleme & "' where ID like '%" & idguncelleme & "%'" sorgu = "update tablo1 set AD='" & adguncelleme & "',SOYAD='" & soyadguncelleme & "', YAS='" & yasguncelleme & "' where ID like '%" & idguncelleme & "%'" 'sorgu = "update tablo1 set YAS='" & yasguncelleme & "' where AD like '%" & adguncelleme & "%' AND SOYAD like '%" & soyadguncelleme & "%' " Dim komut As OleDbCommand komut = New OleDbCommand(sorgu, baglanti) Dim adet As Integer = komut.executenonquery() MsgBox("Güncelleme Tamamlandı") baglanti.close() B)DATASET KULLANARAK VERİTABANINDAN BİLGİLERİN OKUNMASI a)sadece DataSet Kullanarak Bilgileri Gösterme ÖRNEK 1:ID, ADI, SOYADI ve YAS bilgilerini Microsoft Access te oluşturulan veri tabanındaki bilgilere göre DataSet kullanarak bilgileri listeleyen programın kodlarını yazınız.

Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OleDbCon nection Sorgu 'bağlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\vt1.mdb") 'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" OleDbD ataadap ter DataSet Dim komut As OleDbDataAdapter komut = New OleDbDataAdapter(sorgu, baglanti) Dim veritut As DataSet veritut = New DataSet komut.fill(veritut, "Tablo2") DataGridView1.DataSource = veritut.tables("tablo2") End Class Visual Basic Formu DataSet OleDbConnection sorgu Access Veritabanı ID AD SOYAD YAS DataGridView DataView OleDbA dapter b)dataset ve DataView Kullanarak Bilgileri Görüntüleme(DataBinding Nesnesi Kullanımı) Listele Butonuna Yazınız Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

OleDbCon nection 'bağlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\vt1.mdb") Sorgu 'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" OleDbD ataadap ter Dim komut As OleDbDataAdapter komut = New OleDbDataAdapter(sorgu, baglanti) DataSet DataSet Dim veritut As DataSet veritut = New DataSet komut.fill(veritut, "Tablo2") Dim verisuz As DataView verisuz = New DataView verisuz.table = veritut.tables("tablo2") DataGridView DataGridView1.DataSource = verisuz End Class **Sayfadaki nesnelerin (Textbox vs) DataSet in sütunlarına bağlanması Formun Load ına Yazınız Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OleDbCon nection Sorgu 'bağlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\vt1.mdb") 'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" OleDbD ataadap ter Dim komut As OleDbDataAdapter komut = New OleDbDataAdapter(sorgu, baglanti) DataView DataSet Dim veritut As DataSet veritut = New DataSet komut.fill(veritut, "Tablo2") Dim verisuz As DataView

verisuz = New DataView verisuz.table = veritut.tables("tablo2") Data Bindings TextBox1.DataBindings.Add("Text", veritut.tables(0), "AD") TextBox2.DataBindings.Add("Text", veritut.tables(0), "SOYAD") TextBox3.DataBindings.Add("Text", veritut.tables(0), "YAS") DataGridView1.DataSource = verisuz End Class CURRENCY MANAGER(DATASET ÜZERİNDE YAPILAN UYGULAMALAR) Burada yapılan tüm işlemler (önceki kayıt, sonraki kayıt, kayıt ekle, kayıt sil, ilk kayıt vs.) DataSet te gerçekleşmektedir.dataset le yapılan bir işlem veritabanına yansımamaktadır. Bu uygulamanın amacı yapmış olduğumuz işlemleri daha hızlı bir şekilde gerçekleştirmektir.çünkü DataSet üzerinde çalışıldığında işlemler hızlıdır. Eğer veritabanıyla doğrudan çalışsaydık işlemler daha yavaş olacaktı.birçok kişinin inin network üzerinden ortaklaşa çalıştığı bir ortamda işlemler yürütülürken veritabanı üzerinde çalışmak yavaş bile olsa uygun olacaktır. ÖRNEK:Veritabanındaki bilgiler arasında gezinti yapmamızı sağlayan kayıt ekleme,güncelleme, silme gibi işlemleri de yapan program kodlarını yazınız. SONRAKİ KAYIT BUTONU Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim cm As CurrencyManager Dim adet, sira As Integer cm = Me.BindingContext(ds.Tables(.BindingContext(ds.Tables("tablo2")) adet = ds.tables("tablo2").rows.count sira = cm.position If sira < adet - 1 Then sira = sira + 1 cm.position = sira Else : MsgBox("son kayıttasınız")

End If ÖNCEKİ KAYIT BUTONU Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim cm As CurrencyManager Dim adet, sira As Integer cm = Me.BindingContext(ds.Tables("tablo2")) adet = ds.tables("tablo2").rows.count sira = cm.position If sira > 0 Then sira = sira - 1 cm.position = sira Else : MsgBox("ilk kayıttasınız") End If SON KAYIT BUTONU Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim cm As CurrencyManager Dim adet, sira As Integer cm = Me.BindingContext(ds.Tables("tablo2")) adet = ds.tables("tablo2").rows.count sira = cm.position If sira <> adet Then sira = adet cm.position = sira End If İLK KAYIT BUTONU Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim cm As CurrencyManager Dim sira As Integer cm = Me.BindingContext(ds.Tables("tablo2")) sira = cm.position If sira <> 0 Then sira = 0 cm.position = sira End If KAYIT EKLE BUTONU Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click Dim cm As CurrencyManager cm = Me.BindingContext(ds.Tables("tablo2")) cm.addnew() KAYIT SİL BUTONU

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click Dim sira As Integer Dim adet As Integer Dim cm As CurrencyManager cm = Me.BindingContext(ds.Tables("tablo2")) adet = cm.count If adet > 0 Then sira = cm.position cm.removeat(sira) MsgBox("KAYIT SİLİNDİ") Else : MsgBox("SİLİNECEK KAYIT YOK") End If KAYIT GÜNCELLEME BUTONU Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click Dim cm As CurrencyManager cm = Me.BindingContext(ds.Tables("tablo2")) cm.endcurrentedit() MsgBox("değişiklikler güncellendi")

KAYIT FİLTRELEME İŞLEMLERİ Birçok durumda kayıtların tamamına değil de sadece belirli kriterlere uyan kayıtların listesi istenebilir. Bu gibi durumlarda filtreleme (RowFilter Methodu) işlemi gerçekleştirilir. ÖRNEK: ID, AD, SOYAD ve YAS bilgileri Microsoft Access te oluşturulan veri tabanındaki bilgilere göre soyadı dışarıdan girilip bu soyada sahip kişilerin bilgilerini filtreleyen, filtreleme yaptıktan sonra kayıtlar arasında gezinmeyi sağlayan programın kodlarını yazınız. Formun Load ına Yazınız Imports System.Data.OleDb Public Class Form1 Dim ds As DataSet Dim dv As DataView Dim cm As CurrencyManager Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'bağlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\personel.mdb") 'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" Dim elci As OleDbDataAdapter elci = New OleDbDataAdapter(sorgu, baglanti) ds = New DataSet elci.fill(ds, "Tablo2") dv = New DataView dv.table = ds.tables("tablo2") Sıralama Yapar dv.sort = "SOYAD" DataGridView1.DataSource = dv

KAYIT FİLTRELE BUTONU Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click Dim veri As String veri = TextBox2.Text dv.rowfilter = "SOYAD='" + veri + "'" SONRAKİ KAYIT BUTONU Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click Dim sonraki As CurrencyManager If (dv.rowstatefilter <> DataViewRowState.None) Then sonraki = Me.BindingContext(dv) sonraki.position = sonraki.position + 1 End If ÖNCEKİ KAYIT BUTONU Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click Dim onceki As CurrencyManager If (dv.rowstatefilter <> DataViewRowState.None) Then onceki = Me.BindingContext(dv) onceki.position = onceki.position - 1 End If Filtreleme İşlemlerinde Ve-Veya Mantığı ÖRNEK: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click Dim veri1, veri2 As String

veri1 = TextBox3.Text veri2 = TextBox4.Text If RadioButton1.Checked = True Then dv.rowfilter = "AD='" + veri1 + "' or SOYAD='" + veri2 + "'" ElseIf RadioButton2.Checked = True Then dv.rowfilter = "AD='" + veri1 + "' and SOYAD='" + veri2 + "'" End If Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click dv.rowfilter = Nothing DataView Kullanarak Sütun Toplamı Aldırma ÖRNEK:DataGridView deki kişilerin yaşlarını toplayıp Label da gösteren programın kodlarını yazınız. Formun Load ına Yazınız Imports System.Data.OleDb Public Class Form1 Dim ds As DataSet Dim dv As DataView Dim cm As CurrencyManager Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'bağlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\personel.mdb") 'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" Dim elci As OleDbDataAdapter elci = New OleDbDataAdapter(sorgu, baglanti) ds = New DataSet elci.fill(ds, "Tablo2") dv = New DataView dv.table = ds.tables("tablo2") dv.sort = "soyad" DataGridView1.DataSource = dv Dim adet, i, toplam As Integer adet = dv.count 'Kayıt Sayısını verir For i = 0 To adet - 1 toplam = toplam + (dv(i)("yas"))

Next i Label2.Text = toplam.tostring("##### yıl") End Class

Tablolar Arası İlişki Kurma vt1.mdb altında iki tablo oluşturun. 1. Tabloya Tablo1 ismini verin. 2. Tabloya Tablo2 ismini verin. MASTER-DETAİL BAĞLANTISI KURMA Tablo1 Tablonun Yapısı NO Metin AD Metin Tablo2 Tablosunun Yapısı NO Metin VIZE Sayı SOYAD Metin FINAL Sayı Tablolar arasında ilişki kuran nesne DataRelation nesnesidir. ÖRNEK: Yukarıda verilen bilgilere göre iki tablo arasındaki ilişkiyi aşağıdaki şekilde gösteren program kodlarını yazınız. Form un Load ına Yazınız. 'ANA TABLO ILE BAGLANTI KURACAK============================================ Dim baglanti As String baglanti = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=D:\vt1.mdb" 'Dim ds As DataSet ds = New DataSet() Dim sorgu1 As String sorgu1 = "SELECT * FROM Tablo1" Dim verial1 As OleDbDataAdapter verial1 = New OleDbDataAdapter(sorgu1, baglanti) verial1.fill(ds, "Tablo10")

'ALT TABLO ILE BAGLANTI KURACAK================================ Dim sorgu2 As String sorgu2 = "SELECT * FROM Tablo2" Dim verial2 As OleDbDataAdapter verial2 = New OleDbDataAdapter(sorgu2, baglanti) verial2.fill(ds, "Tablo20") 'ANA TABLO ILE ALT TABLO ARASINDAKI ILISKIYI KURUYOR ========= iliski = New DataRelation("AnaAlt", ds.tables("tablo10").columns("no"), ds.tables("tablo20").columns("no")) ds.relations.add(iliski) 'DATAVIEW VE DATAGRIDVIEW ICERISINDE DATASET IN ICERISINDEKI TABLO10 GORUNTULUYOR.======== goruntu1 = ds.tables("tablo10").defaultview DataGridView1.DataSource = goruntu1 'HAYALI BIR YENI TABLO OLUSTURUYORUZ.========================== tablo = New DataTable Dim sutun1 As DataColumn sutun1 = New DataColumn("NO") sutun1.datatype = System.Type.GetType("System.String") tablo.columns.add(sutun1) Dim sutun2 As DataColumn sutun2 = New DataColumn("VIZE") sutun2.datatype = System.Type.GetType("System.String") tablo.columns.add(sutun2) Dim sutun3 As DataColumn sutun3 = New DataColumn("FINAL") sutun3.datatype = System.Type.GetType("System.String") tablo.columns.add(sutun3) İki tablo arasındaki ilişkinin DataGridView de gösterilmesi Private Sub DataGridView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridView1.Click Dim AltTablonunAktifSatiri() As DataRow Dim satir1 As DataRow Dim satir2 As DataRow Dim goruntu2 As DataView Dim i, adet As Integer Dim yonet As CurrencyManager yonet = Me.BindingContext(goruntu1) AktifSatir = yonet.position Me.Text = AktifSatir.ToString() tablo.clear() AltTablonunAktifSatiri = ds.tables("tablo10").rows(aktifsatir).getchildrows("anaalt")

adet = AltTablonunAktifSatiri.Length - 1 For i = 0 To adet satir2 = AltTablonunAktifSatiri(i) satir1 = tablo.newrow() satir1.itemarray = satir2.itemarray tablo.rows.add(satir1) Next goruntu2 = New DataView(tablo) DataGridView2.DataSource = goruntu2

BİLGİLERİN RAPORLANMASI Veritabanı tablo bilgilerine ulaşmak ve bu bilgileri yazıcıya göndermek için projenize Crystal Reports dökümanı eklemelisiniz. Projenize bu dökümanı eklemek için aşağıdaki adımları izleyiniz. 1) Öncelikle veritabanınızı hazırlayınız. Daha sonra yeni bir proje sayfası açınız. 2) Project menüsüne tıklayarak açılan seçeneklerden Add New Item menüsüne tıklayınız. Aşağıdaki pencere açılacaktır. Bu pencereden Crystal Reports dökümanını seçip Add butonuna tıklayınız. 3)Karşınıza aşağıdaki gibi rapor seçeneklerini gösteren bir ekran görüntüsü gelecektir. Bu pencereden Using The Report Wizard seçeneğini ve Choose an Expert kısmından da Standard ı seçiyoruz.

4)Karşınıza gelen yeni pencereden ilk olarak Available Data Sources listesinden Create New Connection seçeneğinin solundaki + işaretine tıklayın. Daha sonra açılan seçeneklerden bağlanacağınız veritabanını seçiniz.

Microsoft Access le bağlantı kuracağımız için OLEDB (ADO) klasörünün solundaki + işaretine tıklayın. Aşağıdaki pencere açılacaktır.

5)Bu pencerede Microsoft Jet 4.0 OLE DB Provider seçeneğini seçerek İleri butonuna tıklayın. 6)Açılan yeni pencereden DataBase Name kısmındaki butona tıklayarak daha önce oluşturduğumuz veritabanını bulun. Veritabanını bulduktan sonra Son butonuna tıklayın.

7)Karşımıza gelen pencerede veritabanı içerisindeki tüm tablolar görünecektir. Kullanmak istediğimiz tabloyu seçip sağ ok tuşuna basarak tablonun Selected Tables kısmında gözükmesini sağlayın.

8)İleri butonuna tıkladıktan sonra tablonun alanları Fields gelecektir. Bunları görmek için + işaretine tıklayın. Hangi sütun başlıklarına ihtiyacınız varsa bunları sağ ok tuşuna basarak Fields to Display listesinde görünmesini sağlayınız. Sağ taraftaki listeye aktardığınız sütunların sayfa üzerindeki yerlerini ayarlamak için sağ üst tarafta yer alan aşağı yukarı düğmelerini kullanabilirsiniz. İleri tuşuna basarak bu pencereyi kapatın. 9) Grouping ve Record Selection sayfalarını İleri düğmesini tıklayarak geçeniz. 10)Açılan Record Style (Raporlama Stilleri) penceresinden raporunuza ait stili seçip Son düğmesine tıklayabilirsiniz.

Bu aşamadan sonra aşağıdaki şekilde uygulamanıza bir adet rpt uzantılı sayfa oluşacaktır. 11)Şablonumuz hazırdır. Bu şablonu uygulamamıza eklemeliyiz. Bunun için normal bir uygulama sayfa açalım. Project menüsünden Add Windows Form seçeneğini seçiniz. Gelen pencereden Windows Form seçeneğini seçip Add düğmesine tıklayınız.

12)Normal uygulama sayfasını göreceğiz. Bu Form2 olacaktır. Daha önceden açılan Form1 e bir buton ekleyip Form2 yi çağıracağız.form2 nin içerisinde de hazırladığımız raporlama sayfası görüntülenecektir. 13)Form2 açıkken sol tarafta Toolbox penceresinden CrystalReportViewer kontrolünü sürükleyerek formunuzun üzerine bırakın. Sayfada bu nesne gözükecektir. 13)Formunuza sürüklediğiniz CrystalReportViewer1 kontrolünü seçin. Properties penceresinden Report Source(Raporlama Kaynağını) özelliğinde bulunan Browse seçeneğini tıklayarak daha önceden kaydetmiş olduğunuz CrystalReport1.rpt dosyasını bulun. Şayet raporunuz aktif klasör içerisinde ise bu pencereden direk seçebilirsiniz. 14)Şablonumuzu görmüş olacağız.

15)Form1 e bir buton yerleştirip Form2 yi çağıracağız. Bunun için butonun içerisine aşağıdaki kodları yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frm As New Form2 frm.show() GRAFİK OLUŞTURMAK Crystal Report dökümanlarını kullanarak tablonuza ait verilerin grafiklerini bastırabilirsiniz. Bunun için önce veritabanını hazırlayınız. Daha sonra aşağıdaki adımları izleyiniz. 3) 1)Yeni bir proje sayfası açınız. Project menüsüne tıklayarak açılan seçeneklerden Add New Item menüsüne tıklayınız. Aşağıdaki pencere açılacaktır.

Bu pencereden Crystal Reports dökümanını seçip Add butonuna tıklayınız. 3)Karşınıza aşağıdaki gibi rapor seçeneklerini gösteren bir ekran görüntüsü gelecektir. Bu pencereden Using The Report Wizard seçeneğini ve Choose an Expert kısmından da Standard ı seçiyoruz.

4)Karşınıza gelen yeni pencereden ilk olarak Available Data Sources listesinden Create New Connection seçeneğinin solundaki + işaretine tıklayın. Daha sonra açılan seçeneklerden bağlanacağınız veritabanını seçiniz.

Microsoft Access le bağlantı kuracağımız için Access/Excel(DAO) klasörünün solundaki + işaretine tıklayın. Aşağıdaki pencere açılacaktır. 5)Açılan yeni pencereden DataBase Name kısmındaki butona tıklayarak daha önce oluşturduğumuz veritabanını bulun. Veritabanını bulduktan sonra Son butonuna tıklayın.

6)Karşımıza gelen pencerede veritabanı içerisindeki tüm tablolar görünecektir. Kullanmak istediğimiz tabloyu seçip sağ ok tuşuna basarak tablonun Selected Tables kısmında gözükmesini sağlayın.

7)İleri butonuna tıkladıktan sonra tablonun alanları Fields gelecektir. Bunları görmek için + işaretine tıklayın. Hangi sütun başlıklarına ihtiyacınız varsa bunları sağ ok tuşuna basarak Fields to Display listesinde görünmesini sağlayınız. İleri tuşuna basarak bu pencereyi kapatın.

8) Grouping ve Record Selection sayfalarını İleri düğmesini tıklayarak geçeniz. 9) Açılan Record Style (Raporlama Stilleri) penceresinden raporunuza ait stili seçip Son düğmesine tıklayabilirsiniz.

Bu aşamadan sonra aşağıdaki şekilde uygulamanıza bir adet rpt uzantılı sayfa oluşacaktır. Araç çubuklarında yer alan aşağıdaki nesneyi aktifleştirin.

Grafik iconu üzerine Mouse ile tıklayarak aşağıdaki pencerenin açılmasını sağlayın. Type yaprağında yer alan Chart Type listesinden verilerinize uygun bir stil seçin. Ardından Data yaprağına geçebilirsiniz.

Yukarıdaki pencerede gösterilen ayarları yaptıktan sonra Text yaprağına geçebilirsiniz.

Bu bölümde dilediğiniz alanı değiştirebilirsiniz. Yapmış olduğunuz değişiklikler grafiğiniz üzerindeki etiketlere yansıyacaktır. Tamam düğmesine tıklayarak işlemler son bulacaktır.

Ekran görüntünüz yukarıdaki şekilde olacaktır. Bu şablonu uygulamamıza eklemeliyiz. Bunun için normal bir uygulama sayfa açalım. Project menüsünden Add Windows Form seçeneğini seçiniz. Gelen pencereden Windows Form seçeneğini seçip Add düğmesine tıklayınız. 12)Normal uygulama sayfasını göreceğiz. Bu Form2 olacaktır. Daha önceden açılan Form1 e bir buton ekleyip Form2 yi çağıracağız.form2 nin içerisinde de hazırladığımız raporlama sayfası görüntülenecektir.

13)Form2 açıkken sol tarafta Toolbox penceresinden CrystalReportViewer kontrolünü sürükleyerek formunuzun üzerine bırakın. Sayfada bu nesne gözükecektir. 13)Formunuza sürüklediğiniz CrystalReportViewer1 kontrolünü seçin. Properties penceresinden Report Source(Raporlama Kaynağını) özelliğinde bulunan Browse seçeneğini tıklayarak daha önceden kaydetmiş olduğunuz CrystalReport1.rpt dosyasını bulun. Şayet raporunuz aktif klasör içerisinde ise bu pencereden direk seçebilirsiniz. 14)Şablonumuzu görmüş olacağız. 15)Form1 e bir buton yerleştirip Form2 yi çağıracağız. Bunun için butonun içerisine aşağıdaki kodları yazınız. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim yeni As New Form2 yeni.show()