VISUAL BASIC TE VERĠ TABANI ĠġLEMLERĠ Veri tabanı ne olursa olsun mutlaka bir bağlantı(connection) nesnesi olması gerekir. Microsoft ürünlerinde veri tabanına bağlantı için ADO (ActiveX Data Objects= X Microsoft ürünlerinin çalışması için bir simge, çalışır Veri Nesnesi) nesnesi kullanılır. Bunun için mutlaka form üzerine nesnenin eklenmesi gerekir. ODBC veri kaynağı ile veri tabanına eriģmek ODBC (Open Database Connectivity=Açık Veri tabanına bağlanabilme) Kullanarak ADO nesnesi ile connection sağlamak: 1- Control panel (Denerim Masasından) Administrator Tool (Yönetimsel Araçlar)-Veri Kaynakları ODBC seçilir. 2- Gelen ileti kutusundan Kullanıcı DSN=Database System Name= Sistem Veri Kaynağı Adı sekmesinden ekle butonundan veri kaynağı seçilir (Örnek: Microsoft Access Driver (*.mdb) seçildiğinde Access veri tabanı kaynağı oluşturulur) 3- Gelen ikinci ileti kutusunda Veri kaynağı adı bölümüne bir ad verilir, veri tabanı bölümünde ise kullanılacak veri tabanı seçilir. Form üzerine ADO nesnesinin eklenmesi: 1- Tool Box üzerindeyken Mouse sağ butondan component seçeneği seçilir 2- Gelen ileti kutusundan Microsoft ADO Data Control 6.0 nesnesi seçilir. 3- Nesne sürüklenerek formun üzerine alınır. ODBC de tanımlanan Veri kaynağının Visual Basic formu üzerine alınan ADODC nesnesiyle iliģkilendirilmesi: 1- ADODC nesnesi üzerinde Mouse sağ butona basılır, gelen menuden ADODC Properties seçilir. 2- Gelen ileti kutusundan General sekmesi ve oradaki bölümlerden de Use ODBC Data Source Name işaretlenir 3- ODBC de tanımlanan data kaynağı listeden bulunup seçilir ve uygula butonu ile onaylanır. 4- RecordSource sekmesinden -2 adcmdtable seçilir. 5- Bu kısmın hemen altına ilgili veri tabanındaki tabloların listesi gelir, bu listeden form içinde kullanılacak tablo seçilip uygulanır. 1
Bir visual Basic projesini kaydederken dikkat edilmesi gereken konular: 1- Kayıt yerini çok iyi belirlemek gerekir 2- Formları kaydederken frm ile başlamak gerekir. (örnek: frmmdl) 3- Projeyi kaydederken prj ile başlamak gerekir (örnek: prjmdl) 4- MDI formu kaydederken frmmdi olarak başlamak gerekir. (örnek: frmmdimdl) 5- Modül kullanmışsanız mdl ile başlamak gerekir. (örnek: mdlilk) Genel Örnek: 1- Dizin adı: d:\seminer\vb 2- Form1 adı : frmmdl 3- MDI form adı : frmmdimdl 4- Form2 adı :frmmdl2 5- Proje adı : prjmdl 6- Modül adı : mdlilk Öğr. Gör. Namık ĠÇELĠ Projenin istenilen form'la başlatılması Bir projede birden fazla form olabilir. Proje ilk başladığında hangi formla başlatılacağı programcı tarafından belirlenir. Şöyleki; 1- Project bölümünden "Project" üzerinde Mouse sağ buton menulerinden "Project properties" seçilir 2- Gelen ileti kutusunda "Startup object" seçeneği açılır 3- İstenilen form seçilerek uygula tıklanır. A- ADODC nesnesine bağlı Veri tabanı iģlemleri: Veri tabanı işlemleri genel olarak select (sorgulama), insert(yeni kayıt), update(kayıt güncelleme) ve delete (kayıt silme) dir. 1- Select (sorgulama) ADODC nesnesi ile sorgulama yapmadan önce mutlaka dosya göstergecini en başa getirmek gerekir. (yani refresh yapmak gerekir.) Adodc1.Refresh Ado nesnesine bağlı olan tablonun en başına gelir. - Sayısal arama: C=InputBox( Aranan kaydın numarasını giriniz ) Adodc1.Recordset.Find ( SIRANO= & Str$(C)) Satırın anlamı: Adodc1.Recordset.Find= Ado nesnesi ile elde edilen kayıt setinde ara ( SIRANO= & Str$(C))= SIRANO tablodaki ilgili alan adı, STR$(C) ise dışardan gönderilen parametre.(bu kritere dayalı olan kayıtları getir) - String Arama: C=InputBox( İlgilinin Adını Soyadını giriniz ) Adodc1.Recordset.Find ( ILGIAD like % & C & % ) Satırın anlamı: ILGIAD like % & C & % = ILGIAD alan adı, like= içerir komutu, % & C & % =dizilimi ise C de girilen ifade geçen tüm kayıtlar. % işareti ile başında sonunda hangi karakter olursa olsun anlamında. (önek: 2
C= GÜL olsun. SONGUL, GULCAY, İLKGULEN gibi tüm kayıtları alır. 2- Insert(Yeni Kayıt): Adodc1.Recordset.AddNew 3- Update(Güncelleme): Adodc1. Recordset.Update 4- Delete(Silme): Adodc1. Recordset.Delete (Ado nesnesine bağlı tabloya yeni satır ekle) DEĞĠġKEN TANIMLAMA BLOKLARI 1- Alt Program Seviyesi (sub-end sub arası): Bu seviyede DIM komutu ile tanımlanan değiģkenler sadece tanımlandıkları alt programlarda geçerlidir. Diğer alt programlarda (procedure) iģlem görmezler. Örnek: Private Sub Command1_Click() Dim a, b, c As Integer a = InputBox("1.sayı") b = InputBox("2.sayı") c = a * b MsgBox c 2- Formun General Declearations (Genel Bildiriler) kısmında DIM ile tanımlanan değiģkenler formun tüm alt programlarında geçerlidir. Örnek: Dim a, b, c As Integer Private Sub Command1_Click() a = InputBox("1.sayı") b = InputBox("2.sayı") Private Sub Command2_Click() c = a * b MsgBox c 3- Formun Genel Bildirilerinde (General Declarations) Public seviyesinde tanımlanan değiģkenler tüm formların alt programlarında çalıģır. Ancak değiģken kullanılırken tanımlandıkları formunda referans edilmesi gerekir. Örnek: Form1 'de Public a, b, c As Integer ---------------- Private Sub Command1_Click() a = InputBox("1.sayı") 3
b = InputBox("2.sayı") Form2'de Private Sub Command2_Click() Form1.c = Form1.a * Form1.b MsgBox Form1.c 4- Modül seviyesinde GLOBAL tanımlanan değiģkenler projenin her yerinde bağımsız çağrılıp, iģlem yapılabilir. Örnek: Modul'de Global c, a, b As Integer Form1'de Private Sub Command1_Click() a = InputBox("1.sayı") b = InputBox("2.sayı") Form2'de Private Sub Command2_Click() c = a * b MsgBox c ALT PROGRAM (PROCEDURE) OLUġURMA BLOKLARI 1- Form Seviyesinde Private sub olarak oluşturulan alt programlar sadece o formdaki alt programlardan çağırılır. 2- Form seviyesinde public sub olarak oluşturulan alt programlar başka formlardaki alt programdan çağrılırlar ancak, oluşturulduğu form'da referans edilmelidir. 3- Modül seviyesinde sub-end sub olarak oluşturulan alt programlar projenin her yerinde çağrılır. Ancak modüle name ini referans etmek gerekir. 4- Modül seviyesinde public sub olarak oluşturulan alt programlar projenin her yerinden bağımsız olarak çağırılırlar. 4
B- Modul ile Veri tabanı iģlemleri: Visula basic te veri tabanı işlemleri için ADODC nesnesine bağlı kalmak şart değil. Bilinen SQL cümleleri ile veri tabanı işlemlerini yürütmek Professional programcılığın gereğidir. Bunun için yukarıda belirtilen ODBC tanımı yapılmalı ve form üzerine boş bir ADODC nesnesi yerleştirilmelidir. Daha sonra Ado nesnesiyle işimiz kalmayacaktır. Artık özgürce SQL yaparak veri tabanı işlemlerimizi görebiliriz. Sonraki adımlar: 1- Proje içine Project menusunden Add module seçeneği ile bir modul eklenir.. 2- Modul ün General Declarations (genel Bildiriler) bölümüne; Global BAGLANTI As New ADODB.Connection (BAGLANTI adı altında bir connectiın nesnesi oluşturuldu) Global TABLO As New ADODB.Recordset (TABLO adı ile bir kayıt seti nesnesi oluşturuldu) Global SQL As String (SQL adı altında select cümlelerinin aktarılacağı bir genel değişken tanımlandı) tanımlar yapılır. 3- Modul de veri tabanı açmak için bir public (her yerde geçerli-genel) alt program oluşturulur. Public Sub DOSYA_AC() DOSYA_AC adı ile bir alt prg. oluşur With BAGLANTI tanımlanan BAGLANTI nesnesi için.mode = admodereadwrite işlem biçimi yazma ve okuma.cursorlocation = aduseclient işlem yeri; kullanıcı konumu (birde sunumcu konumu vardır).open "mevzu" ODBC de tanımlanan veri kaynağını (kullanıcı DSN) aç End With tanımlamaları bitir alt prg. Bitir 4- Yine Modul de veri tabanını kapatmak için bir public (her yerde geçerli-genel) alt program oluşturulur. Public Sub DOSYA_KAPAT() DOSYA_KAPAT adı ile bir alt prg. oluşur BAGLANTI.Close BAGLANTI nesnesini kapat alt prg. bitir 5- Modülün program içinde kullanımı: - Form_Load() DOSYA_AC formun yüklendiği sırada DOSY_AC alt prg. Çalışır ve böylece veri tabanına bağlanılır. - Tüm kayıtları sorgulama işlemi: SQL= "" SQL değişkeninin içini temizle SQL= SQL & "SELECT * FROM KANUN order by KANUN_ADI" KANUN adlı tablodaki tüm kayıtları KANUN_ADI alanında sıralı olarak oku Set TABLO = BAGLANTI.Execute(SQL) TABLO adı ile oluşturulan kayıt setini; SQL cümlesini al, BAGLANTI nesnesinin özellikleri ile hazırla, kur, oluştur. - DataGrid nesnesini doldurmak (tablodaki kayıtları ekrana listelemek) SQL = "" SQL = SQL & "SELECT * FROM KANUN order by KANUN_ADI" Set TABLO = BAGLANTI.Execute(SQL) Set DataGrid1.DataSource = TABLO oluşturulan kayıt setini DataGrid nesnesinin veri kaynağına aktar. - Sayısal Arama: 5
Kanun No'ya göre ARA = InputBox("Kanun Numarasını Giriniz") SQL2 = "" SQL2 = SQL2 & "SELECT * FROM KANUN where KANUN_NO=" & ARA girilen kanun numarasına göre KANUN tablosundan arama yapar. Set TABLO2 = BAGLANTI.Execute(SQL2) Arama sonucunu kayıt setine aktarır. If TABLO2.RecordCount > 0 Then Kayıt bulunmuştur - Kayıt setindeki verilerin text lere aktarılması: Text1.Text = TABLO2.Fields("KANUN_NO") alan adına göre alır Text3.Text = TABLO2.Fields("KANUN_ADI") Ya da Text1.Text = TABLO2(0) alanın index numarasına göre alır Text3.Text = TABLO2(1) - String Arama: Kanun Adına Göre ARA = InputBox("Kanun Adını Giriniz") SQL2 = "" SQL2 = SQL2 & "SELECT * FROM KANUN where KANUN_ADI like '%" & ARA & "%'" Set TABLO2 = BAGLANTI.Execute(SQL2) - İnsert (ilk kayıt): SQL = "" SQL = SQL & "INSERT INTO KANUN (KANUN_NO,KANUN_ADI,YAY_RES_GAZ_TAR,YAY_RES_GAZ_SAY)" SQL = SQL & " values (" & Text1.Text & ",'" & Text3.Text & "','" & Text4.Text & "','" & Text5.Text & "')" Set TABLO = BAGLANTI.Execute(SQL) MsgBox ("kaydettim") - Update (Güncelleme): SQL = "" SQL = SQL & "update KANUN set KANUN_NO = " & Text1.Text & ",KANUN_ADI = '" & Text3.Text & "',YAY_RES_GAZ_TAR='" & Text4.Text & "',YAY_RES_GAZ_SAY ='" & Text5.Text & "'" SQL = SQL & " where KANUN_NO = " & Val(Text1.Text) Set TABLO = BAGLANTI.Execute(SQL) MsgBox ("kaydettim") - Delete (kayıt silme): SQL2 = "" SQL2 = SQL2 & "delete FROM KANUN where KANUN_NO=" & Text1.Text Set TABLO2 = BAGLANTI.Execute(SQL2) MsgBox("Kaydı sildim") NOT: Connection ve Recordset nesnesi oluşturmak için mutlaka ADODC nesnesini proje içinde herhangi bir form üzerine almak gerekir. Ya da Project menüsünden References bölümünden "Microsofr Activex Data Object 2.8 Library" yüklenmesi gerekir. 6
OLEDB veri kaynağı ile veri tabanına eriģmek ADO Nesnesi kullanarak: Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\hulya\anket.mdb" Adodc1.CommandType = adcmdtable Adodc1.RecordSource = "MAIL" Set DataGrid1.DataSource = Adodc1 Modül de tanımlama yaparak (connection at runtime = çalıģma zamanında bağlantı): Modülde global nesneler oluşturuldu: Global con As New Connection Global KAYIT As New Recordset Global KAYIT1 As New Recordset Global SQL As String Modülde veri tabanı açmak için gerekli satırlar public bir alt programla sağlandı Public Sub dosya_ac() With con.mode = admodereadwrite.cursorlocation = aduseclient.open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\Inetpub\wwwroot\kurum\kurum.mdb" End With Modülde veri tabanı kapatmak için gerekli satırlar public bir alt programla sağlandı Public Sub dosya_kapat() con.close VISUAL BASIC PROJESĠNĠN PAKET HALĠNE GETĠRĠLMESĠ Öncelikle bilgisayarın yerel tarih ve saat ayarları Denetim Masasından İngiltere biçimine çevrilir. 1- Proje formları ve eklenen tüm bölümleriyle save edilir 2- File-make.exe seçeneğinden exe file oluşturulur 3- Visual studio tools olan package seçeneği seçilir 4- Gelen ileti kutusundan select Project bölümünden browse edilir ve vbp uzantılı file seçilir. 5- Package butonu tıklanır. 6- Gelen ileti kutusundan next butonu tıklandıktan sonrave setup ın yapılacağı dizin seçilir. 7- Gelen iki ileti kutusunda paket içine alınan ve proje tarafından oluşturulan yardımcı dosyaların seçilmiş halleri bulunur. Bunlardan devre dışı bırakılacak dosyaların işaretleri kaldırılır. İşaretlenmemiş ancak pakete dahil edilecek dosyalar da işaretlenir. 8- Gelen ileti kutusundan single cab seçilir 9- Projenin kurulumu sırasında start menude oluşturacağı hiyerarşiyi gösteren bir ileti kutusu gelir. Buradan istenilen edit işlemi yapılır 7
10- Son olarak pakete alınan dosyaların listesini getiren bir ileti kutusu gelir. 11- Pakete sonradan alınan dosyaların tekrar seçilmesi için ileti alınır. 12- En son ileti kutusunda paketin adı gelir. Edit edilebilir. FORMUN TAġINABĠLĠRLĠK VE BOYUTLANDIRILABĠLĠRLĠK ÖZELLĠKLEĠRNĠ KAPATMAK 1- Boyutlandırılabilirliğini kapatmak: Properties den Border Style ını 1.Fixed Single seçilir 2- TaĢınabilirliğini Kapatmak: Properties den Moveable özelliği false yapılır 8