Reklamsız Forum İçin Tıklayınız. * FrmTR Sohbet Kontrol Panelinizde. * FrmTR'nin resim sitesi Resimci.Org yayında
Forum TR
Go Back   Forum TR > > >
FrmTR'ye Reklam Vermek İçin: [email protected]
Cevapla
 
Konu Araçları
Eski 13-12-06, 02:09   #1
adamus

Varsayılan Modul Nedİr?



MODUL NEDİR?
Bilgisayar iyi huylu makinadır. Ona anlayacağı şekilde emir verirseniz, emirlerinizi harfiyen yerine getirir.
Örnegin:
A ve B sayılarını karşılaştır, hangisinin büyük olduğunu bana söyle
Müşteri Bilgileri formunu aç
Bir ürünün alış fiyatı verilince satış fiyatını alış fiyatının 1.5 katı yap
Bu tip emirleri en esnek şekilde modul bölümünü kullanarak verebiliriz. Modulce konuşursanız bilgisayar sizin birçok dediğinizi rahatlıkla anlayacak ve dediklerinizi yapacaktır.

MODULCE NEDİR?
MS Access, modul bölümünde VBA (Visual Basic for Application) diye adlandırılan dili konuşur. Bu dil Visual Basic dili ile tamamen uyumludur. Yani MS Access içinde programlama yapacaksanız VBA adlı dili bilmeniz ve bu dili kullanarak isteklerinizi belirtmeniz gerekmektedir.

MODULLERLE NELER YAPILAMAZ?
Modulce normal hayatta kullandığımız dil gibidir. Türkçe'de birçok kelime vardır, Türkçe'nin gramer kuralları vardır. Sizin kelime hazineniz ne kadar geniş ise, gramer kurallarına ne kadar hakimseniz anlatmak istediklerinizi o derece rahat ifade edersiniz. Tabii aynı Türkçe bilgisine sahip insanlar, aynı şeyi anlatmak isteseler de çok farklı ifadeler kullanabilirler. Kimisi ifade zorluğu çekerken, kimisi derdini çok rahat anlatabilir. Yani insanların dili kullanma becerileri farklı olabilir ama sonuçta bu çalışmayla geliştirilebilen bir beceridir.
Sadede gelirsek modullerle neler yapılıp yapılamayacağı sizin VBA dilini kullanma becerinize bağlıdır. Kendinizi geliştirdikce ifade beceriniz artacak ve isteklerinizi bilgisayara çok daha rahat bir şekilde anlatabileceksiniz. Sizi sınırlayan tek şey yine kendinizsiniz.

MODULLER HAKKINDA BİLGİMİ NASIL GELİŞTİREBİLİRİM?
Her konuda olduğu gibi, bu konuda da bilginizi arttırmak istiyorsanız önce buna istekli olmanız, sonra da calışmanız gerekmektedir. Okumanız, araştırmanız, denemeler yapmanız. Herhalde Türkçe örneğini burada da kullanabiliriz.
VBA'nin gramerini ögrenmelisiniz: Komutlar ne şekilde verilir, söz dizimi nasıl olmalıdır, noktalama işaretlerini nasıl kullanmalıyım vs. gibi
VBA kelimelerini ögrenmelisiniz : Bu dilde hangi kelimeler vardır, hangisi ne manaya gelir. Nasıl bir dil öğrenirken sözlük kullanıyorsak, neyi ifade etmemiz gerektiğini bilirsek, bilgisayar dilleri için hazırlanmış kaynaklardan (sözlüklerden) gereken kelimeyi rahatlıkla bulabiliriz. Yani bütün kelimeleri (komutları) ezbere bilmemize gerek yoktur.
VBA ile ifade becerimizi geliştirmeliyiz: Nasıl edebi eserleri okudukca, kendimiz yazma denemeleri yaptıkca dili kullanma becerimiz artıyorsa, başkası tarafından yazılmıs kodları inceledikce, kendimiz denemeler yaptıkca VBA dilini kullanma becerimiz de gelişecektir.

ARTIK PRATİK YAPALIM
Artık pratik yapmanın zamanı geldi, değil mi?
Şimdi basit bir modul yazalım, sonra oluşturduğumuz bir formda, bir düğmeye basınca bu modul calışsın. (Form oluşturmayı ve forma bir duğme (Command Button) koymayı bildiğinizi farzediyorum.)
Modul bölümüne gelip Yeni (New) düğmesine tıklayın. Yeni bir modul sayfası açılacaktır. Büyük ihtimalle de ilk satırlarda şu ifadeleri göreceksiniz:
Option Compare Database
Option Explicit
Hemen bu ifadelerin altına şu satırları ekleyelim:
Public Function MerhabaDunya()

MsgBox ("Merhaba Dunya")

End Function
Bu modul çalışınca (aslında modul değil fonksiyon calışınca) ekrana "Merhaba Dunya" yazan bir mesaj penceresi çıkacaktır. Ama bu fonksiyonu nasıl çalıştıracağız. Önce modulümüzü kaydedelim (save). Module dilediğiniz ismi verebilirsiniz. Ben Denemeler adıyla kaydettim. Şimdi bir form oluşturup, forma bir komut düğmesi (Command Button) ekleyin. Bu düğmeye mouse ile çift tıklayınca özellikler (property) penceresi çıkacaktır. Olay (Event) bölümünde, Tıklatıldığında (On Click) bölümüne =MerhabaDunya() yazınız. En önde eşittir işareti, sonra fonksiyon adı, daha sonra da açma ve kapama parantezi.
Formu çalıstırdığımız vakit, bu düğmeye tıkladığımızda fonksiyonumuz çalışacak ve mesaj penceremiz ekrana gelecektir.
Bu örnek vazgeçilemeyen "ilk program" örneğidir. "Merhaba Dunya" ("Hello World") örneği ile, ne zaman yeni bir dil öğrenmeye başlarsanız karşılaşırsınız. Ben de geleneği bozmayayım dedim.

