22 Aralık 2008 Pazartesi

Adres Kayıt Defteri Örnek Uygulama

Veritabanını aşağıdaki şekilde düzenliyelim.





Formu düzenliyelim.



Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlClient

Public Class Form1

Dim Conn As SqlConnection
Dim CMD As SqlCommand
Dim ADPKisi As New SqlDataAdapter
Dim ADPTel As New SqlDataAdapter
Dim DS As DataSet = New DataSet
Dim BSKisi As BindingSource
Dim BSTel As BindingSource
Dim CB As SqlCommandBuilder
Dim KisiSQL As String
Dim TelSQL As String
Dim KisiIdNo As Integer
Dim TelIdNo As Integer
Dim KisiCHNG As Boolean
Dim Cevap As String
Dim Vazgec As Boolean

Private Sub idnoBul()
Dim oku As SqlDataReader

If CONN.State <> ConnectionState.Open Then CONN.Open()

CMD = New SqlCommand("SELECT ident_current('Kisiler') AS kisiID", CONN)
KisiIDNo = CMD.ExecuteScalar
If KisiIDNo = 1 Then
CMD = New SqlCommand("SELECT * From Kisiler", CONN)
oku = CMD.ExecuteReader
oku.Read()
If oku.HasRows = False Then KisiIdNo = 0
oku.Close()
End If


CMD = New SqlCommand("SELECT ident_current('Telefon') AS TelID", CONN)

TelIDNo = CMD.ExecuteScalar

If TelIDNo = 1 Then
CMD = New SqlCommand("SELECT * From Telefon", CONN)
oku = CMD.ExecuteReader
oku.Read()
If oku.HasRows = False Then TelIdNo = 0
oku.Close()
End If

CONN.Close()

End Sub
Sub ConnStrTanimla()
Dim ConnStr As New SqlConnectionStringBuilder()
ConnStr.DataSource = "Ayaydın-PC\SQLEXPRESS"
ConnStr.AttachDBFilename = "|DataDirectory|AdresDefteri.mdf"
ConnStr.IntegratedSecurity = True 'Windows Kimlik Bilgileri
Conn = New SqlConnection(ConnStr.ConnectionString)
End Sub

Private Sub YeniFormHazirla()
DtpTarih.Value = Today
txtTCNo.Text = ""
txtAdi.Text = ""
txtSoyadi.Text = ""
txtAdres.Text = ""
txtSemt.Text = ""
txtSehir.Text = ""
BtnYeni.Text = "VAZGEÇ"
BtnSil.Enabled = False

KisiCHNG = False
End Sub

Private Sub KayitKontrol()
If KisiCHNG = True Then
Cevap = MsgBox("Değişiklikleriniz Kayıt Edilsin Mi ? ", MsgBoxStyle.YesNoCancel)
If Cevap = vbCancel Then
Vazgec = True
ElseIf Cevap = vbNo Then
Vazgec = False
Exit Sub
ElseIf Cevap = vbYes Then
Vazgec = False
KisiKaydet()
End If
End If
End Sub

Private Sub KisiKaydet()
VeriKontrol()
If Vazgec = True Then Exit Sub
If BtnYeni.Text = "VAZGEÇ" Then BSKisi.AddNew()
VeriYaz()
VeriTabaniGuncelle()
MsgBox("Kayıt Edildi")
End Sub

Private Sub VeriKontrol()
If Len(txtTCNo.Text) <> 10 Then
MsgBox("Tc Kimlik Numarasını kontrol ediniz.")
Vazgec = True
Exit Sub
ElseIf txtAdi.Text = "" Then
MsgBox("Kisi Adı Girmelisiniz.")
Vazgec = True
Exit Sub
ElseIf txtSoyadi.Text = "" Then
MsgBox("Kisi Soyadı Girmelisiniz.")
Vazgec = True
Exit Sub
Else
Vazgec = False
End If
End Sub

