ACCESS'DEN VERİ AKTARIMI ÖRNEĞİ
Veri tabanından bilgi aktarımı için kullanacağımız komutlar OpenDatabase,
ve OpenRecordset'dir. Veri tabanı (Db) ve kayıt kümesi (Rs) genel tanımları
yapıldıktan sonra, bu tanımlardan veritabanı için OpenDatabase tanımı, kayıt
kümesi için de Open Recordset tanımı yapılmalıdır. OpenRecordset tanımında
kullanılan "snapshot" dosya açıldığında aktif olan kaydın bir
kopyasını alır. Bu örnekte tek kayıtlık bir veritabanı kullanılacak ve o bilgi
görüntülenecektir.
Tüm kayıtların görüntülenmesi işlemi bir döngü ile aktif kayıt
ilerletilerek yapılmalıdır.
Visual Basic Programı'na Access veritabanından veri aktarımı
gerçekleştirmek için öncelikle bir veri tabanı hazırlamamız gereklidir.
Access Veri tabanı hazırlama işlemleri:
1.
Access'de
"c:\MyDocuments" dizini altına "ornek.mdb" dosyası açınız.
2.
Tables/New/Design seçenekleri ile
tablo tasarımı penceresini aktif hale getiriniz.
3.
"Field Name" kolonuna
"Yazi" yazınız.
4.
"Data Type" kolonunda
"Text" seçiniz.
5.
Tabloyu kapatınız ve saklama
penceresi geldiğinde tabloyu "tblornek" adı ile saklayınız.
6.
Ana anahtar seçimi için
"No" yanıtlayınız.
7.
Tablonuzu "Open" ile
açınız. İlk satıra "Veri Aktarım Denemesi" yazınız.
8.
Access'den çıkınız.
Visual Basic'de ise aşağıdaki işlemleri gerçekleştiriniz:
1.
Yeni bir proje açınız. Projeyi
"ornek" olarak yine "c:\MyDocuments" dizinine saklayınız.
2.
Form_Load Prosedürü'ne eklenecek
kod:
Dim Db
as Database
Dim Rs
as Recordset
3.
Formun üzerine bir etiket ve 2
komut düğmesi yerleştiriniz.
4.
Etiket özellikleri:
Caption = (Boş
olacak)
Name = Label1 (Aynı kalacak)
BorderStyle = 1
Appearance = 0
5.
Birinci komut düğmesi özellikleri:
Caption = Veri Al
Name = Command1 (Aynı kalabilir)
6.
İkinci komut düğmesi özellikleri:
Caption = Cikis
Name = Command2 (Aynı kalabilir)
7.
Birinci komut düğmesi Click_Prosedürü
Set Db =
OpenDatabase("c:\MyDocuments\ornek.mdb")
Set Rs = Db.OpenRecordset("tblornek",dbopensnapshot)
Label1.Caption = Rs!Yazi
8.
İkinci komut düğmesi
Click_Prosedürü:
End
9.
Project/References menü
seçeneğinden sonra liste üzerinde "Microsoft DAO 3.51 Object Library"
seçeneğini işaretleyiniz.
10.
Programı saklayınız.
Programı çalıştırdıktan sonra "Veri Al"
düğmesine bastığınızda Şekil-9'daki görüntü oluşacaktır.
Şekil-9 Veri Tabanından Veri Aktarım Örneği
VERİ TABANINDA ARAMA YAPMA ÖRNEĞİ
VERİ TABANINDA ARAMA YAPMA ÖRNEĞİ
Bir kayıt bilgisinin veri tabanında olup olmadığını belirlemek için arama
işlemi yapmanız gerekmektedir. Bu işlem için öncelikle aranacak bilginin bir
yazı kutusu ile kullanıcıdan alınması daha sonra da veri tabanında arama
yapılması gerekmektedir. Bilginin bulunup bulunmadığı bilgisi yine yazı kutusu
ile kullanıcıya verilebilir.
Arama için yapacağınız işlemler aşağıdaki gibidir:
1.
"ornek.mdb"
veritabanına "deneme" ve "veri aktarim" olmak üzere iki
adet kayıt daha giriniz.
2.
"ornek.frm" üzerine bir
yazı kutusu ekleyiniz, "Text" özelliği boş olsun.
3.
"ornek.frm" üzerine bir
komut düğmesi ekleyiniz, "Caption" özelliği ara olsun. Bu
komuta aşağıdak prosedürü ekleyiniz.
Private Sub Command3_Click()
Set Db = OpenDatabase("c:\bg\telif\vb\ornek.mdb")
Set Rs = Db.OpenRecordset("tblornek",
dbOpenSnapshot)
Do While Not Rs.EOF
If Text1.Text = Rs!Yazi Then
Text1.Text = "Bulundu"
Else:
Rs.MoveNext
End If
Loop
If Text1.Text <> "Bulundu" Then Text1.Text =
"Bulunamadi"
End Sub
4.
Programı çalıştırdıktan sonra yazı
kutusuna "Deneme" girip "Ara" düğmesini tıklarsanız yazı
kutusu üzerine "Bulundu" yazısı görüntülenecektir. Eğer "Ornek"
girip yine "Ara" düğmesini tıklarsanız bu kez de
"Bulunamadı" yazısı görüntülenecektir.
VERİ RAPORU YARATMA
Veri raporu yaratma işlemi için
öncelikle veri alanı tanımlamaları yapılmalıdır.
Veri Bağlantısı Tanımlamaları
1.
Project/Add Data Environment
(Project/Components/Designers/Data Environment ya da Project/More Activex
Designers/Data Environment) tıklanır.
2.
Açılan "Data Environment" penceresindeki
"Connection1" üzerinde farenin sağ tuşu tıklanarak
"Properties" seçilir.
3.
"Data Link Properties" diyalog kutusu
üzerinde "Microsoft Jet 3.51 OLE DB Provider" tıklanır.
4.
"Next" düğmesi tıklanarak
"Connection" kısmına geçilir.
5.
"Use data source name" yazı kutusu
yanındaki (…) düğmesi tıklanarak Access veri tabanı seçildikten sonra
kullanacağınız veri tabanı seçilir.
6.
"Test connection" tıklanarak veri
tabanına erişim yapılıp yapılamadığı denetlenir.
Veri Tabanı Tanımlamaları
1.
"Connection1" üzerinde farenin sağ tuşu
tıklanarak "Add Command" seçilir.
2.
Eklenen "Command1" üzerinde sağ tuş
tıklanarak "Properties" seçilir. Açılan pencerenin
"General" kısmında "Command Name" ile bir isim atanır,
"Connection" ile istenilen bağlantı seçilir (birden fazla bağlantı
olduğu durumlarda kullanılmalıdır), "Database Object" ile verinin
tablo olduğu belirtilir, "Object Name" üzerinden tablo ismi seçilir.
(Hastane veri tabanı üzerinde kimlik tablosu gibi)
3.
Eğer bu veri tabanına ilişkili bir veri tabanı var
ise bu "Add Child Command" ile gerçekleştirilir. Diğeri gibi isim ve
tablo ismi tanımlamaları yapıldıktan sonra "Relation" ile ilişki
tanımı yapılır. (Hastane veri tabanı üzerinde vizite tablosu, kimlik-hastakod
ile vizite-hastakod ilişkisi gibi)
Veri Raporu Yaratma
1.
Project/Add Data Report seçilir. Ekrana
"Access" benzeri bir rapor ortamı gelir.
2.
"Properties" penceresi üzerinde
"Data source" için önceden tanımlanan "Data Environment",
"Data Member" için ise tanımlanan veri tabanı girilir. İstenirse
raporun ismi değiştirilebilir.
3.
"Data Report" penceresi üzerinde farenin
sağ tuşu tıklanarak "Retrieve Structure" seçilir. Bu işlem otomatik
olarak veri alanlarını tanımlar.
4.
Daha sonra "Data Environment" penceresi
üzerinden alanlar "Data Report" üzerine tıklanıp sürüklenerek eklenir
ve istenilen biçimde yerleştirilir.
Yaratılan veri raporları bir
komut düğmesine eklenecek rapor_ismi.show
ile çağırılabilir. Gösterilen rapor üzerinde yazdırma düğmesi bulunduğu için
ayrıca yazdırma komutu eklemeye gerek yoktur.
HASTANE VERİ TABANI UYGULAMASI
HASTANE VERİ TABANI
Veri tabanı üzerinde Data1
(hastane-kimlik) ve Data2 (hastane-vizite) nesneleri "visible.false"
olarak bulunmaktadır.
(General Declaration)
Public son1 As Integer
Dim son2 As Integer
Public sayi As Integer
Sub ilkform()
cmdileri.Visible = True
cmdgeri.Visible = True
cmdbas.Visible = True
cmdson.Visible = True
cmdekle.Visible = True
cmdrapor.Visible = True
cmdguncelle.Visible = True
cmdbul.Visible = True
cmdcikis.Visible = True
cmdiptal.Visible = False
End Sub
Public Sub goster()
txtad.Text =
Data1.Recordset("ad")
txtsoyad.Text =
Data1.Recordset("soyad")
txthastakod.Text =
Data1.Recordset("hastakod")
Data2.Recordset.MoveFirst
liste(0).Clear
liste(1).Clear
liste(2).Clear
endx = 0
Do While endx = 0
Do While Not Data2.Recordset.EOF
If Data1.Recordset("hastakod")
<> Data2.Recordset("hastakod") Then
Data2.Recordset.MoveNext
Else
endx = 1
varx =
Data2.Recordset("hastakod")
vary =
Data2.Recordset("hastakod")
Do While varx <> 0
Do While vary = varx
liste(0).AddItem
(Data2.Recordset("protokolno"))
liste(1).AddItem
(Data2.Recordset("tarih"))
liste(2).AddItem
(Data2.Recordset("tani"))
Data2.Recordset.MoveNext
If Data2.Recordset.EOF = True Then
varx = 0
vary = 1
Else
vary = Data2.Recordset("hastakod")
End If
Loop
varx = 0
Loop
End If
Loop
Loop
End Sub
Sub ekledugkaldir()
cmdileri.Visible = False
cmdgeri.Visible = False
cmdbas.Visible = False
cmdson.Visible = False
cmdekle.Visible = False
cmdrapor.Visible = False
cmdguncelle.Visible = False
cmdbul.Visible = False
cmdcikis.Visible = False
cmdiptal.Visible = True
End Sub
Private Sub bul_Click()
Data1.Recordset.MoveFirst
sayi = 1
endx = 0
Do While endx = 0
If Data1.Recordset("hastakod")
<> bul.Text Then
Data1.Recordset.MoveNext
sayi = sayi + 1
Else
endx = 1
goster
End If
Loop
End Sub
Private Sub cmdbas_Click()
Data1.Recordset.MoveFirst
goster
sayi = 1
End Sub
Private Sub cmdbul_Click()
soyadx = txtsoyad.Text
bulx = 0
bul.Clear
Data1.Recordset.MoveFirst
Do While Not
Data1.Recordset.EOF
If Data1.Recordset("soyad") =
soyadx Then
bul.AddItem
(Data1.Recordset("hastakod"))
Data1.Recordset.MoveNext
bulx = 1
Else
Data1.Recordset.MoveNext
End If
Loop
If bulx = 0 Then
MsgBox ("bulamadim.")
Else
bul.Text = bul.List(0)
bul.Visible = True
txtbul.Visible = True
txtbul.Text = "soyad =" + soyadx
End If
End Sub
Private Sub cmdcikis_Click()
End
End Sub
Private Sub cmddegtamam_Click()
Data1.Recordset.Edit
Data1.Recordset("Ad")
= txtad.Text
Data1.Recordset("Soyad")
= txtsoyad.Text
Data1.Recordset.Update
Data1.Refresh
cmddegtamam.Visible = False
Data1.Recordset.Move (sayi - 1)
ilkform
goster
End Sub
Public Sub cmdekle_Click()
Ekle.Show
Hastane.Hide
son1 = son1
End Sub
Private Sub cmdgeri_Click()
If sayi <> 1 Then
Data1.Recordset.MovePrevious
goster
sayi = sayi - 1
Else
MsgBox ("Kayit basina gelindi!")
End If
End Sub
Private Sub cmdguncelle_Click()
ekledugkaldir
cmddegtamam.Visible = True
End Sub
Private Sub cmdileri_Click()
If sayi <> son1 Then
Data1.Recordset.MoveNext
goster
sayi = sayi + 1
Else
MsgBox ("Kayit sonuna gelindi!")
End If
End Sub
Private Sub cmdiptal_Click()
goster
cmdekletamam.Visible = False
cmddegtamam.Visible = False
ilkform
goster
End Sub
Private Sub cmdrapor_Click()
DataReport1.Show
End Sub
Private Sub cmdson_Click()
Data1.Recordset.MoveLast
goster
sayi = son1
End Sub
Private Sub Form_Load()
Data1.Refresh
Data2.Refresh
Data1.Recordset.MoveLast
son1 =
Data1.Recordset.RecordCount
Data2.Recordset.MoveLast
son2 =
Data1.Recordset.RecordCount
Data1.Recordset.MoveFirst
sayi = 1
goster
End Sub
EKLE FORMU
Public Sub cmdekletamam_Click()
Hastane.Data1.Recordset.AddNew
Hastane.Data1.Recordset("Ad")
= txtad.Text
Hastane.Data1.Recordset("Soyad")
= txtsoyad.Text
Hastane.son1 = Hastane.son1 + 1
Hastane.Data1.Recordset("Hastakod")
= Hastane.son1
Hastane.Data2.Recordset.AddNew
Hastane.Data2.Recordset("Hastakod")
= Hastane.son1
Hastane.Data2.Recordset("protokolno")
= txtprot.Text
Hastane.Data2.Recordset("tarih")
= txttarih.Text
Hastane.Data2.Recordset("tani")
= txttani.Text
Hastane.Data1.Recordset.Update
Hastane.Data2.Recordset.Update
Hastane.Data1.Refresh
Hastane.Data2.Refresh
Hastane.goster
Hastane.sayi = 1
Hastane.Show
Ekle.Hide
End Sub
Private Sub cmdiptal_Click()
Hastane.Show
Ekle.Hide
End Sub
Private Sub Form_Load()
txtad.Text = ""
txtsoyad.Text = ""
txtprot.Text = ""
txttani.Text = ""
txttarih.Text = ""
End Sub