|
İpuçlarına Devam
Bu ayki yazının büyük kısmı Visual Basic’te kod
yazımıyla ilgili. Bu yazıda, kod yazımıyla ilgili bazı sorularınıza cevap
bulabilir ve yordamların nasıl kullanılacağına dair bazı temel bilgilere
ulaşabilirsiniz. İlginç ipuçlarına da yer vermeyi ihmal etmedik yine.
YORDAMLAR VE GERÇEKLER
Yordamlar “Function” ve “Sub” türünde olabilir ve herbirinin mutlaka adı
vardır. Önce şu örnek yordam başlıklarına göz atın:
• Sub Sub1()
• Function işlev1() As Date
• Function işlev1()
• Function işlev1(Parametre) as Integer
• Sub Sub1(parametre1 As String, parametre2 As Date)
• Public Function F(Ad As String, ParamArray Dizi()) As Long
• Private Static Function StatikBirIşlev() As Boolean
• Sub SubYeni(Ad As String, Optional Tarih As Date=36861)
• Private Sub Command1_Click()
“Sub” yordamları mutlaka “End Sub” satırı ile, “Function” yordamları da “End
Function” satırı ile biter.
Private Sub MetinKutusu1_Click()
...
End Sub
ve
Function Degistir() as Boolean
...
End Function
gibi.
Örneklerde “Function” ve “Sub” deyimlerinden önce bazı tanımlamalar var. Bunlar
yordamlara bazı ek özellikler katarlar. Mesela başında “Private” deyimi olan
bir yordam, aktif olan modül sayfasının dışında bir yerde kullanılamaz. Ya da,
başında Static olan bir yordamın içindeki tüm değişkenler statik olarak
tanımlanmış olur.
Function yordamlarının asıl amaçlarından biri değer üretmek olduğu için başlık
satırının sonunda mutlaka “AS” deyimi ile bir tip belirtilir. Eğer tipi
belirtilmemiş bir işlev varsa bunun döndüreceği değer Variant (herhangi bir
değişken tipinde olabilen) türünde olur.
Bir de parametresiz işlevler vardır ki, tipi belirtilmiş olsa bile,
parametresiz bir işlevi isterseniz “Sub” yordamlar gibi
kullanabileceğinizi geçen aylarda da söylemiştik netekim.
Örneğin,
işlev1() as String
şeklinde tanımlı bir işlevi;
Call işlev1
ya da doğrudan
işlev1
şeklinde çalıştırmak mümkündür.
Herhangi bir yerden
bulduğunuz bir kod parçasını programınıza birkaç şekilde ekleme imkanınız var.
Şu kod parçası aktif dosyamızın bulunduğu yerdeki tüm dosyaları listeleyip mesaj
kutusunda gösteriyor:
Dim Dosyalar As String, Dosya As String,
Klasor as String
Klasor = CurrentProject.Path
If Right(Klasor,1)<>”\” Then Klasor= Klasor & "\"
Dosya = Dir(Klasor)
Dosyalar = "Bu klasördeki dosyalar:" & vbCr
Dim i As Integer
i = 0
Do While Dosya <> ""
If Dosya <> "." And Dosya <> ".." Then
i = i + 1
Dosyalar = Dosyalar & vbCr & i & ". " & Dosya
End If
Dosya = Dir
Loop
MsgBox Dosyalar
Bunu, var olan bir yordamın içine ekleyebilir ya da kendi oluşturacağınız yeni
bir yordamın içine koyabilirsiniz. Mesela bir düğmenin “Click”
(Tıklatıldığında) yordamı kısmına. Eğer elinize geçen bir kod parçasında “Sub”
ya da “Function” şeklinde yordam başlıkları varsa bunu kendi yordamınıza
eklemek için başlıklarını ve son satırlardaki “End..” kısımlarını
çıkarmalısınız. Veyahut, yordamı aynen kullanmalısınız.
DURUM ÇUBUĞUNDA MESAJ GÖSTERMEK
Uygulamalarımda diğer profesyonel programlar gibi durum çubuğunu kullanmak ne
iyi olurdu diyorsanız şu kısacık kodu deneyin:
Application.Echo True, "Durum çubuğunda görünen yazı."
MsgBox "Durum çubuğundaki yazıya bakın."
Application.Echo True
Bunu çalıştırınca Access’in durum çubuğunda (Status Bar) bir mesaj
görüntülenecek. Kullanıcının bekletileceği yerlerde “İşlem devam ediyor...” gibi
bir mesajı gösterebilirsiniz bu şekilde. İlk satırdaki “True” yerine “False”
yazarsanız, Access penceresi silik görünür. Böyle bir durumda, işlem sonunda
Echo’yu True ile çalıştırmayı ihmal etmeyin, yoksa işlem yapılabilse de, Access
ekranında pasif bir pencere görüntüsünden başka bir görüntü olmayacaktır.