BURADA NELER OLDU?
Formların üzerine yerleştirilen her nesnenin (Text Box, Comba Box, Command Button vs.) birçok özelliği vardır. Rengi, boyu, kilosu gibi (tabii kilosu yoktur :-) Tamam kötü bir espriydi) Bir de bu nesneler çeşitli olaylar karşısında tepki verirler. Örneğimizde, düğmeye mouse ile tıklayınca bize tepki verdi ve mesaj penceresi göründü.
Biz nesnelerin hangi durumlarda, hangi tepkileri vermesi gerektiğini yukarıdaki örnekte de olduğu gibi kontrol edebiliyoruz. Önce modulümüzü (daha doğrusu fonksiyonumuzu) yazıyoruz. Sonra bu fonksiyonu bir nesnenin, bir olayına (event) eşitliyoruz. Eğer o nesne için, söz konusu olay oluşursa bizim fonksiyonumuz çalışıyor.
Eğer bu düğmeye hiç tıklanmasaydı bizim MerhabaDunya adlı fonksiyonumuz hiç çalışmayacaktı. Bu fonksiyonu başka bir olaya eşitleseydik, bu sefer de o olay oluşunca bizim fonksiyonumuz çalışacaktı. Örneğin Tıklatıldığında (On Click) bölümündeki =MerhabaDunya() ifadesini silip, Fare Taşındığında (On Mouse Move) olayı bölümüne =MerhabaDunya() yazarsak, form çalıştığında mouse oku, düğmemizin üstüne geldiğinde (düğmeye tıklamasak bile) fonksiyonumuz çalışacaktır.

SORUNUZ MU VAR?
Kafanızda bazı sorular oluşmuş olabilir. Ben oluşabileceğini tahmin ettiğim bazılarına cevap vereyim.
S.Bir fonksiyon birden fazla olaya eşitlenebilir mi?
C.Evet. Bir fonksiyon aynı nesnenin farklı olaylarına eşitlenebileceği gibi, farklı nesnelerin farklı olaylarına da eşitlenebilir. Bu olaylardan hangisi oluşursa oluşsun fonksiyonumuz çalışır.
S.Bir modul içine birden cok fonksiyon yazılabilir mi?
C.Evet. Aynı modul içine birçok fonksiyon yazılabilir. Yanlız dikkat etmeniz gereken bazı kurallar var. Fonksiyonunuzun biri bitince End Function ifadesini girmelisiniz ve yeni satıra geçip yeni fonksiyonunuzu yazmalısınız. Örnek bir modul şu şekilde olabilir:
Option Compare Database
Option Explicit

Public Function MerhabaDunya()

MsgBox ("Merhaba Dunya")

End Function

Public Function Mesaj02()

MsgBox ("Programimi begendiniz mi?")

End Function
S.Fonksiyonlar sadece form üzerindeki nesnelerle mi bağlantılı kullanılabilir?
C.Hayır. Fonksiyonları çok farklı şekillerde de kullanabiliyoruz. Örneğin bir fonksiyon içinden bir başka fonksiyonu çalıştırabilirsiniz. Bir makro kullanarak bir fonksiyonu çalıştırabilirsiniz. Formun üzerindeki nesneler haricinde, formun kendi olaylarına da bir fonksiyonu eşitleyebilirsiniz. Aslında formun kendisi de bir komut düğmesi gibi bir nesnedir ve çeşitli olaylara çeşitli tepkiler verebilir. Örneğin form kapatılınca bir fonksiyonun çalışmasını sağlayabilirsiniz. Raporlarda (Reports) da fonksiyonlar kullanılabilir. Bir modulü herhangi bir nesneden bağımsız çalıştırmanız da mümkündür.
S.Nesnelerin olayları (event) hakkında bilgi verir misiniz?
C.Her nesnenin tipine göre tepki verdiği olaylar (event) vardır. Düğmeler, tıklanınca; metin kutuları (Text Box), bilgi girilince tepki verebilirler. Tabii bir düğmeye bilgi girmemiz mümkün olmadığı için, düğmelerin Güncelleştirme Sonrasında (After Update) diye bir olayı yoktur. (Cem Yılmaz der ya "Arkadaş senin olayın ne?"; bizim de bu soruyu nesnelere sormamız lazım, yani sen hangi olaylara tepki verebiliyorsun?) Form üzerindeki bir nesnenin Özellikler (Property) penceresini açtık mı, olay (event) bölümünde o nesnenin hangi olaylara tepki verdiğini görebiliriz.
Bazı olaylar hakkında kısa bilgi:
Güncelleştirme Sonrasında (After Update) :
Bir nesnenin (örn. metin kutusu) bilgisi değişince oluşur

Tıklatıldığında (On Click ) :
Bir nesneye mouse ile tek tıklanınca oluşur.

Çift Tıklatıldığında (On Dbl Click):
Bir nesneye mouse ile çift tıklanınca oluşur.

Açıldığında (On Open ):
Bir form ya da rapor açılmak istenince oluşur.

Kapandığında (On Close ):
Bir form ya da rapor kapatılınca oluşur.

Etkinleştiğinde (On Activate ):
Bir form ya da rapor etkinleşince (yani onun üzerinde çalışmaya başladıysak) oluşur.
Aynı anda birkaç form veya rapor açık olabilir ama sadece birisi etkin (active) olabilir. O da üzerinde çalıştığımız form ya da rapordur.

Etkin Durumdan Çıktığında (On Deactivate):
Üzerinde çalıştığımız form ya da raporu bırakıp başka bir form ya da raporla çalışmaya başlarsak, ilk çalıştığımız form ya da rapor etkinliğini kaybeder. O zaman bu olay oluşur.

