'1. 6 tane label ciz
'2. 6 tane text ciz
'3. adlarını yaz. Kayıt No, Adınız, Soyadınız, Telefon, Adres, Şehir
'3.1 Modül ekle
'4. Kaydet butonu ekle
'5. Önceki kayıt
'6. Sonraki kayıt
'7. İlk kayıt
'8. Son kayıt
'9. Kayıt bul
'10. Degistir
'11. Kayıt ekle
'12. Sil
'13. Toplam ve bulunan kayıt sayısı sırası yine command sırasıyla
'14. Çikis
Private Sub Form_Load()
Open "oguz.dat" For Random As #1 Len = Len(alanlar) ‘ form yüklendiği anda bir dosya açmak için
kullanılır. oguz.dat dosya isim
kayitno = LOF(1) / Len(alanlar)
kayitno = kayitno + 1
topkayit.Caption = kayitno - 1
suankayit.Caption = kayitno
kayitno.Enabled = False
End Sub
'For Random dosyanın random dosya olduğunu gösterir. As 1 dosya numarası 255 e kadar verilebilir.
'başlangıçta verdiğimiz dosya numarası sonra kullanılacak. Len (alanlar) alanların uzunluğunu len değişkenine
‘atamamız gerekmektedir.
'len alanlar toplam uzunluğu 'lof ise 1 numaraları dosyanın toplam uzunluğu 'toplam uzunluğu alanlar
‘uzunluğuna bölersek kayit no yu gösterir.
'kayitno=kayitno+1 ilk anda kayıt boş olduğu zaman hata vermemek için
'ilk çalıştırdığımızda oguz.dat bulamayacağı için ilk çalıştırma anında kendisi oluşturur.
'Random dosyaların bir özelliği de her kayda aynı oranda uzunluk ayırır.
'örneğin 5 dosya var ve hepsine 10 uzunluk ayırdığını düşünelim
'50 / 10 = 5 çıkar ama +1 yapar ve 6 dosyayı bulur.
'artık aktif dizinde oguz.dat dosyası bulunur.
' Değişkenlerin tüm procedür içinde geçerli olması için modülde bir tip tanımlaması yapmak zorundayız.
' Type baslar ve End Type biter. Type bilgileri Text Kutuları icin yapılır. Oluşturulacak text’leri makineye tanıttık.
General _Declarations
Option Explicit
Type kayitbilgisi
ad As String * 10
soyad As String * 15
telefon As String * 10 'tel. numaralarının (216)4755054 göstermek için maskedit component inde anlatacagiz.
adres As String * 30
sehir As String * 10
End Type
Global alanlar As kayitbilgisi
' kayitbilgisi tipini tüm modül ve formlara tanıtmak için kullanılır. alanlar. koyduğumuz anda tanımladığımız
type’ler otomatik olarak ekrana gelir modulden global yazısı kaldırılınca ekrana gelmez.
'text kutularına yazdığımız yazılar dikkat ederseniz programdan çıkılıp tekrar girildiği zaman yazdığımız yazıların kaydedilmediğini görürüz. Kaydetmek için bir kaydet butonu hazırlar ve içerisine aşağıdaki kod yazılır.
Private Sub kaydet_Click()
Dim c As Integer
alanlar.ad = form1.ad
alanlar.soyad = form1.soyad
alanlar.telefon = form1.telefon
alanlar.adres = form1.adres
alanlar.sehir = form1.sehir
'dikkat edilirse form1 den sonra ad,şehir gelmesinin kolaylığı görülmüş oldu
c = MsgBox("Degisiklikler kayddilsin mi ?", vbYesNo)
If c = vbYes Then
'yes e basıldığı zaman verilerin dosyaya yazılmasını istiyorum bunun için PUT değimi kullanılır.
Put #1, kayitno, alanlar
'bunun anlamı yeni kaydı alanlar içine kayitno ya göre kaydetmeyi sağlar 1 rakamı ilk başta verdiğimiz dosya
noyla aynı olmasi lazım bu işlemden sonra text kutularını boşaltıp kayitno yu arttırıp ekrana getirsin.
form1.ad = " "
form1.soyad = " "
form1.telefon = " "
form1.adres = " "
form1.sehir = " "
'text kutuları boşaldıktan sonra yeni kayda geçince kayitno artması gerekir
kayitno = kayitno + 1
ad.SetFocus 'imlecin ad dan başlaması için kullanılır.
End If
topkayit.Caption = LOF(1) / Len(alanlar)
suankayit.Caption = kayitno
End Sub
Private Sub onceki_Click()
If kayitno= 1 Then
MsgBox (“Zaten İlk Kayıttasınız”)
Else
Kayitno=kayıtno-1
Get #1, kayitno, alanlar
form1.ad = alanlar.ad
form1.soyad = alanlar.soyad
form1.telefon = alanlar.telefon
form1.adres = alanlar.adres
form1.sehir = alanlar.sehir
End if
Form1.ad.SetFocus
End Sub
Private Sub sonraki_Click()
Dim a as integer
a=LOF(1) / Len (alanlar)
If kayitno>= a Then
MsgBox (“Zaten Son Kayıttasınız”)
Else
Kayitno=kayıtno+1
Get #1, kayitno, alanlar
form1.ad = alanlar.ad
form1.soyad = alanlar.soyad
form1.telefon = alanlar.telefon
form1.adres = alanlar.adres
form1.sehir = alanlar.sehir
End if
Form1.ad.SetFocus
End Sub
Private Sub bul_Click()
Dim bul As Integer
bul = InputBox("Bulmak istediğiniz Kayit No yu giriniz")
kayitno = LOF(1) / Len(alanlar)
If bul <= kayitno Then
kayitno = bul
Get #1, kayitno, alanlar 'dosya ya çağırdığım bilgileri ekrana yazar
form1.ad = alanlar.ad
form1.soyad = alanlar.soyad
form1.telefon = alanlar.telefon
form1.adres = alanlar.adres
form1.sehir = alanlar.sehir
Else
MsgBox ("Böyle bir kayit yok")
End If
End Sub
Private Sub kayıtekle_Click()
kayitno = LOF(1) / Len(alanlar)
kayitno = kayitno + 1
form1.ad = " "
form1.soyad = " "
form1.telefon = " "
form1.adres = " "
form1.sehir = " "
form1.ad.SetFocus
End Sub
Private Sub iptal_Click()
Dim c
c = MsgBox("İptal etmek istiyormusunuz?", vbYesNo, "İptal Penceresi")
If c = vbYes Then
form1.ad = " "
form1.soyad = " "
form1.telefon = " "
form1.adres = " "
form1.sehir = " "
End If
ad.SetFocus
End Sub
Private Sub degistir_Click()
Dim c As Integer
If form1.ad <> alanlar.ad Or form1.soyad <> alanlar.soyad Or form1.telefon <> alanlar.telefon Or form1.adres <> alanlar.adres Or form1.sehir <> alanlar.sehir Then
c = MsgBox("Değişiklikler kaydedilsin mi ?", vbYesNo, "Değişiklik Penceresi")
If c = vbYes Then
alanlar.ad = form1.ad
alanlar.soyad = form1.soyad
alanlar.telefon = form1.telefon
alanlar.adres = form1.adres
alanlar.sehir = form1.sehir
Put #1, kayitno, alanlar
End If
End If
ad.SetFocus
End Sub
Private Sub sil_Click()
Dim silsayi, i, c
silsayi = LOF(1) / Len(alanlar)
For i = kayitno To silsayi - 1
Get #1, i + 1, alanlar
Put #1, i, alanlar
Next i
Open "oguz.tmp" For Random As #2 Len = Len(alanlar)
For i = 1 To silsayi - 1
Get #1, i, alanlar
Put #2, i, alanlar
Next i
Close #1
Close #2
FileCopy "oguz.tmp", "oguz.dat"
Kill "oguz.tmp"
c = MsgBox("Dosya silindi.")
Unload form1
Load form1
form1.Show
End Sub |