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)