Zaman Dolduğunda (On Timer):
SüreÖlçer Aralığı (Time Interval) bölümünde belirtilen süre dolunca bu olay oluşur. Süreölçer Aralığı normalde 0 (sıfır) değerine sahiptir. Yani aktif değildir. Buraya milisaniye cinsinden süre girilir. Bu süre her dolduğunda Zaman Dolduğunda (On Timer) olayı oluşur. Örneğin SüreÖlçer Aralığı (Time Interval) bölümüne 2000 yazarsak her 2000 milisaniyede (2 saniyede) bir, Zaman Dolduğunda (On Timer) bölümüne yazdığımız fonksiyon çalışır.

DİĞER ÖRNEKLERE GEÇELİM
Şu ana kadar sadece msgbox() komutunu gördük. Bu komut verdiğimiz bir ifadeyi mesaj penceresi içinde ekrana getirmektedir. Fonksiyonumuz içinde farklı komutlar kullanarak, daha başka işlemler yaptırmamız mümkündür. Yeni komutlara geçmeden önce bir hatırlatma yapalım.
Komutları her zaman aşağıda gördüğümüz yapıdaki fonksiyonların içine yazacağız.
FonksiyonAdi bölümüne dilediğiniz ismi veriniz ama isim verirken boşluk karakterini ve Türkçe harfleri (ğ, ü, ş, ı, ö, ç) kullanmayınız.
Üç nokta (. . .) görünen bölüme komutlarımızı yazacağız.
Bu fonksiyonu çalıştırmak için ilk hazırladığımız formdaki komut düğmesinin (Command Button) Tıklatıldığında (On click) olayını (event) fonksiyonumuza eşitleyeceğiz. Yani bu kısma
=FonksiyonAdi()

yazacağız. (FonksiyonAdi bölümünde sizin fonksiyonunuza verdiğiniz isim olmalı). Daha sonra fonksiyonunuzu başka olaylara da eşitleyip denemeler yapabilirsiniz.

Örnek Yapı:

Public Function FonksiyonAdi()

. . .

End Function

DİĞER ÖRNEKLER
Örnek 1: Bir başka formu açan fonksiyon. Bu fonksiyonda tırnak ' ile başlayan satır işleme girmez, bu satır sadece modulumuz içine notlar yazmak içindir. Tırnak işareti kullanarak modulünüz içine istediğiniz kadar açıklama yazabilirsiniz.

Public Function FormAcma()

'FormAdi isimli formu ac
DoCmd.OpenForm "FormAdi"

End Function
Örnek 2: Verdiğimiz iki sayıyı karşılaştıran fonksiyon
Bu örnekte iki tane (A ve B adlı) değişken tanımlanmaktadır.
Bu değişkenler Integer (Tam sayı tipindedir)
Değişken tanımlarken şu yapı kullanılır:
Dim DegiskenAdi As DegiskenTipi

Public Function SayilariKarsilastir()
Dim A As Integer
Dim B As Integer

A = 50
B = 100

If A > B Then
MsgBox ("A, B'den buyuktur")
Else
MsgBox ("A, B'den buyuk degildir")
End If

End Function
Örnek 3: Verdiğimiz iki ifadeyi birleştiren fonksiyon
Bu örnekte string (metin) tipinde değişkenler tanımlanmıştır.
Değişkenler saklayacakları bilginin tipine göre ayrılırlar.
Tam Sayı, Kesirli Sayı, Tarih/Zaman, Metin gibi farklı bilgileri kaydetmek için farklı değişken tipleri kullanırız.

Public Function MetinleriBirlestir()
Dim Ad As String
Dim Soyad As String

Ad = "Ahmet"
Soyad = "Caliskan"

msgbox(Ad & Soyad)
msgbox("Benim adim " & Ad & Soyad)
msgbox("Benim adim " & Ad & " " & Soyad)

End Function

ŞİMDİLİK BİTİRELİM
MS Access ile ilgilenen ve modulleri kullanmaya başlamak isteyenler için başlangıç seviyesinde bilgi vermeyi amaçladım. Umarım faydalı olmuştur. Eğer ilgi görürse daha ileri seviyeleri içeren notlar hazırlayıp ilgilenenlere yardımcı olmaya çalışacağım. Aldığım tepkilere göre de notlarımı yönlendireceğim.

Merhaba,
Buradaki notlar Access ve Excel'de nasıl fonksiyon oluşturulabileceğini bir örnek yardımıyla anlatmaktadır. Örnek olarak kullanılan fonksiyon, rakkamla yazılan sayıyı metin haline dönüştürür ve sonucu fonksiyonun değeri olarak döndürür.
Örnegin:
A=Sayiyi_Metne_Cevir(342865)
seklinde bir eşitlik yazarsak A'nin değeri "üçyüzkırkikibinsekizyüzaltmışbeş" olur.
Bu fonksiyonu, hem fonksiyon yazımıyla ilgilenenlere bir örnek olsun, hem de birçok yerde kullanabileceğimiz pratik bir çözüm olsun diye veriyorum. Bu fonksiyonu Excel'de ve Access'de kullanmamız mümkündür. Burada yazılanlar daha önce Excel ve Access kullananların rahat uygulayabileceği düzeydedir. Eğer bu programları fazla bilmiyorsanız bile talimatları takip ederseniz yapabilirsiniz.

