BilgiTeknoloji.net    
b i l g i   t e k n o l o j i   y a z ı l ı m

Ana Sayfa

Marjinal XML Access Pratik Uygulamalar Projeler Ekonometri Dilimiz Çetrefil İletişim
 

İ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


http://BilgiTeknoloji.net