Private Sub VeriYaz()
BSKisi.Current("TcNo") = Val(txtTCNo.Text)
BSKisi.Current("Adi") = txtAdi.Text
BSKisi.Current("Soyadi") = txtSoyadi.Text
BSKisi.Current("Adres") = txtAdres.Text
BSKisi.Current("Semt") = txtSemt.Text
BSKisi.Current("Sehir") = txtSehir.Text
BSKisi.Current("GirisTarihi") = DtpTarih.Value
BSKisi.EndEdit()
End Sub

Private Sub VeriOku()
txtTCNo.Text = BSKisi.Current("TcNo")
txtAdi.Text = BSKisi.Current("Adi")
txtSoyadi.Text = BSKisi.Current("Soyadi")
txtAdres.Text = BSKisi.Current("Adres")
txtSemt.Text = BSKisi.Current("Semt")
txtSehir.Text = BSKisi.Current("Sehir")
DtpTarih.Value = BSKisi.Current("GirisTarihi")

KisiCHNG = False
BtnYeni.Text = "YENİ"
BtnSil.Enabled = True
End Sub

Private Sub VeriTabaniGuncelle()

CB = New SqlCommandBuilder
CB.DataAdapter = ADPKisi

ADPKisi.Update(DS, "Kisiler")

BSTel.EndEdit()

CB = New SqlCommandBuilder
CB.DataAdapter = ADPTel
ADPTel.Update(DS, "telefon")
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
KayitKontrol()
If Vazgec = True Then e.Cancel = True
End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ConnStrTanimla()
idnoBul()
If Conn.State <> ConnectionState.Open Then Conn.Open()

ADPKisi.SelectCommand = New SqlCommand("Select * From Kisiler", Conn)
ADPTel.SelectCommand = New SqlCommand("Select * From Telefon", Conn)

ADPKisi.Fill(DS, "Kisiler")
ADPTel.Fill(DS, "Telefon")

Conn.Close()


DS.Tables("Kisiler").Columns("KisiID").AutoIncrement = True
DS.Tables("Telefon").Columns("TelID").AutoIncrement = True

DS.Tables("Kisiler").Columns("KisiID").AutoIncrementSeed = KisiIdNo + 1
DS.Tables("Telefon").Columns("TelID").AutoIncrementSeed = TelIdNo + 1

BSKisi = New BindingSource(DS, "Kisiler")
BSTel = New BindingSource(DS, "Telefon")

DataGridView1.DataSource = BSKisi
DataGridView1.Refresh()

DataGridView2.DataSource = BSTel
DataGridView2.Refresh()

Conn.Close()

YeniFormHazirla()

For i As Byte = 3 To DataGridView1.ColumnCount - 1
DataGridView1.Columns(i).Visible = False
Next

End Sub


Private Sub BtnYeni_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnYeni.Click
If BtnYeni.Text = "VAZGEÇ" Then
DS.RejectChanges()
If BSKisi.Count = 0 Then
YeniFormHazirla()
Else
BSKisi.MoveLast()
VeriOku()
End If
ElseIf BtnYeni.Text = "YENİ" Then
KayitKontrol()
If Vazgec = True Then Exit Sub
YeniFormHazirla()
End If
End Sub


Private Sub BtnKaydet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnKaydet.Click
VeriKontrol()
If Vazgec = True Then Exit Sub
If BtnYeni.Text = "VAZGEÇ" Then BSKisi.AddNew()
VeriYaz()
VeriTabaniGuncelle()
MsgBox("Kayıt Edildi")

BtnSil.Enabled = True
BtnYeni.Text = "YENİ"
KisiCHNG = False
End Sub


Private Sub BtnSil_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSil.Click
Cevap = MsgBox(txtAdi.Text & " " & txtSoyadi.Text & " Adres Defterinden Silinecektir. Onaylıyormusunuz ? ", MsgBoxStyle.YesNo)
If Cevap = vbNo Then Exit Sub

For i As Integer = 0 To BSTel.Count - 1
BSTel.RemoveAt(i)
Next

BSKisi.RemoveAt(BSKisi.Position)

VeriTabaniGuncelle()
MsgBox("Kayıt Silindi.")

BSKisi.MoveNext()
VeriOku()

End Sub