FONKSIYON HAKKINDA BİLGİ
Bu fonksiyon, VBA (Visual Basic for Applications) adı verilen Visual Basic'le tamamen uyumlu bir programlama dili kullanılarak yazılmıştır. Şu an 15 haneli sayıları sorunsuz olarak metin haline dönüştürebilmektedir. Algoritma olarak sonsuz büyüklükte sayıları metne çevirmesi mümkündür. Bunun için döngü içindeki select case bölümüne yeni satırlar eklemelisiniz.
Örneğin:
Case 7: S_Metin = UcHane(S_Rakkam Mod 1000) & "binkatrilyon" & S_Metin
gibi.
Fonksiyonun şu an 15 haneyle sınırlı olmasının sebebi Access ve Excel'in 15 haneden büyük sayıları yuvarlamadan kaydedememesidir. Access ve Excel bu meseleyi hallederse fonksiyonu daha büyük sayılar için de kullanabilirsiniz.
Fonksiyon icinde mod komutu kullanılmaktadır. Mod komutu sadece long tipindeki degiskenlerle (2 milyardan küçük tam sayılarla) çalıştığı için sayımız, 9 haneli sayılara bölünerek işleme sokulmaktadır.
Fonksiyon iç hesaplamalarında kullanmak için UcHane adında ikinci bir fonksiyon da kullanmaktadır. Bu fonksiyon kendisine verilen üç haneli sayıyı metne çevirir. Yani burada aslında iki tane fonksiyon vardır.

FONKSIYONUN EXCEL'DE KULLANIMI
a) Excel'i açın.
b) Menüden Tools -> Makro -> Visual Basic Editor seçeneğini seçin. Visual Basic Editor sayfası açılacaktır.
c) Boş bir modul sayfası eklemek için menuden Insert -> Modul seçeneğini seçin.
d) Açılan yeni modul sayfasının ilk satırında büyük ihtimalle Option Explicit ifadesi yazıyor olacaktır. Bu ifadenin altına aşağıda verilen fonksiyonları yazın.
e) Menuden File -> Save seçilerek veya üzerinde disket resmi olan save (kaydet) düğmesine basarak şu ana kadar yaptıklarınızı kaydediniz. Visual Basic Editor penceresini kapatınız.
f) Excel sheet'ine (sayfasına) dönelim ve bir örnek yapalım. A1 kutusuna 7436326 yazınız. A2 kutusuna da =Sayiyi_Metne_Cevir(A1) yazınız. A2 kutusunda yedimilyondörtyuzotuzaltibinüçyüzyirmialti yazdığını göreceksiniz.
g) Bu fonksiyonu şu şekilde de kullanabilirsiniz. Boş bir kutu (Cell) seçiliyken menuden Insert -> Function seçeneğini seçiniz. Açılan pencerenin Function Category bölümünden User Defined'ı seçiniz. Function Name bölümünde bizim yazdığımız fonksiyonlar görünecektir. Sayiyi_Metne_Cevir'in üstüne çift tıklayınız veya seçip OK düğmesine tıklayınız. Açılan pencerede Sayi bölümüne A1 yazınız veya mouse'la, Sayi bilgisini alacağınız kutuya tıklayınız. OK düğmesine tıklayınız.

FONKSİYONUN ACCESS'DE KULLANIMI
a) Boş bir Access dosyası açınız veya bu fonksiyonu kullanmayı düşündüğünüz Access dosyasını (mdb dosyasını) açınız.
b) Modul bölümüne geçiniz ve New (yeni) tuşuna basınız. Veya menuden Insert -> Module seçeneğini seçiniz. Yeni bir modul sayfası açılacaktır.
c) Yeni modul sayfasında büyük ihtimalle
Option Compare Database
Option Explicit
ifadelerini göreceksiniz. Bunların altına aşağıdaki fonksiyonları yazınız.
d) Menuden File -> Save (kaydet) seçeneğini seçerek veya üzerinde disket resmi olan save (kaydet) ikonuna basarak yazdığınız modulu kaydediniz. Fonksiyonumuz artık kullanıma hazırdır. Modul penceresini kapatabilirsiniz.
e) Form içinde bunu şu şekilde kullanabiliriz. Yeni bir form oluşturalım. Bu forma iki tane text box (metin kutusu) koyalım. Birinci metin kutusunun üzerine çift tıklayarak property (özellikler) penceresini açalım. Bu pencerenin other (diğer) sayfasındaki Name (ad) bölümüne SayiRakkamla yazarak bu kutunun ismini SayiRakkamla yapmış olalım.
İkinci kutuya çift tıklayarak bu kutunun property (özellikler) penceresini açalım. Bu pencerenin Data (veri) sayfasındaki Control Source (veri kaynağı) bölümüne =Sayiyi_Metne_Cevir(SayiRakkamla) yazalım. Form çalısınca birinci kutuya yazdığımız sayı metine dönüştürülecek ve sonuç ikinci kutuda görünecektir.
Aynı mantıkla bu fonksiyonu raporlarda, diğer modullerde, sorgularda kullanabilirsiniz.

FONKSİYONLARIN METNI
Burada gördüğünüz kodları yukarıda belirtilen bölümlere yazınız. Bu kodlar Access 2000 ve Excel 2000'de denenmiştir, düzgün çalışmaktadır.
Public Function Sayiyi_Metne_Cevir(Sayi As Double) As String
On Error GoTo Hata_Olustu_Satiri
'Bu fonksiyon rakkam kullanilarak yazilan sayiyi metne cevirir.
'Sonuc Sayiyi_Metne_Cevir fonksiyonunun degeri olarak geri doner.
'Bu fonksiyon kesirli sayilari, yuvarladiktan sonra isleme sokar.

Dim S_Metin As String, Isaret As String
Dim S_Rakkam As Double, M_Rakkam As Double
Dim Sayac As Byte

'Fonksiyon tam sayilar icin calistigindan
'Sayi yuvarlanarak tam sayiya cevriliyor
Sayi = Round(Sayi)

