Visualbasic ile Access Arasında Baglantı Oluşturma
Visualbasic ile Access arasında 3 türlü baglantı oluşturabilinir. Bunlar;
Veya Tools Üzerinde CTRL+T tuşlayarak Component penceresi açılır.
Ve Çıkan listeden Microsoft ADO Data Control 6.0 Nesnesi seçilir.
Nesneyi Formumuza yerleştirdikten sonra Adodca sag tuşlanır ve ADODC Propertiesten Baglantı Use Connection
Radyo butonu secili haldeyken Build butonuna basarak Baglantımızı nasıl yapacagımız seçeriz.
Biz bu örnekte Microsoft Jet 4.0 OLE DB Provideri seçiyoruz.Ve Next Tuşlayarak Access Dosyamız nerede ise
Select or enter a Database name : adlı sahada dügmeye basarak Acces dosyamızı gösteriyoruz. Test Connection dügmesine bastıgımızda baglantı saglandı demelidir. OK dügmesine basarak ACCESS dosyamızı secmiş olduk.Şimdi basitce RecordSource Sekmesinden Command Source bölümünde
Table adlı alanı seciyoruz ve bir alt satırda Table or Stored Procedure Name hangi tablo ile calışacaksa o tabloyu
seciyoruz.
Örnek : Seçtigimiz Access Dosyası Adı Veritabanı.mdb seçtigimiz Tablo adı ise Kayitlar adlı tablodur.
Şimdi Bu kayıtlarımızı biz MSHFLEXGridde gösterelim.
Yine Component Toolsa Gelerek CTRL+T yapalım ve Listeden Microsoft Hierarchical FlexGrid 6.0 adlı componenti
Ekliyoruz.Ve Sonra Ekrana bu flexi yerleştiriyoruz.
Flexin F4 Properties Özelliklerinde Datasource bölümünde ADODC nesnesini gösteriyoruz.
Çalıştır dedigimiz an Ooo süper ekrana geldi tüm kayıtlar…
Yo Hayır kontrol benim elimin altında olsun ben select yöntemi kullanarak yapmak istiyorum derseniz.
Adodc1 Propertiesinde Tablo olarak sectigimiz Recordsource bolumunu AdCmdUNKOWN olarak
bıraktıktan sonra
Adodc1.RecordSource = "select * from kayitlar"
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
Örnegin belirli bir tarih aralıgı verip Flexte gösterelim
Adodc1.RecordSource = "select * from kayitlar where Tarih >='" & Trim(Text1.Text) & "'" and Tarih<='" & Trim(Text2.Text) & "'""
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
Kayıt Ekleme
Yukarıda anlattıklarımla Kayıtlarımıza ulaşmak icin 2 türlü yöntem secebiliyoruz,
Eger baglantımızı kendimiz yöneterek Adodc1.RecordSource = "select * from kayitlar" ile yaparsak
Kayıt ekleme kodları aşagıdaki gibi olur
Adodc1.Recordset.Addnew
Adodc1.Recordset!Adi=Text1.text
Adodc1.Recordset!Soyadi=Text2.text
Adodc1.Recordset!Yasi=Text3.text
Adodc1.Recordset:Update
Buraya kadar kayıtlarımızı iceriye kaydettigimizi belirtiyoruz,
Hem kaydetsin hemde flex üzerinde hızlıca gösterelim derseniz
Adodc1.Recordset.Addnew
Adodc1.Recordset!Adi=Text1.text
Adodc1.Recordset!Soyadi=Text2.text
Adodc1.Recordset!Yasi=Text3.text
Adodc1.Recordset:Update
‘Bu Satırlarıda update cumlesinden sonar koydugumuzda otomatikmen kayıtlarımızı görecegiz.
Adodc1.RecordSource = "select * from kayitlar “
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
Kayıtları Seçerek Textlere Aktarmak
Dim SQL As String
If Trim(MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1)) <> "" Then
Adodc1.RecordSource " SELECT * from Kayitlar Where ID = " & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 4) ""
Text1.Text = adodc1.recordset!adi
Text2.Text = adodc1.recordset!soyadi
Text3.text=adodc1.recordset!yasi
Else
MsgBox "Başka Kayıt Bulunamadı", vbCritical, "Technology"
End If
Öncelikle şunu belirteyim arkadaşlar.Veritabanımızdaki Tablolarda herne olursa olsun mutlaka ama mutlaka her kaydın bir ID si olmalıdır,öylede yapın derim.Cok işinize yarayacaktır ID koymak.
Örnegin yukarıdaki tabloda Flex üzerinde isime gore degilde ID gore arama gerceklestirdim.E cunku aynı isimden birden fazla olabilir dimi ? E ama ID ise 1 tanedir. Yukarıdaki Kodu anlatmaya gelirsekte
Where Cümlesinde ID yi arıyorum,evet nerde arıyorum Flexin 4.Kolonunda arıyorum. Ben clickledigim an o ID yi tespit ediyor ve ekrana sadece o ID ye ait bilgileri textlere yazmaktadır.
Update Etme İşlemi
Kayıtlarımızı Ekrana taşıma işlemini bir önceki makaleden hatırlayalım
Kayıtları Seçerek Textlere Aktarmak
Dim SQL As String
If Trim(MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1)) <> "" Then
Adodc1.RecordSource " SELECT * from Kayitlar Where ID = " & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 4) ""
Text1.Text = adodc1.recordset!adi
Text2.Text = adodc1.recordset!soyadi
Text3.text=adodc1.recordset!yasi
Else
MsgBox "Başka Kayıt Bulunamadı", vbCritical, "Technology"
End If
Şimdi ise bu kayıtları Update etme işlemini yapalım.
Adodc1.RecordSource " SELECT * from Kayitlar"
adodc1.recordset!adi = Text1.Text
adodc1.recordset!soyadi = Text2.Text
adodc1.recordset!yasi= Text3.Text
adodc1.update
MsgBox " Düzeltildi", vbInformation
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
Silme İşlemi
On Error Resume Next
If Trim(Mshflexgrid1.TextMatrix(Mshflexgrid1.Row, 1)) <> "" Then
If MsgBox("Bu Kaydı Silmek İstiyormusunuz ? Tekrar Geri Dönüşüm Olmayacaktır !", 292, "Technology") = vbYes Then
Adodc1.RecordSource " delete * from Kayitlar Where ID = " & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 4) ""
MsgBox "Kayıt Silinmiştir", vbCritical
End If
End If
Burada yapılan işlem Flexgrid üzerinde bilgiyi sectik..Bilgiyi sectik ama Neye göre sectik ID sine gore sectik.. ve Sectigimiz ID deki kaydı iptal etmesini istedik.
Eger burada belirli bir yaş aralıgındakileri silmek isteseydik oda şu şekilde olacaktı.
On Error Resume Next
If MsgBox("Bu Kaydı Silmek İstiyormusunuz ? Tekrar Geri Dönüşüm Olmayacaktır !", 292, "Technology") = vbYes Then
Adodc1.RecordSource " delete * from Kayitlar Where yas= '" & Text4.Text & "'"
MsgBox "Kayıt Silinmiştir", vbCritical
End If
Burada yaptıgımız Text4 alanına hangi yaşı yazdıysak kayıtlarda o yaşa uygun kac kişi varsa onlari siler.
Eger belirli bir aralıktaki yaşları sileceksek ?
On Error Resume Next
If MsgBox("Bu Kaydı Silmek İstiyormusunuz ? Tekrar Geri Dönüşüm Olmayacaktır !", 292, "Technology") = vbYes Then
Adodc1.RecordSource " delete * from Kayitlar Where yas=> '" & Text4.Text & " and yas<= '" & Text5.Text & "'"
MsgBox "Kayıt Silinmiştir", vbCritical
End If
4 ve 5. textlere hangi yaşları yazdı isek o yaşları silecektir işlemimiz.
Alıntıdır.
Selametle
Visualbasic ile Access arasında 3 türlü baglantı oluşturabilinir. Bunlar;
[*]ADO ADODC yöntemi ile
[*]ODBC yöntemi ile
[*]ADODB yöntemi ile
[*]Adodc ile access arasında baglantı kurmak ;
Veya Tools Üzerinde CTRL+T tuşlayarak Component penceresi açılır.
Ve Çıkan listeden Microsoft ADO Data Control 6.0 Nesnesi seçilir.
Nesneyi Formumuza yerleştirdikten sonra Adodca sag tuşlanır ve ADODC Propertiesten Baglantı Use Connection
Radyo butonu secili haldeyken Build butonuna basarak Baglantımızı nasıl yapacagımız seçeriz.
Biz bu örnekte Microsoft Jet 4.0 OLE DB Provideri seçiyoruz.Ve Next Tuşlayarak Access Dosyamız nerede ise
Select or enter a Database name : adlı sahada dügmeye basarak Acces dosyamızı gösteriyoruz. Test Connection dügmesine bastıgımızda baglantı saglandı demelidir. OK dügmesine basarak ACCESS dosyamızı secmiş olduk.Şimdi basitce RecordSource Sekmesinden Command Source bölümünde
Table adlı alanı seciyoruz ve bir alt satırda Table or Stored Procedure Name hangi tablo ile calışacaksa o tabloyu
seciyoruz.
Örnek : Seçtigimiz Access Dosyası Adı Veritabanı.mdb seçtigimiz Tablo adı ise Kayitlar adlı tablodur.
Şimdi Bu kayıtlarımızı biz MSHFLEXGridde gösterelim.
Yine Component Toolsa Gelerek CTRL+T yapalım ve Listeden Microsoft Hierarchical FlexGrid 6.0 adlı componenti
Ekliyoruz.Ve Sonra Ekrana bu flexi yerleştiriyoruz.
Flexin F4 Properties Özelliklerinde Datasource bölümünde ADODC nesnesini gösteriyoruz.
Çalıştır dedigimiz an Ooo süper ekrana geldi tüm kayıtlar…
Yo Hayır kontrol benim elimin altında olsun ben select yöntemi kullanarak yapmak istiyorum derseniz.
Adodc1 Propertiesinde Tablo olarak sectigimiz Recordsource bolumunu AdCmdUNKOWN olarak
bıraktıktan sonra
Adodc1.RecordSource = "select * from kayitlar"
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
Örnegin belirli bir tarih aralıgı verip Flexte gösterelim
Adodc1.RecordSource = "select * from kayitlar where Tarih >='" & Trim(Text1.Text) & "'" and Tarih<='" & Trim(Text2.Text) & "'""
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
Kayıt Ekleme
Yukarıda anlattıklarımla Kayıtlarımıza ulaşmak icin 2 türlü yöntem secebiliyoruz,
Eger baglantımızı kendimiz yöneterek Adodc1.RecordSource = "select * from kayitlar" ile yaparsak
Kayıt ekleme kodları aşagıdaki gibi olur
Adodc1.Recordset.Addnew
Adodc1.Recordset!Adi=Text1.text
Adodc1.Recordset!Soyadi=Text2.text
Adodc1.Recordset!Yasi=Text3.text
Adodc1.Recordset:Update
Buraya kadar kayıtlarımızı iceriye kaydettigimizi belirtiyoruz,
Hem kaydetsin hemde flex üzerinde hızlıca gösterelim derseniz
Adodc1.Recordset.Addnew
Adodc1.Recordset!Adi=Text1.text
Adodc1.Recordset!Soyadi=Text2.text
Adodc1.Recordset!Yasi=Text3.text
Adodc1.Recordset:Update
‘Bu Satırlarıda update cumlesinden sonar koydugumuzda otomatikmen kayıtlarımızı görecegiz.
Adodc1.RecordSource = "select * from kayitlar “
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
Kayıtları Seçerek Textlere Aktarmak
Dim SQL As String
If Trim(MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1)) <> "" Then
Adodc1.RecordSource " SELECT * from Kayitlar Where ID = " & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 4) ""
Text1.Text = adodc1.recordset!adi
Text2.Text = adodc1.recordset!soyadi
Text3.text=adodc1.recordset!yasi
Else
MsgBox "Başka Kayıt Bulunamadı", vbCritical, "Technology"
End If
Öncelikle şunu belirteyim arkadaşlar.Veritabanımızdaki Tablolarda herne olursa olsun mutlaka ama mutlaka her kaydın bir ID si olmalıdır,öylede yapın derim.Cok işinize yarayacaktır ID koymak.
Örnegin yukarıdaki tabloda Flex üzerinde isime gore degilde ID gore arama gerceklestirdim.E cunku aynı isimden birden fazla olabilir dimi ? E ama ID ise 1 tanedir. Yukarıdaki Kodu anlatmaya gelirsekte
Where Cümlesinde ID yi arıyorum,evet nerde arıyorum Flexin 4.Kolonunda arıyorum. Ben clickledigim an o ID yi tespit ediyor ve ekrana sadece o ID ye ait bilgileri textlere yazmaktadır.
Update Etme İşlemi
Kayıtlarımızı Ekrana taşıma işlemini bir önceki makaleden hatırlayalım
Kayıtları Seçerek Textlere Aktarmak
Dim SQL As String
If Trim(MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1)) <> "" Then
Adodc1.RecordSource " SELECT * from Kayitlar Where ID = " & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 4) ""
Text1.Text = adodc1.recordset!adi
Text2.Text = adodc1.recordset!soyadi
Text3.text=adodc1.recordset!yasi
Else
MsgBox "Başka Kayıt Bulunamadı", vbCritical, "Technology"
End If
Şimdi ise bu kayıtları Update etme işlemini yapalım.
Adodc1.RecordSource " SELECT * from Kayitlar"
adodc1.recordset!adi = Text1.Text
adodc1.recordset!soyadi = Text2.Text
adodc1.recordset!yasi= Text3.Text
adodc1.update
MsgBox " Düzeltildi", vbInformation
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
Silme İşlemi
On Error Resume Next
If Trim(Mshflexgrid1.TextMatrix(Mshflexgrid1.Row, 1)) <> "" Then
If MsgBox("Bu Kaydı Silmek İstiyormusunuz ? Tekrar Geri Dönüşüm Olmayacaktır !", 292, "Technology") = vbYes Then
Adodc1.RecordSource " delete * from Kayitlar Where ID = " & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 4) ""
MsgBox "Kayıt Silinmiştir", vbCritical
End If
End If
Burada yapılan işlem Flexgrid üzerinde bilgiyi sectik..Bilgiyi sectik ama Neye göre sectik ID sine gore sectik.. ve Sectigimiz ID deki kaydı iptal etmesini istedik.
Eger burada belirli bir yaş aralıgındakileri silmek isteseydik oda şu şekilde olacaktı.
On Error Resume Next
If MsgBox("Bu Kaydı Silmek İstiyormusunuz ? Tekrar Geri Dönüşüm Olmayacaktır !", 292, "Technology") = vbYes Then
Adodc1.RecordSource " delete * from Kayitlar Where yas= '" & Text4.Text & "'"
MsgBox "Kayıt Silinmiştir", vbCritical
End If
Burada yaptıgımız Text4 alanına hangi yaşı yazdıysak kayıtlarda o yaşa uygun kac kişi varsa onlari siler.
Eger belirli bir aralıktaki yaşları sileceksek ?
On Error Resume Next
If MsgBox("Bu Kaydı Silmek İstiyormusunuz ? Tekrar Geri Dönüşüm Olmayacaktır !", 292, "Technology") = vbYes Then
Adodc1.RecordSource " delete * from Kayitlar Where yas=> '" & Text4.Text & " and yas<= '" & Text5.Text & "'"
MsgBox "Kayıt Silinmiştir", vbCritical
End If
4 ve 5. textlere hangi yaşları yazdı isek o yaşları silecektir işlemimiz.
Alıntıdır.
Selametle