Private Sub BtnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFirst.Click
KayitKontrol()
If Vazgec = True Then Exit Sub
BSKisi.MoveFirst()
VeriOku()
End Sub

Private Sub BtnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPrevious.Click
KayitKontrol()
If Vazgec = True Then Exit Sub
BSKisi.MovePrevious()
VeriOku()
End Sub

Private Sub BtnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNext.Click
KayitKontrol()
If Vazgec = True Then Exit Sub
BSKisi.MoveNext()
VeriOku()
End Sub

Private Sub BtnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLast.Click
KayitKontrol()
If Vazgec = True Then Exit Sub
BSKisi.MoveLast()
VeriOku()
End Sub

Private Sub BtnKapat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnKapat.Click
End
End Sub

Private Sub DataGridView2_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView2.CellBeginEdit
BSTel.Current("KisiID") = KisiIdNo + 1
End Sub

End Class

25 Ağustos 2008 Pazartesi

ComboBox Kontrolünün AutoComplete Özelliği

Bu Makalemizde ComboBox un AutoComploteMode Özelliğini kullanarak ComboBox kontrol kutusuna veri tabanımızdaki bilgileri otomatik olarak nasıl yazdıracağımızı irdeliyeceğiz.

AutoCompleteMode - Suggest ComboBox daki bilgieri harf katarına göre sıralar ve liste halinde Gösterir.

AutoCompleteMode - Append ComboBox daki bilgileri harf katarına göre ComboBox u doldurur.

AutoCompleteMode - SuggestAppent Her iki özelliği birden kullanır.

ÖRNEK :

Formumuza eklediğimiz ComboBox Kontrol Kutusunun...

1 . DataSource özelliğini ayarlayın.

2. AutoCompleteMode - özelliğini SuggestAppent olarak ayarlayın

3. AutoComploteSource - özelliğini ListItems olarak ayarlayın

Çalışmalarınızda başarılar diler Saygılarımı sunarım..

Etiketler:

SqlConnectionString Parametreleri

ConnectionString Veri kaynağına bağlantı sağlayabilmesi için gerekli olan tüm parametreleri tanımlar. Bu parametreler şunlardır:

PROVİDER --- Sadece OLE DB veri sağlayıcısı için kullanılır. Kullanılacak Sağlayıcıyı belirler.

DATASOURCE - SERVER --- Bağlanacak Sunucunun adını belirler. serverin adı yazılmalıdır.

INITIAL CATOLOG / DATABASE --- Bağlanacak veritabanını belirler. Veritabanının dosyayolu ve adı yazlımalıdır.

INTEGRATED - TRUSTED_CONNECTİON --- Güvenli bir bağlantı kullanılıp kullanılmayacağını belirler. Varsayılan değeri FALSE dir. Bu değerin TRUE yada SSPI olması aynı anlama gelir. SSPI (Secuirty Service Provider Interface) veri kaynağına güvenli olarak bağlanacağını belirler.

USER ID --- Kullanıcı Giriş hesabı adı belirler.

USER PASSWORD - PWD --- Kullanıcı giriş hesabı şifresi belirler.

PERSIST SECURITY INFO --- Hassas güvenlik bilgilerinin bağlantı ifadesinin bir parçası olarak geriye gönderilip gönderilmeyeceğini belirler.

CONNECT TIMEOUT - CONNECTION TIMEOUT --- Bağlantının sağlanması için sunucunun hata üretmeden bekleyeceği süreyi belirler. Varsayılan değeri 15 saniyedir.

Bir ConnectionString Nasıl Tanımlanır ?

ConnectionString Özelliği veri kaynağı için kullanılan bağlantının kapalı olması durumunda kullanılır.

ConnectionString içinde tanımlanan her bir ifade noktalı virgül ile (;) ayrılmak zorundadır.

Örnek:

"DataSource= SunucuAdı;Integrated Security = SSPI; Initial Catalog= Veritabanının Adı"

Not: Bu bilgiler Zeydin PALA nın Visual Basic.NET kitabından alıntıdır.

Etiketler:

Kayıtlar arasında gezinme silme ekleme ve güncelleme yapmak için kullanabileceğimiz nesnelerden birisidir.