Select Case Sayi
Case 0:
'Sayi sifir. Fonksiyon degerini sifir dondur, fonksiyondan cik
Sayiyi_Metne_Cevir = "sıfır"
GoTo Cikis_Satiri
Case Is < 0:
'Sayi negatif. Isareti degerini eksi yap. Sayiyi pozitife cevir, isleme devam et
Isaret = "eksi"
Sayi = -1 * Sayi
Case Is > 0:
'Sayi pozitif. Isleme devam et
Isaret = ""
End Select

'Islemlerde mod fonksiyonu kullanilacaginda overflow u engellemek icin
'Sayi 9 haneli sayilara bolunerek isleme sokuluyor
S_Rakkam = Sayi - 1000000000 * Round(0.000000001 * Sayi, 0)
If S_Rakkam < 0 Then
S_Rakkam = S_Rakkam + 1000000000
End If
M_Rakkam = S_Rakkam

'Donguye baslamadan once Sayac degerini 1'e esitle
'Sayac, sagdan itibaren kacinci 3 hanenin isleme girdigini gosterir.
Sayac = 1

Do While Sayi > 0
If (S_Rakkam Mod 1000) > 0 Then
Select Case Sayac
Case 1: S_Metin = UcHane(S_Rakkam Mod 1000)
Case 2:
'Binler bolumunde ozel bir durum var. Bu uc hane 001 seklinde olursa
'birbin ifadesi kullanilmadigi icin bu durumda sadece bin yazdiracagiz
If (S_Rakkam Mod 1000) = 1 Then
S_Metin = "bin" & S_Metin
Else
S_Metin = UcHane(S_Rakkam Mod 1000) & "bin" & S_Metin
End If
Case 3: S_Metin = UcHane(S_Rakkam Mod 1000) & "milyon" & S_Metin
Case 4: S_Metin = UcHane(S_Rakkam Mod 1000) & "milyar" & S_Metin
Case 5: S_Metin = UcHane(S_Rakkam Mod 1000) & "trilyon" & S_Metin
Case 6: S_Metin = UcHane(S_Rakkam Mod 1000) & "katrilyon" & S_Metin
'Bu bolumu ayni mantikla devam ettitmek mumkun ama Access
'15 haneden buyuk sayilarda yuvarlama yapacagi icin sonuc dogru olmaz
'Bu bolum algoritma olarak dogrudur.
Case Else
End Select
End If

'Isi biten sagdaki uc hane siliniyor
S_Rakkam = (S_Rakkam - (S_Rakkam Mod 1000)) / 1000

'Eger sag taraftaki dokuz hanenin islemi bittiyse
'sonraki dokuz hane S_Rakkam degerine esitleniyor
If Sayac Mod 3 = 0 Then
Sayi = (Sayi - M_Rakkam) / 1000000000
S_Rakkam = Sayi - 1000000000 * Round(0.000000001 * Sayi, 0)
If S_Rakkam < 0 Then
S_Rakkam = S_Rakkam + 1000000000
End If
M_Rakkam = S_Rakkam
End If

Sayac = Sayac + 1
Loop

Sayiyi_Metne_Cevir = Isaret & S_Metin

Cikis_Satiri:
Exit Function

Hata_Olustu_Satiri:
MsgBox Error$
Resume Cikis_Satiri

End Function


Public Function UcHane(UcHaneSayi As Integer) As String
On Error GoTo Hata_Olustu_Satiri
'Bu fonksiyon rakkam kullanilarak yazilan 3 haneli sayiyi
'metne cevirir. Sonuc UcHane fonksiyonunun degeri
'olarak geri doner
Dim UcHaneMetin As String

Select Case UcHaneSayi Mod 10
Case 1: UcHaneMetin = "bir"
Case 2: UcHaneMetin = "iki"
Case 3: UcHaneMetin = "üç"
Case 4: UcHaneMetin = "dört"
Case 5: UcHaneMetin = "beş"
Case 6: UcHaneMetin = "altı"
Case 7: UcHaneMetin = "yedi"
Case 8: UcHaneMetin = "sekiz"
Case 9: UcHaneMetin = "dokuz"
Case Else
End Select

'Sagdaki rakkam atiliyor. Sayi iki haneye dusuyor.
UcHaneSayi = (UcHaneSayi - (UcHaneSayi Mod 10)) / 10

Select Case UcHaneSayi Mod 10
Case 1: UcHaneMetin = "on" & UcHaneMetin
Case 2: UcHaneMetin = "yirmi" & UcHaneMetin
Case 3: UcHaneMetin = "otuz" & UcHaneMetin
Case 4: UcHaneMetin = "kırk" & UcHaneMetin
Case 5: UcHaneMetin = "elli" & UcHaneMetin
Case 6: UcHaneMetin = "altmış" & UcHaneMetin
Case 7: UcHaneMetin = "yetmiş" & UcHaneMetin
Case 8: UcHaneMetin = "seksen" & UcHaneMetin
Case 9: UcHaneMetin = "doksan" & UcHaneMetin
Case Else
End Select

'Sagdaki rakkam atiliyor. Sayi bir haneye dusuyor.
UcHaneSayi = (UcHaneSayi - (UcHaneSayi Mod 10)) / 10

Select Case UcHaneSayi
Case 1: UcHaneMetin = "yüz" & UcHaneMetin
Case 2: UcHaneMetin = "ikiyüz" & UcHaneMetin
Case 3: UcHaneMetin = "üçyüz" & UcHaneMetin
Case 4: UcHaneMetin = "dörtyüz" & UcHaneMetin
Case 5: UcHaneMetin = "besyüz" & UcHaneMetin
Case 6: UcHaneMetin = "altıyüz" & UcHaneMetin
Case 7: UcHaneMetin = "yediyüz" & UcHaneMetin
Case 8: UcHaneMetin = "sekizyüz" & UcHaneMetin
Case 9: UcHaneMetin = "dokuzyüz" & UcHaneMetin
Case Else
End Select

