Ders 7: Veri Tabanı İşlemleri

Amaçlar:

  • Veritabanı kullanmını 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 Veri Erişim Yöntemi

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.

Şekil: ADO ve veri erişim nesnelerinin karşılaştırılması


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 Üzerindeki Kontrolleri 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.

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 Nesneleri

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.

Şekil: ADO Nesneleri




Tablo: 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.

Dim cnn As New ADODB.Connection
With cnn
    .CursorLocation = adUseClient
    .ConnectionString = _
    "c:\my documents\musteri.mdb"
    .Provider = "Microsoft.Jet.OLEDB.3.51"
    .Open
End With
strSQL = "UPDATE BORCU SET BORCU = BORCU * 1.15"
With cmd
    Set .ActiveConnection = cnn
    .CommandText = strSQL
    .Execute intRecordsAffected
End With

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 cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
Cnn.Open "ADRESLER"
cmd.CommandText = "Select * From musteriler"
Set cmd.ActiveConnection = cnn
rst.CursorType = adOpenDynamic
rst.LockType = adLockOptimistic
rst.Open cmd
Set DataGrid1.DataSource = rst

II. Gözden Geçirme

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. Visual Basic Uygulamas

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 Envirinment 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
   

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.

Yapılacaklar:

  • Bir ana menü formu geliştirin.

  • Bütün veri giriş formlarınaa ulaşacak düğmeler yerleştirin.

  • Bütün veri giriş formlarında dan ana menüye dönüşü sağlamak için Exit düğmeleri yapın.

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.

6. İstenen Sorgular/Raporlar:

  • Müşterilerin ili içinde grubu, grubu içinde alfabetik sırada ünvanlarının yer aldığı liste.

  • Verilen iki tarih arasında (parametrik) siparişlerin adet ve tutarları?

  • Verilen iki tarih arasında ve belli bir müşteri konu için siparişlerin adet ve tutarları?

  • Verilen iki tarih arasında ve belli bir müşteri ve siparişi alan eleman olarak siparişlerin adet ve tutarları?

  • Verilen iki tarih arasında, belli bir müşteri, belli bir mal ve siparişi alan eleman olarak siparişlerin adet ve tutarları?

  • En yüksek sipariş alan elemanı bulmak için elemanların sipariş toplamlarını gösteren bir sıralı liste (azalan).

  • Hiç siparişi olmayan müşterilen alfabetik sırada listesi.

  • İli “İzmir” olan ve telefon numarasının ilk karakteri 4 olan müşterilerin alfabetik sırada listesi.

  • İli “İzmir” ya da “Manisa” olan müşterilerin il içinde alfabetik sırada listesi.

  • Sipariş adedi olarak en çok mal taşıyan taşıyıcı firma?

  • Sipariş alan elemanların toplam (tutar) siparişleri.

  • Stokta Birim fiyatlara %10 zam.

  • Sadece belli gruptan olan stokların birim fiyatlarına %10 zam.

  • Stokların depo kodunun ilk iki karakteri ile tanımlarının ilk iki karakterinin birleşiminin listesi.

  • Sipariş toplamlarının taşıyıcı firma güzergahlarına göre listesi.

Site Meter

www.KESDi.com©