Öncelikle veritabanımızın bağlantılarını yapıyoruz…


Dim DS as Dataset
Dim Adp AS SqlDataAdapter
Dim BindingSource1 as BindingSource
Dim SqlConn As SqlConnection = New SqlConnection("Data Source=SERVERADI;AttachDbFilename=DataDirectory\VERİTABANININADI;Integrated Security=True;Connect Timeout=30;User Instance=True")

Try
ADP = New SqlDataAdapter("SELECT * FROM TabloAdı", SqlConn)
SqlConn.Open()
ADP.Fill(DS, "TabloAdı")

‘BindingSource nesnesini datasete bağlıyoruz..
BindingSource1 = New BindingSource(DS, "TabloAdı")
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
Finally
SqlConn.Close()
End Try


‘BindingSource de bulunan bilgileri verileri textbox kutularına aktarmak için CURRENT Metodunu kullanıyoruz..
COUNT Metodu kayıt sayısını verir. Eğer 0 (Sıfır ) ise Kayıt Yoktur..

if BindingSource1.Count <> 0 then
‘Veri Tabanında kayıt varsa…
TextBox1.Text = BindingSource1.Current(“AlanAdı1”)
TextBox2.Text = BindingSource1.Current(“AlanAdı2”)
TextBox3.Text = BindingSource1.Current(“AlanAdı3”)

End if

‘Kayıtlar arasında gezinmek için…
BindingSource1.MoveNext ‘Sonraki Kayıt
BindingSource1.MoveLast ‘Son Kayıt
BindingSource1.MoveFirst ‘İlk Kayıt
BindingSource1.MovePrevious ’Önceki Kayıt

‘Yeni Kayıt Eklemek için ADDNEW Metodunu kullanıyoruz..
BindingSource1.AddNew

‘Kayıt Silmek için RemoveAt(indis) Metodunu kullanıyoruz..
BindingSource1.RemoveAt(SilinecekKaydınNumarası)

‘filitreleme yapmak için FILTER Metodunu kullanıyoruz..
BindingSource1.Filter = "Alan1 = '" & FilitrelenecekBilgi & "'"

‘Harf katarına göre filitreleme yapmak istersek LIKE operatöünü kullanabiliriz..
BindingSource1.Filter = "Alan1 LIKE '" & FilitrelenecekBilgi & "%'"

‘Arama Yapmak için FIND Metodunu kullanıyoruz..
‘Aramayı Filitrelenen kayıtlarda yapar. Eğer tüm kayıtlarda arama yapmasını istiyorsak ve daha önceden filitreme yaptıysak ilk olarak filitrelemeyi iptal etmeliyiz..
BindingSource1.RemoveFilter

‘POSITION Metodu kaydın numarasını verir. bulunan kaydın aktif kayıt olması için kullanıyoruz..
BindingSource1.Position=Bindingsource1.Find(“AranılacakAlanAdı”,AranılacakBilgi)

‘Position Metodu -1 (EksiBir) değerini alırsa aranılan kayıt yoktur.

if BindingSource1.Position = - 1 then
Msgbox(“Aradığınız Kayıt Yoktur”)
Else
Msgbox (BindingSource1.Current(“Alan1”) & “ ” & BindingSource1.Current(“Alan1”) & “ ” & BindingSource1.Current(“Alan1”))
End if


‘Kayıt Güncellemek için

BindingSource1.Current(“AlanAdı1”) = TextBox1.Text
BindingSource1.Current(“AlanAdı2”) = TextBox2.Text
BindingSource1.Current(“AlanAdı3”) = TextBox3.Text


‘Güncelleme Tamamlandıktan sonra ENDEDIT Metodunu kullanıyoruz..
BindingSource.EndEdit

‘Veri Tabanını Güncellemek için..
Adp.Update(DS,”TabloAdı”)


İYİ ÇALIŞMALAR

Etiketler: , , , , , , , ,

Collection Nesnesi