UcHane = UcHaneMetin

Cikis_Satiri:
Exit Function

Hata_Olustu_Satiri:
MsgBox Error$
Resume Cikis_Satiri

End Function

Merhaba,
Bu bölümde yer alan notlarda, MS Access (97 & 2000) uygulamalarınız için kendi menülerinizi nasıl oluşturabileceğiniz anlatılmıştır. Bu sayede formlarınızı, raporlarınızı, kodlarınızı vb. menüden seçerek kullanabilirsiniz. (Access 95 kullananlar menüden Tools -> Add Ins -> Menu Builder bölümünü kullanabilirler)

MENU ÇUBUĞU OLUŞTURMA
a) Menu çubuğu oluşturmak için varolan menüden View -> Toolbars -> Customize... seçilir veya menünün üstüne gelip mouse sağ tuşa tıklanır, açılan menüden Customizeseçilir.
b) Customize penceresi açılacaktır. Bu pencerenin Toolbars sayfasındaki New düğmesine basılarak yeni bir menü çubuğu oluşturmaya başlanır. (Aşağıdaki işlemler yapılırken Customize penceresi sürekli açık kalacaktır, bunu unutmayın)
c) Çıkan pencereye oluşturacağınız toolbar için bir isim yazılıp OK düğmesine basılır. (Örneğin BenimMenum yazınız)
d) Ekranda yeni, boş bir menü çubuğu görülecektir. Bunu tutup, mouse’la sürükleyerek default menünün (her zaman kullandığımız menünün) altına bırakalım. Böylece onunla daha rahat çalışabiliriz.
e) Yine Customize penceresinin Toolbars sayfasına dönelim. Menü çubuğumuzun özelliklerini görmek için propertydüğmesine basalım.
i) En üste toolbar’ımızın adı yazmakta
ii) Type bölümünü menu bar yapalım. (Bu kısımdan, popup menu ve toolbar da aynı yöntemle yapılabilmektedir. Biz şimdilik menu yapmayı öğreniyoruz ama diğerlerinin de bundan bir farkı yok)
iii) Allow Docking bölümünden menünüzün ne şekilde durabileceğini sınırlandırıyoruz. (Yanaşma izinleri)
(a) Allow Any - Menümüz ekranın her köşesine tutturulabilir. Yani üst ve alt kenara tutturulsanız yatay, sol ve sağ kenara tutturulsanız dikey durur.
(b) Can’t Change - Menümüz bulunduğu doğrultuda kalır. (Örneğin dik duruyorsa, kullanım anında yatay menü yapılamaz)
(c) No vertical - Menümüzü dikey menu yapamayız (yani ekranın sol ve sağ yanlarına dikey olarak tutturamayız)
(d) No Horizantal - Menümüzü yatay menu yapamayız
iv) Diğer özellikler
(a) Show on Toolbars menu – Menümüzün ismi toolbars menüsünde gözükür. Yani mouse sağ tuşla menülere tıkladığımızda çıkan listede görünür
(b) Allow Customizing – Menüde değişiklik yapma izni
(c) Allow Resizing – Menünün boyutunu değiştirme izni
(d) Allow Moving – Menüyü hareket ettirme izni
(e) Allow Showing/Hiding – Menüyü gizleme – gösterme izni
Kutular işaretli ise sözü edilen izin verilmiştir, işaretli değilse izin verilmemistir.
Customize penceresinin Toolbars sayfasındaki listede, menümüzün adının yanındaki kutu işaretli ise menümüz gözükür, işaretli değil ise menumuz gözükmez.

MENU ÇUBUĞUNA ALT MENÜLERİ VE KOMUTLARI YERLEŞTİRME
Bir önceki bölümde boş menu çubuğunu nasıl oluşturacağımızı ve hangi özelliklerini nasıl değiştireceğimizi gördük. Şimdi boş menu çubuğumuza alt menuleri ve komutları nasıl yerleştireceğimizi göreceğiz. Önce şeklen menümüzü bitirip, bir sonraki bölümde de çalıştıracağı makro ve fonksiyonlarla eşleştireceğiz.
a) Customize penceresindeki Commands bölümüne geçelim
b) Alt menü oluşturmak için (yani tıklandığında birçok komutun gözükeceği menu grubu) Categories bölümünün en altında yer alan New Menuseçeneğini seçelim.
c) Commands bölümünde görünen New Menu satırını mouse’la tutup menümüzün üstüne bırakalım. Bu hareketi birkaç defa yapıp menümüze birkaç adet alt menu yerleştirelim. (Alt menu içine başka alt menu yerleştirmek de mümkündür)
d) Şimdi sıra geldi komutları yerleştirmeye. Categories bölümünden File’ı seçelim. Commands bölümünde gözüken Custom (en üstte) satırını tutup menümüzde uygun bölümlere yerleştirelim. Genelde Custom’lar Alt menüler içine yerleştirilir. Bu işlemi gerektiği kadar tekrarlayalım.
e) Menünün iskeletini oluşturduk. Şimdi, menümüzde yer alan alt menu ve komutların özelliklerini değiştirelim. Bir alt menu veya komutun (Custom) üzerine mouse sağ tuş ile tıklayalım.
i) Name bölümüne görünecek ismi yazalım
ii) Change Button Image bölümünden, istiyorsak komut için resim seçelim
iii) Menümüzde birçok komut varsa Begin a Group ile komutları gruplandıralım. Bunun için yeni grubun başlayacağı komut mouse sağ tuş ile seçilip, Begin a Grouptıklanır.
Artık menu çubuğumuz, menümüzde yer alacak alt menüler ve komutlar hazır.
Not : Categories ve Commands bölümünde yer alan hazır komutları da menümüze yerleştirebiliriz. Örneğin Categories’den File bölümünü, Commands’den Print...komutunu seçip bunu menümüze yerleştirebiliriz.