DoCmd nesnesinin Echo adlı metodu da aynı işi yapabiliyor. Fakat Application
nesnesininkini kullanmamız öneriliyor.
DAHA KOLAY KAYIT SİLME
Geçen aylarda bu sayfalardan, kayıt silmek için ‘daha güzel kayıt silme’
başlığında bir kod örneği verdik. Gelgelelim aşağıdaki yeni işlevle daha kolay ve kısa bir şekilde kayıt silme
işlemi yapabilirsiniz.
On Error Resume Next
If Me.NewRecord Then
Me.Undo
ElseIf MsgBox("Kayıt silinsin mi?", vbYesNo) = vbYes Then
Me.Recordset.Delete
End If
Bu kodu, kayıt silme görevi üstlenecek bir düğmenin “Click” (Tıklatıldığında)
yordamındaki “Sub..” ile “End Sub” satırları arasında kalan kısma yazın.
ON ERROR GOTO 0
Hata gidermek için birçok yerde “ON ERROR RESUME NEXT” deyimi kullanılıyor. Hata
giderme pozisyonundan ayrılmak gerektiği durumlarda “ON ERROR GOTO 0” (sıfır ile bitiyor)
deyimini kullanmak gerekiyor
On Error Resume Next
‘Hataları yoksayıp sonraki komuta geç.
MsgBox 3 / 0
MsgBox "Sıfıra bölme hatasını geçti."
On Error GoTo 0
‘Hataları yoksayma.
MsgBox 3 / 0
‘Şimdi sıfıra bölme hatası oluşunca uyardı.
AH ŞU KISAYOL TUŞLARI!
Sonraki Kayıt Ctrl + Page Down
Önceki Kayıt Ctrl + Page Up
İlk Kayıt Ctrl + (Yukarı Ok)
Son Kayıt Ctrl + (Aşağı Ok)
Yeni Kayıt Ctrl + +
Kayıt Sil Ctrl + -
Önceki Kaydı Çoğalt Ctrl + ’
Bu bilgilere, yardım bülümünde “keyboard shortcuts” başlığını aratarak da
ulaşabilirsiniz.
FORM AÇIK MI?
Bir formun ya da raporun açık olup olmadığını bulmak için aşağıdaki kodları
kullanabilirsiniz.
If SysCmd(acSysCmdGetObjectState, acForm, "Form1") <> 0 Then
MsgBox "Form açık."
Else
MsgBox "Form kapalı."
End If
Örnek, Form1 adlı formun açık olup olmadığını araştırıyor. Raporlar için
“acForm” deyimini “acReport” olarak değiştirin.
DURUM ÇUBUĞUNDA İLERLEME ÇUBUĞU GÖSTERMEK
Access kendi işlemlerini yaparken bazan durum çubuğunda ilerleyen mavi çizgi
beliriyor. Bundan, işlemin ne kadarının bittiğini anlayabiliyoruz. Tabii, bunun
aynısını bizim kullanabilmemize de imkan var. Tablo1’deki kodu
çalıştırırsanız resimdeki gibi mavi ilerleme çubuğu çıkacak.
TABLO1:

acSysCmdInitMeter ile ilerleme başlatılıyor ve çubuğu ilerletmek için
acSysCmdUpdateMeter kullanılıyor. İşlem bitiminde acSysCmdClearStatus ile çubuğu
kaldırmalısınız.

Mavi çizgi ilerliyor...
PENCERELERİ BOYUTLANDIRMAK
Access Visual Basic’teki gibi formları kolayca boyutlandırıp taşımamıza
izin vermiyor. Bunun için MoveSize komutunu kullanmak gerekiyor. MoveSize ile bir formu belli bir
noktaya taşıyabilir ya da taşırken boyutlarını yeniden ayarlayabilirsiniz.
Şu komut aktif pencereyi sol üst köşeye taşır:
DoCmd.MoveSize 0, 0
Bu ise sol üste taşırken genişliğini 4000, yüksekliğini 2000 olarak ayarlar:
DoCmd.MoveSize 0, 0, 4000, 2000
Tüm parametreleri belirtmek zorunda değilsiniz:
DoCmd.MoveSize , 1000, , 1500
Bu kod sol ve genişlik değerlerini değiştirmeden, üst tarafı 1000 ve
genişliği 1500 olarak ayarlayacak.
Parametreler aşağıdaki şekilde kullanılıyor:
DoCmd.MoveSize Sol, Üst, Genişlik, Yükseklik
PAROLA KAYITLARINI GİZLİ GÖSTERMEK
Access'teki form ve raporlardaki metin kutularında şifreli metin kullanabilmek
için InputMask değerini "Password" yapmak yeterli oluyordu. Eğer kayıt
tablosunda da parola bilgilerini (*) işaretli olarak görmek istiyorsanız tahmin
ettiğiniz gibi veri alanının InputMask (Giriş Maskesi) değerini aynı şekilde
ayarlamalısınız.

Tabloyu tasarım görünümünde açıp parola alanının InputMask değerine "Password"
yazın.

Serkan Şahinoğlu
PC Magazine,
Aralık 2000
|