Collection nesnesi Visual Basic dizilerinin nesne yönelimli bir uygulamasıdır. Bununla beraber nesnel olmayan verileri de saklama yeteneğine sahiptir. For…Each…Next yapısı ile nesnenin tüm elemanlarına ulaşılabilir.
Koleksiyona herhangi bir anda ve herhangi bir sırada yeni eleman eklemek mümkündür. Elemanların indisleri otomatik olarak VB tarafından yapılmaktadır. Koleksiyon elemanlarına kendilerine verilen anahtar kelimeler ile ulaşılır.
Collection nesnesi Collection.Add, Collection.Count, Collection.Item, Collection.Remove olmak üzere dört metodu destekler.

Aşağıdaki biçimde kullanılır.

Dim NesneninDeğişkenAdi As New Collection

Örnek:

Dim Urunler As New Collection
Yada;
Dim Urunlar As Collection
Urunler=New Collection


Collection.Add :
Collection Nesnesine yeni bir eleman ekler.
NesneninDeğişkenAdi.Add(ElemanAdi,[,Anahtar,Once,Sonra])

ElemanAdi Kolleksiyone eklenecek elemanın adıdır.
Once Kullanması zorunlu değildir. Listedeki hangi elemandan önce yer alacağını belirtir.
Sonra Kullanması zorunlu değildir. Listedeki hangi elemandan Sonra yer alacağını belirtir.

Örnek :
Dim Urunlar As New Collection
Urunler.Add(“Bilgisayar”)
Urunler.Add(“Telefon”)
Urunler.Add(“Ev Elektironiği”)


İstersek koleksiyondaki elemanlara benzersiz birer tane anahtar kelimede verebiliriz.

Dim Urunlar As New Collection
Urunler.Add(“Bilgisayar”,”pc”)
Urunler.Add(“Telefon”,tel”)
Urunler.Add(“Ev Elektironiği”,”elk”)


Araya Eleman Ekleme :
Aşağıda verilen kullanımda üçüncü satırda işleme giren eleman kollection içinde ikinci sırada yer alacaktır.

Dim Urunlar As New Collection
Urunler.Add(“Bilgisayar”,”pc”)
Urunler.Add(“Telefon”,tel”)
Urunler.Add(“Ev Elektironiği”,”elk”,”tel”)


Koleksiyonun tüm elemanları For…Each…Next döngüsü ile debug penceresine yazdıralım…

For Each n In Urunler
Debug.WriteLine(n)
Next


Eğer eklenecek eleman için önce ve sonra parametreleri kullanılmaza yeni eleman koleksiyonun en sonunda yer alacaktır.

Eğer eklenen elemana anahtar kelime verilmez ise o elemana anahtar kelime ile ulaşılamaz.

Collection.Remove :

Koleksiyon içinde indisi veya anahtar kelimesi verilen elemanı siler.
NesneninDeğişkenAdi.Remove(indis)
NesneninDeğişkenAdi.Remove(anahtar)


Örnek:
Urunler.Remove(1)
Urunler.Remove(“tel”)


Collection.Count :
Koleksiyonun eleman sayısını bulur. Sayı 1 (Bir) den başlar.
MsgBox(urunler.Count)

Collection.Item :
Koleksiyon içinde indisi verilen elemanı bulur.
NesneninDeğişkenAdı.Item(indis)

MsgBox(Urunler.Item(1))
MsgBox(Urunler.Item(2))


Koleksiyon içinde arama yapar.
NesneninDeğişkenAdı.Contains("AranacakIndis")

İyi Çalışmalar.

Etiketler:

DataGridView Satırlarını Renklendirme

DataGridView'in RowPrePaint Eventine aşağıdaki kodları yazalım...

Private

Sub DataGridView1_RowPrePaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPrePaintEventArgs) Handles

DataGridView1.RowPrePaint

Dim satir As DataGridViewRow = Me.DataGridView1.Rows(e.RowIndex)

Dim sayi As Integer

sayi = Val(e.RowIndex) Mod 2

If sayi = 0 Then

satir.DefaultCellStyle.BackColor = Color.Beige

Else

satir.DefaultCellStyle.BackColor = Color.Azure

End If

End Sub

Etiketler: , , ,