DERS 7: VERİTABANI İŞLEMLERİ Ders sonunda yapabilecekleriniz: -Veritabanı kullanım açıklamak. -ADO veri erişim yöntemini açıklamak. -Veritabanına yazmak ve okumak. -SQL Server ve Access veritabanlarına erişim. I. ADO VERİ ERİŞİM YÖNTEMİ Visual Basic uygulamalarına baktığınızda çoğunun veritabanı uygulaması olduğunu görürsünüz. Bu nedenle Visual Basic 6.0 ile veritabanı uygulaması geliştirmek için çok sayıda yenilikler yapılmıştır. Bu yeniliklerin başında yeni veri erişim yöntemi ADO (ActiveX Data Objects) gelir. NOT: ADO ve Visual Basic, Microsoft firmasının tescilli markasıdır. ŞEKİL: ADO VE VERİ ERİŞİM NESNELERİNİN KARŞILAŞTIRILMASI NOT: ADO konusunda ayrıca sitemizin ASP kursuna bakınız. A. ADO'YU KULLANMAK ADO nesnelerini kullanmadan önce, diğer bir deyişle programınızda ADO kullanarak veritabanı işlemlerini yapmadan önce ADO nesnelerini ve referanslarını Visual Basic ortamına eklemeniz gerekir. 1. Project menüsünden References komutu kullanılır. 2. Microsoft ActiveX Data Objects 2.0 ya da daha ilerisi seçilir. İPUCU: ADO versiyonları ve Visual Basic Service Pack'leri konusunda daha geniş bir araştırma yapınız. www.microsoft.com. Örneğin formlarınızdaki metin kutularını ya da gridleri veritabanına bağlamak için ADODC bileşenin eklenmesi gerekir. Bu durumda ortama ADO kontrollerini de eklemeniz gerekir. 1. Project menüsünden Components komutu kullanılır. 2. Microsoft DataGrid Control 6.0 seçilir. Ayrıca Microsoft ADO Data Control 6.0'ında eklenmiş olması gerekir. 3. OK düğmesine tıklanarak kontrol projeye eklenmiş olur. Ardından ADO DC üzerinde sağ tıklayarak elde ettiğiniz iletişim kutusunda veritabanı erişiminin birçok işlemini yapabilirsiniz. Geriye bir tek şey kalır, o da verileri görüntüleyecek olan DataGrid'in DataSource özelliğini ADODC olarak düzenlemek. 1. FORM ÜZERİNDEKİ KONTROLLERİ ADO DATA CONTROL'E BAĞLAMAK ADO Control aracılığıyla veri kaynağı ile bağlantı kurulduktan sonra, TextBox, ComboBox, ListBox, Grid gibi kontrollerle birlikte kullanılabilir. NOT: Bu dokümanlar Faruk Çubukçu tarafından hazırlanmıştır. Burada adı geçen ticari ünvanlar ve markalar bilgi amaçlı kullanılmışlardır ve kendi imtiyazlarına sahiptirler. Bu dokümanlar ticari amaçlı olarak kullanılmaz. Daha fazla bilgi için www.farukcubukcu.com adresine bakınız. Bir kontrolün tasarım zamanında ADODC'e bağlanması için DataSource özelliğinin düzenlenmesi gerekir. Yine aynı şekilde bu işlemler çalışma zamanında da yapılabilir. Kullanılan kontrole göre kullanılan özellikler değişir. Örneğin bir TextBox kontrolünü ADODC ile ilişkilendirerek veri alışverişi yapmasını istersek DataField özelliği kullanılır: Text1.DataField = "ADI " Set Text1.DataSource = ADODC1 Aşağıdaki örnekte DataGrid kontrolü ile Access veritabanındaki veriler bir gride bağlanır. Bu işlem için: 1. Project menüsünden Components komutu kullanılır. 2. Microsoft DataGrid Control 6.0 seçilir. Ayrıca Microsoft ADO Data Control 6.0'ında eklenmiş olması gerekir. 3. OK düğmesine tıklanarak kontrol projeye eklenmiş olur. Private Sub Command1_Click() ADODC1.ConnectionString ="Provider=Microsoft.Jet.OLEDB.3.51; Data Source=c:\my documents\adresler.mdb" ADODC1.CommandType = adCmdTable ADODC1.RecordSource = "ogrenciler" Set DataGrid1.DataSource = ADODC1 End Sub B. ADO NESNELERİ ADO veri erişim sistemi oldukça basit bir nesne modeline sahiptir. Bu modelde birçok nesne seçimli olarak (birlikte) ya da bağımsız olarak kullanılabilir. Tablo: ADO modelinde yer alan nesneler Nesne Amacı Command Bir veri kaynağı üzerinde bir query ya da deyimi işletir. Connection Bir veri kaynağına doğrudan bağlantı yaratır. Error Veri kaynağından bir hatayı döndürür. Field Bir kayıt içindeki bir alan (kolon). Parameter Bir komut için parametre tutar. Recordset Bir komut tarafından üretilen (dönen) verileri içerir. Örneğin bir Access veritabanına bağlantı kurmak için şu nesneler kullanılır: Veri: ADRESLER.MDB Connection: MUSTERI.MDB Command: Select * from musteriler Recordset: elde edilen bilgi. Aşağıdaki örnekte sadece Recordset nesnesi ile bir Microsoft Access veritabanına erişilmektedir: Dim rst As New ADODB.Recordset rst.Open "Select * From musteriler", "DSN=MUSTERI", adOpenKeyset Set DataGrid1.DataSource = rst NOT: Yukarıdaki kodda yer alan DSN tanımlaması işletim sistemi tarafından yaratılabilir. Control Panel'de ODBC tanımlamalarına bakınız. 1. Recordset Nesnesinin Kullanımı Aşağıdaki örnekte bir Recordset nesnesi ile Access veritabanındaki veriler DataGrid üzerinde gösterilmektedir: Dim rst As New ADODB.Recordset rst.Open "Select * From musteriler", "DSN=MUSTERI", adOpenKeyset Set DataGrid1.DataSource = rst 2. Connection Nesnesi Connection nesnesi bir veri kaynağına bağlantı kurmak için kullanılır. Connection nesnesi sayesinde bir data provider aracılığıyla (OLE DB) bir komut işletilir. Connection nesnesi ile ConnectionString özelliği kullanılır. Bu özellik bağlanılacak veri kaynağını gösterir. Open metodu ise bağlantıyı açmak için kullanılır. Dim cnn As New ADODB.Connection cnn.Open "MUSTERI" 3. Command Nesnesi Command nesnesi bir bağlantı üzerinde işletilecek özel bir query ya da komut yaratmak için kullanılır. Command nesnesinin ana amacı stored procedure'ların ve parametreli komutların çalıştırılmasını sağlamaktır. Bir komut nesnesi bir bağlantı üzerinde bağımsız olarak yaratılır ve işletilmeden önce veri kaynağına bağlı olan aktif connection ile ilişkilendirilir. Bir komut herhangi bir recordset döndürmeden de kullanılabilir. Örneğin aşağıdaki program parçasında bir UPDATE komutu veritabanı üzerinde işletilmektedir. strSQL = "UPDATE BORCU SET BORCU = BORCU * 1.15" cmd.Execute 4. Recordset Nesnesi Recordset nesnesi ADO içinde en çok kullanılan nesnedir. Recordset nesnesi veri kaynağından gelen verileri içerir. Bir komut ya da query çalıştırıldığında elde edilen kayıtları recordset nesnesi içerir. Recordset nesneleri genellikle aktif connection ve command ile oluşturulur. Bunun dışında Recordset nesneleri bağımsız olarak da kullanılabilir. Örnek: Recordset tanımlaması Dim rst As New ADODB.Recordset rst.Open "Select * From Ogrenciler", "DSN=ADRESLER", adOpenKeyset, adLockOptimistic Örnek: Bir recordset'in DataGrid üzerinde gösterilmesi Dim con As New ADODB.Connection Dim rst As New ADODB.Recordset Con.Open="Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=c:\data\sirket.mdb" Rs.Open "SELECT * FROM musteriler", Con Set DataGrid1.DataSource = rs NOT: DSN tanımlı olan bağlantılar için bilgisayarda Control Panel üzerinde ODBC bağlantısını tanımlanmalıdır. II. GÖZDEN GEÇİRME 1. Recordset nedir? 2. Bir recordset nasıl yaratılır? 3. Bir recordset'e ekleme yapmak için hangi metot kullanılır? 4. ADO nesneleri nelerdir? III. VİSUAL BASIC UYGULAMASI ER-FA ecza deposu bin kadar üyesine ilaç toptan ilaç pazarlamak üzere kurulmuştur. ER-FA ecza ilaç siparişlerini takip etmek için bir Visual Basic uygulaması geliştirmek istemektedir. Yapılacak ana işlemler: . Visual Basic programlama ortamında ana menü ve veri giriş formlarını tasarlamak. . Veritabanını tasarlamak. . Veri girişi ve raporlama için kodlar yazmak. Yapılacak işlemlerin ayrıntıları: . Visual Basic formu olarak veri giriş formlarını tasarlamak. . Microsoft Access ya da SQL Server üzerinde veritabanlarını tasarlayın. . Veri girişi sayfalarında form validation (form alanlarının kontrolü) yapın. . KAYDET düğmeleriyle verilerin veritabanına kaydını yapın. . Veritabanı işlemlerini ADO kullanarak yapın. . İstenen raporlar için Data Environment ve Data Reports bölümlerinden yararlanın. Sipariş sisteminin yanı sıra bir süre sonra ER-FA ecza deposu müşterileri için bir anket yapmaya karar vermiştir. Anketler de veritabanına bir metin bilgisi olarak eklenecektir. Bu koşullar altında; tabloları ve kayıtların birbiriyle bütünlüğün sağlayacak olan olası ilişkileri tanımlayın. Bilgiler: STOK KARTI MUSTERİ KARTI SİPARİŞ ANKET Kodu Kodu Tarih Kodu Tanımı Unvanı Sip No Anket Metni Grup Kodu Grubu Mus Kodu Satıcı Firma Adresi Stok Kodu Birimi İlçesi Birimi Birim Fiyatı İli Adet KDV Tel Taşıyıcı Firma Depo Kodu Fax Siparişi Alan Paket Kodu Vergi Dairesi Açıklama Vergi No Resmi Kredisi Hesap Açılış Tarihi Resmi Web sitesi PERSONEL (SİPARİŞİ ALANLAR) TAŞIYICI FİRMA Kodu Kodu Adı Soyadı Ünvanı Adresi Adresi İli İli İşe Giriş Tarihi Güzergah Öncelikle, Microsoft Access ile veritabanını tasarlayın. Notlar: . Genellikle kodu alanlarını Primary Key yapın. . Birim fiyatlar genellikle "Adet" olarak düzenlenecektir. Onu Default yapın. . Fiyat ve adet bilgilerine mutlaka pozitif bir değer girilecektir. . Sipariş tarihi "günün" tarihi olarak otomatik olarak düzenlenecektir. . Grup kodları, iller ve diğer seçenekli girişler bir Combo box olarak düzenlenecektir. Bu veriler sabit ya da veritabanından gelerek doldurulabilir. 1. Veritabanını Yaratın ve Tabloları Tasarlayın. Yukarıdaki bilgiler temelinde SIPARIS-TAKIP veritabanını yaratın. Ardından tabloları tasarlayın. 2. İlişkileri Kurun Kodu alanları PK olduktan sonra ilgili tablolar arasındaki ilişkileri kurun. Müşteri-Sipariş Müşteri-Anket Stok-sipariş Personel-sipariş Taşıyıcı firma-sipariş arasındaki ilişkileri kurun. 3. Örnek veriler girin: Test amaçlı örnek veri girin. 4. Ana Menü Yapın Programın veri giriş kartlarına yönlenmesini sağlayacak ve ilk olarak çalıştırılacak bir ana menü formu hazırlayın. Visual Basic projelerinde genellikle menü çubuğu yaparak ana işlemleri onun üzerinde belirtirsiniz. 5. Veri Giriş Formları Yukarıdaki tablolara veri girişi için Visual Basic formları hazırlayın. İstenen formlar Yapılacaklar: . Stok kartı için columnar bir form . Müşteri kartı için columnar bir form . Anket için columnar bir form . Personel için columnar bir form . Taşıyıcı için columnar bir form . Sipariş için tabular bir form Yapılacaklar (öneriler) . Müşteri formu için olası alanlara combo box ekleyin. . Müşteri formu için olası alanlara Validation Rule ekleyin. . Müşteri formu için form zeminini değiştirin. . Müşteri formunun altına kendi hazırladığınız bir bitmap dosyayı koyun. . Müşterinin Web sitesi bilgisini tablo tasarımına ekleyin. Daha sonra bunun form üzerinden girilmesini sağlayın. Web sitesi alanına www.microsoft.com girin. Ardından üzerine tıklayarak ona ulaşmaya çalışın. . Sipariş formunun alt başlık kısmına adet toplamı alın. . Sipariş formunda birim fiyat ve tutarın görünmesini sağlayın. . Sipariş formunun alt başlık kısmına tutar toplamı alın. Ayrıca altına KDV'li toplamı hesaplattırın. . Sipariş formunda taşıyıcı firma ve siparişi alan müşterinin combo'larla seçilmesini sağlayın. NOT: Veri girişi için form üzerinde metin kutuları (text box) ve gridler kullanın. Uygulamanın Çalıştırılması: Program yazım aşamalarında F5 tuşu ile program test edilir ve çalıştırılır. Ardından paketleme sihirbazı ile programın kullanıcı bilgisayarına yüklenir hale getirilmesi gerekir.