MENÜ KOMUTLARINI MAKRO VE FONKSİYONLARLA EŞLEŞTİRME
Şimdilik menümüz hazır ama menüde yer alan komutlara basınca şu an hiçbir işlem yapmayacaktır çünkü menu komutlarımızı herhangi bir makro veya fonksiyonla eşleştirmedik. Bu işlemi yapmak icin:
a) Menümüzden bir komuta mouse sağ tuş ile tıklanır. Açılan pencereden property bölümü seçilir.
b) On Action bölümüne çalıştırmak istediğimiz Macro’nun adı yazılır. Örneğin bir formu açan makronun adını yazabiliriz.
c) Macro değil de bir function çalıştırılacaksa =fonksiyonAdi() yazılır. Eğer fonksiyonumuz parametreler alıyorsa, parametreler arasına virgul (,) konur. Örneğin:
=FormAc(“MusterilerFormu”,”KayitEklemeModu”)
Bütün eşleştirmeler yapıldıktan sonra OK düğmelerine basılarak bütün pencereler kapatılır. Menümüz kullanıma hazırdır.
Tabii bu bölümü iyi kullanabilmeniz için makro veya modul kullanımını bilmeniz lazım. Ben çok kısa olarak bir formu açan makroyu nasıl oluşturabileceğinizi anlatayım:
i) Macro bölümüne geçilir
ii) New düğmesine basılarak yeni macro sayfası açılır.
iii) Action bölümünde kullanabileceğiniz komutlar yer almaktadır. Buradan OpenForm seçilir.
iv) Aşağıda yer alan Form Name bölümüne açılmasını istediğimiz formun adı yazılır veya listeden seçilir.
v) Macro kaydedilip çıkılır.
Artık menü komutlarımızın On Action bölümünde bu makroyu kullanabiliriz. Aynı şekilde report açan makro komutuna da bakınız. Macro kullanımı oldukça basittir, kolay çözebileceğinizi düşünüyorum. Modül kullanımı için, eğer bu konuda hiç bilginiz yok ise MS Access’de Programlamaya Giriş başlıklı yazıya bakabilirsiniz.

MENUYU NERELERDE, NASIL KULLANABİLİRİM?
a) Eğer uygulamanız açıldığında oluşturduğunuz menünün gözükmesini istiyorsanız
i) Menuden Tools -> Startup 'ı seçiniz.
ii) Menu Bar bölümüne kendi menünüzün adını yazınız.
Bundan sonra uygulamanız açıldığında sizin menünüz gözükecektir. (Not: Access’i eski halde açmak için uygulamanızı (mdb dosyanızı) açarken shift tuşuna basınız, açılana kadar parmağınızı kaldırmayınız)
b) Bir form açıldığı vakit menünüzün gözükmesini istiyorsanız.
i) Formunuzu seçip, design düğmesine basınız. Yani tasarım halini açınız.
ii) Form nesnesi seçiliyken (yani formunuz açıldığında başka hiçbir nesneyi seçmemişken) menüden View -> Property ’i seçiniz.
iii) Açılan pencerenin Other sayfasına geçiniz, Menubar bölümüne menünüzün adını yazınız.
Bundan sonra bu form açılınca formunuzla birlikte menünüzde gözükecektir.
Menüler hakkında diyeceklerim bu kadar. Hepinize kolay gelsin.
Merhaba,
Bu bölümde yer alan notlarda, Access uygulamanıza daha profesyonel bir görünüş vermek için Startup (Başlangıç) ayarlarını nasıl kullanabileceğinizi anlatacağım. Bu sayede, geliştirdiğiniz Access uygulamasını kullanan kullanıcıya, profesyonel bir uygulama kullandığını hissettirecek, arka planda çalışan Access’in varlığını hissettirmeyeceksiniz.

STARTUP (BAŞLANGIÇ) AYARLARI NEREDEN DEĞİŞTİRİLİR?
Startup (Başlangıç) ayarları, menüden Tools -> Startup (Araçlar ->Başlangıç) bölümünden yapılır. Bu bölümü seçince Startup (Başlangıç) penceresi açılır ve bu pencereden başlangıç ayarlarını yapabiliriz.

