Sayıyı Metne Çevirme Kodu
Tarih
06/05/2011 16:25
Konu Sahibi
y.alkan
Yorumlar
3
Okunma
2865
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



y.alkan
Üye
Kullanici Avatari
Üye
26
6
04/05/2011
0
Muğla
Ofis 2003
22/02/2013,15:17
ARKADAŞLAR İHTİYACI OLANLAR İÇİN

C) FONKSIYONUN ACCESS'DE KULLANIMI
i) Bos bir Access dosyasi aciniz veya bu fonksiyonu kullanmayi dusundugunuz Access dosyasini (mdb dosyasini) aciniz.

ii) Module bolumune geciniz ve New (yeni) tusuna basiniz. Veya menuden Insert -> Module secenegini seciniz. Yeni bir modul sayfasi acilacaktir.

iii) Yeni modul sayfasinda buyuk ihtimalle
Option Compare Database
Option Explicit
ifadelerini goreceksiniz. Bunlarin altina asagidaki fonksiyonlari yaziniz veya buradan fonksiyonlari kopyalayip, modul sayfasina yapistiriniz.

iv) Menuden File -> Save (kaydet) secenegini secerek veya uzerinde disket resmi olan save (kaydet) ikonuna basarak yazdiginiz modulu kaydediniz. Fonksiyonumuz artik kullanima hazirdir. Modul penceresini kapatabilirsiniz.

v) Form icinde bunu su sekilde kullanabiliriz. Yeni bir form olusturalim. Bu forma iki tane text box (metin kutusu) koyalim. Birinci metin kutusunun uzerine cift tiklayarak property (ozellikler) penceresini acalim. Bu pencerenin other (diger) sayfasindaki Name (ad) bolumune SayiRakkamla yazarak bu kutunun ismini SayiRakkamla yapmis olalim.

Ikınci kutuya cift tiklayarak bu kutunun property (ozellikler) penceresini acalim. Bu pencerenin Data (veri) sayfasindaki Control Source (veri kaynagi) bolumune =Sayiyi_Metne_Cevir(SayiRakkamla) yazalim. Form calisinca birinci kutuya yazdigimiz sayi metine donusturulecek ve sonuc ikinci kutuda gorunecektir.

Ayni mantikla bu fonksiyonu raporlarda, diger modullerde, sorgularda kullanabilirsiniz.

Access'de modul kullanimi hakkinda bilginiz yoksa veya bu konuyla ilgili baslangic bilgilerini ogrenmek isterseniz, Access bolumunde yer alan Access'de Programlamaya Giris adli dersi okumanizi tavsiye ederim.

D) FONKSİYONLARIN METNI
Burada gordugunuz kodlari yukarida belirtilen bolumlere yaziniz veya buradan kopyalayip, gereken yere yapistiriniz. Bu kodlar Access ve Excel'de denenmistir, duzgun calismaktadir.


Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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. Eger 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



Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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

Cevapla


Hayri16
Aktif Üye
Kullanici Avatari
Aktif Üye
1.010
12/11/2009
291
Bursa
Ofis 2007
22/12/2015,15:41
Sayın y.alkan;
Katkınız için teşekkür ederiz.
Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla


life_exciting
Aktif Üye
Kullanici Avatari
Aktif Üye
837
28/12/2009
361
Ankara
Ofis 2003
18/11/2010,00:42
Paylaşım İçin Teşekkürler.
Cevapla


Yandemir
Only Office 2003
Kullanici Avatari
Onursal
M.... Y....
1.432
26/08/2009
482
Tekirdağ
Ofis 2003
07/12/2016,19:17
(06/05/2011, 16:54)lifeexciting Adlı Kullanıcıdan Alıntı: Paylaşım İçin Teşekkürler.

kuruş kısmını dikkate almıyor sanırım. teşekkürler.
Murat YANDEMİR ( PyramiD YAZILIM Uluslar Arası Nakliye Programları )
Bilgisayar Programcısı (1989'dan beri)

+rep Yollar biter Access bitmez. +rep
Cevapla







Konuyu Okuyanlar: 1 Ziyaretçi


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
  Sayıyı Yazıya Çevirme Fonksiyonu accessdelisi 4 1.673 20/11/2014, 00:52 accessdelisi
  Basılan tuşun kodu nedir? mehmetdemiral 13 4.163 23/07/2014, 10:22 SystemFiles
  otomatik sayıyı istediğiniz gibi ayarlayın accessman 5 2.564 27/12/2013, 13:55 ugurcb
  Rakamı yazıya çevirme oltaci 11 2.537 12/06/2012, 11:27 yenginoglu
  Sayıyı Basamaklarına Ayırma KingAccess 6 2.466 07/01/2012, 23:14 ozanakkaya


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya