ytl yazı ile gösterme, para okuma,Sayıyı Yazıya çevirme

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 05:04
Konum: Antalya

ytl yazı ile gösterme, para okuma,Sayıyı Yazıya çevirme

Mesaj gönderen akdatilla » 30 Kas 2007 03:39

merhaba arkadaşlar
aşağıdaki kodlar tarafımca yazılıp ihtiyacı olabilecek arkadaşlara sunulmuştur. Kodlarda bazı dış kaynaklardan yararlandım.
Çevirme komutunun orjinali bir delphi fonksiyonundan alınmıştır.

Kodlar üzerinde çalışılarak daha hızlı, daha kısa kodlar üretilebilir.
Yeni üreteceğiniz kodlardan hepimizin yararlanabilmesi için bu foruma eklemenizi rica ediyorum.

Not: Bu fonksiyonların firebird çevirisi aşağıdaki linkden görülebilir:
viewtopic.php?p=124596#124596

Kolay gelsin.

Kod: Tümünü seç


--Gerekli tablolar
CREATE TABLE BSMYUZLER
(
	YUZ_Y TINYINT NOT NULL,
	YUZ_Z TINYINT NOT NULL,
	YUZ_DEGERI VARCHAR(10)
	PRIMARY KEY (YUZ_Y,YUZ_Z)
)

CREATE TABLE BSMBINLER
(
	BIN_HANE TINYINT NOT NULL,
	BIN_DEGERI VARCHAR(16),
	PRIMARY KEY (BIN_HANE)
)

--tablolar içinde olması gerekli veriler
INSERT INTO BSMBINLER (BIN_HANE,BIN_DEGERI) VALUES (1,'Seksilyon');
INSERT INTO BSMBINLER (BIN_HANE,BIN_DEGERI) VALUES (2,'Kentrilyon');
INSERT INTO BSMBINLER (BIN_HANE,BIN_DEGERI) VALUES (3,'Katrilyon');
INSERT INTO BSMBINLER (BIN_HANE,BIN_DEGERI) VALUES (4,'Trilyon');
INSERT INTO BSMBINLER (BIN_HANE,BIN_DEGERI) VALUES (5,'Milyar');
INSERT INTO BSMBINLER (BIN_HANE,BIN_DEGERI) VALUES (6,'Milyon');
INSERT INTO BSMBINLER (BIN_HANE,BIN_DEGERI) VALUES (7,'Bin');
INSERT INTO BSMBINLER (BIN_HANE,BIN_DEGERI) VALUES (8,'');

INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,0,'');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,1,'Yüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,2,'İkiyüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,3,'Üçyüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,4,'Dörtyüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,5,'Beşyüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,6,'Altıyüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,7,'Yediyüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,8,'Sekizyüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (1,9,'Dokuzyüz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,0,'');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,1,'On');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,2,'Yirmi');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,3,'Otuz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,4,'Kırk');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,5,'Elli');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,6,'Altmış');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,7,'Yetmiş');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,8,'Seksen');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (2,9,'Doksan');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,0,'');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,1,'Bir');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,2,'İki');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,3,'Üç');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,4,'Dört');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,5,'Beş');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,6,'Altı');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,7,'Yedi');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,8,'Sekiz');
INSERT INTO BSMYUZLER (YUZ_Y,YUZ_Z,YUZ_DEGERI) VALUES (3,9,'Dokuz');

--Tamsayıyı yazı ile çıktı veren sp
CREATE FUNCTION YAZIILEGOSTER(@SAYI bigint) RETURNS VARCHAR(750)
 WITH ENCRYPTION
AS
BEGIN
	DECLARE @i INT, @y INT, @z INT,  @Parca VARCHAR(5), @ASt VARCHAR(24),
        @EkSt VARCHAR(26),  @AraSonuc VARCHAR(2000), @Sonuc VARCHAR(2000),
        @n INT, @hane Int,@BSt VARCHAR(24)
	SET @Sonuc=''
        SET @BSt=CAST(@SAYI AS VARCHAR(24))
	set  @ASt=''
        SET @n=len(@BSt)
	set @i=@n
	--return cast(@i as varchar(5))
	while @i>0
	begin
		set @ASt=@ASt+SUBSTRING(@BSt,@i,1)
		set @i=@i-1	
	end
        SET @i=1
        SET @hane=1
        while @i<=@n 
        begin
                SET @Parca=SUBSTRING(@ASt,@i,3);
                SET @AraSonuc=''
                SET @y=1
		while @y<4
                begin
                        set @z=cast(substring(@Parca,4-@y,1) as int)
                        select @AraSonuc=@AraSonuc+' '+YUZ_DEGERI from BSMYUZLER where YUZ_Y=@y AND YUZ_Z=@z
			set @y=@y+1
                end
                if @AraSonuc<>'' select @AraSonuc=@AraSonuc+' '+BIN_DEGERI FROM BSMBINLER WHERE BIN_HANE=9-@hane
                if @AraSonuc='Bir Bin' 
		  SET @AraSonuc='Bin';
                SET @i=@i+3;
                SET @hane=@hane+1
                set @Sonuc=@AraSonuc+@Sonuc
        end
  RETURN(@Sonuc)
END

--YTL sayıyı yazı ile çıktı veren sp
CREATE FUNCTION KURUSLUOKU(@SAYI FLOAT) RETURNS VARCHAR(250)
AS
BEGIN
	DECLARE @TAMKISMI BIGINT,@ONDAKISMI BIGINT,@GSAYI FLOAT,@SONUC VARCHAR(1000)
	SET @GSAYI=FLOOR(@SAYI)
	SET @TAMKISMI=CAST(@GSAYI AS BIGINT)
	SET @GSAYI=ROUND(@SAYI*100,0)-@GSAYI*100
	SET @ONDAKISMI=CAST(@GSAYI AS BIGINT)
	SET @SONUC=''
	IF @TAMKISMI>0
	SET @SONUC=dbo.YAZIILEGOSTER(@TAMKISMI)+' YTL'
	IF @ONDAKISMI>0
	SET @SONUC=@SONUC+','+dbo.YAZIILEGOSTER(@ONDAKISMI)+' YKR'
	RETURN @SONUC
END

--Örnek Okuma Komutu:
SELECT dbo.KURUSLUOKU(3215.245)

Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 09:11

Mesaj gönderen naile » 30 Kas 2007 05:25

Elinize sağlık, ancak konu yanlış yere açılmış Makaleler bölümüne taşıyorum.

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3014
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman » 01 Ara 2007 08:13

Aaa burada da vaaar :) . ->
viewtopic.php?t=19079

Kodları denemedim ama açıklamaya göre aynı işlevi görüyor fakat FireBird isteği var. Verdiğiniz FireBird bağlantıları ise seçtiğiniz başlık bu forumda yok diyor. FireBird bağlantısını düzeltip verebilir misizin?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 05:04
Konum: Antalya

Mesaj gönderen akdatilla » 01 Ara 2007 02:20

firebird linki:
viewtopic.php?t=21843

Cevapla