STARTUP (BAŞLANGIÇ) BÖLÜMÜNDEN HANGİ AYARLAR YAPILABİLİR?
a) Uygulama başlığı
Access uygulamanızı açtığınız zaman, pencere başlık çubuğunda (pencerenin üst kenarındaki renkli bar) Microsoft Access yazar. Burada sizin verdiğiniz uygulama isminin görünmesini istiyorsanız Application Title (Uygulama Başlığı) bölümüne uygulamanıza verdiğiniz ismi yazınız.
b) Uygulama Ikonu
Yine pencere başlık çubuğunda, uygulama başlığının solunda Access’in ikonu olan anahtar resmi görünmektedir. Ama siz bu anahtar resmi yerine, uygulamanız için kendi oluşturduğunuz resmin (ikonun) görünmesini istiyorsanız, önce Paint gibi bir programla bmp formatında resminizi oluşturup, kaydediniz. Sonra Application Icon (Uygulama Simgesi) bölümüne dizini ile birlikte bmp dosyanızı yazınız. (Örn. C:\Resimler\Resim1.bmp gibi)
c) Menu Seçimi
Uygulamanız başladığı zaman, Access’in default (varsayılan) menüsü yerine kendi tasarladığınız menünün görünmesini istiyorsanız Menu Bar (Menu Çubuğu) bölümüne kendi oluşturduğunuz menünün adını yazınız.
Kendi menünüzü nasıl oluşturabileceğinizi MS Access'de menü oluşturma başlıklı yazıdan öğrenebilirsiniz.
d) Uygulama başlayınca açılacak form
Uygulamanız başlar başlamaz bir formun otomatik olarak açılmasını istiyorsanız Display Form (Görüntülenecek Form) bölümüne, uygulamanız başladığında görünmesini istediğiniz formun adını yazınız.
e) Veritabanı penceresini saklama
Uygulamanız açıldığı vakit (kullanıcı Access ile çalıştığını fark etmesin ya da kontrolünüz dışında hareket etmesin diye) veritabanı penceresinin (Table, Form, Report vs.lerin göründüğü Ana Access penceresinin) görünmesini istemeyebilirsiniz. Bu pencereyi saklamak icin Display Database Windows (Veritabanı Penceresini Görüntüle) bölümünün check işaretini kaldırınız.
f) Status bar’ı (durum çubuğunu) saklama
Access penceresinin alt kenarında yer alan ve bazı mesajları görmemizi sağlayan Status Bar’ın görünmesini istemiyorsanız Display Status Bar (Durum Çubuğunu Görüntüle) bölümünün check işaretini kaldırınız.
g) Shortcut menu bar (Kısayol menu çubuğu) seçimi
Birçok bölümde mouse sağ tuşa bastığımız zaman bir kısayol menusu çıkmaktadır. Bu menünün, Access’in default (varsayılan) menüsü değil de, sizin hazırladığınız menu olmasını istiyorsanız Shortcut Menu Bar (Kısayol Menu Çubuğu) bölümüne kendi shortcut menünüzün adını yazınız.
Kısayol Menüsü oluşturmanın, Menu Çubuğu oluşturmaktan hiçbir farkı yoktur. Sadece oluşturduğunuz menüyü, Menu Bar olarak değil de Popup olarak tanımlayacaksınız. Yine yukarıda sözünü ettiğim MS Access'de menü oluşturma başlıklı notlara bakabilirsiniz.
h) Diğer seçenekler
Ayarlayabileceğimiz diğer seçenekler :
Allow Full Menu (Tam Menü İzni) Sınırlı menü ya da tam menü kullanmanızı sağlar. Sınırlı menüde bazı menü komutları yer almaz.
Allow Default Shortcut Menu (Varsayılan Kısayol Menuleri İzni) Çeşitli yerlerde gözüken kısayol menülerinin gözüküp, gözükmeyeceğini ayarlar. Sizin tanımladığınız kısayol menülerini etkilemez
Allow Built-in Toolbars (Yerleşik Arac Çubukları İzni) Çeşitli yerlerde görünen araç çubuklarının görünüp, görünmeyeceğini ayarlar. Örneğin bir rapor açılğında Access'in rapor menüsünün görünmesini istemiyorsanız bu seçeneği işaretlemeyiniz.
Allow Toolbar/Menu Changes (Araç Çubuğu/Menü Değişiklikleri İzni) Uygulama başlatıldıktan sonra menü ve araç çubuklarının değiştirilip değiştirilemeyeceğini ayarlar.

Advanced (Gelişmiş) düğmesine Tıklayınca Gözüken Seçenekler
Use Access Special Keys (Access Özel Tuşlarını Kullan) Access kısayol tuşlarının kullanılıp, kullanılmayacağını ayarlarsınız. (Genelde Ctrl+Harf şeklinde kullanılan kısayol tuşları)

EK BİLGİ
a) Eğer Access uygulamanızı başlattığınız zaman, uygulama açılmadan önce gözüken Access panelini görmek istemiyorsanız:
i) Paint ile bir bmp dosya hazırlayınız
ii)Bu bmp dosyasina Access uygulamanızla aynı adı veriniz. Örneğin Access uygulamanızın adı Uygulama.mdb ise Uygulama.bmp olarak kaydediniz.
iii) Bu bmp dosyasını uygulamanızın olduğu dizine kopyalayınız.
Bundan sonra uygulamanız açılırken (tabii mbd dosyasına kısayol yapıp açıyorsanız) Access paneli yerine sizin bmp dosyası görünecektir. Bu yöntemin tek faydası Access panelinden kurtulmaktır, yoksa sizin hazırladığınız bmp, ekranda çok kısa kalacağı için çoğu kişi bunu farkedemeyecektir bile. Ben bu nedenle genelde nokta büyüklüğünde boş bir bmp dosyası kullanıyorum. Sadece Access paneli görünmesin diye.
b) İşler ters gider de uygulamanızı tekrar Access kontrolünde açmak isterseniz, uygulamanızı açarken shift tuşuna basınız ve uygulamanız açılana kadar parmağınızı kaldırmayınız.
Bu bölüm de bu kadar. Çalışmalarınızda başarılar.

  Alıntı Yaparak Cevapla
Eski 08-06-09, 19:42   #2
mahmutkebir

Varsayılan C: Modul Nedİr?


Teşekkürler arkadaşım kafamdaki birçok soru işaretini ezmiş oldum paylaştığın bilgi sayesinde...
  Alıntı Yaparak Cevapla
Eski 19-06-09, 12:54   #3
özgür41

Varsayılan C: Modul Nedİr?


Paylaşım için teşekkürler..
  Alıntı Yaparak Cevapla
Cevapla

Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz

Konu Araçları

Gönderme Kuralları
Yeni konu açamazsınız
Cevap yazamazsınız
Dosya gönderemezsiniz
Mesajlarınızı düzenleyemezsiniz

BB code is Açık
Smiley Açık
[IMG] kodu Açık
HTML kodu Kapalı



5651 sayılı yasaya göre forumumuzdaki mesajlardan doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Şikayet Mailimiz. İçerik, Yer Sağlayıcı Bilgilerimiz. Reklam Mailimiz. Gizlilik Politikası


Reklamı Kapat

Reklamı Kapat