Merhabalar öncelikle herkeze iyi çalışmalar..
benim yazmış olmakta oldugumda programda bir kaç problemim var yardımcı olursanız sevinirim.
Birincisi : Dbedit ler arasında hiç bir şekilde hesaplama yaptıramıyorum. Nasıl hesaplama yaptıra bilirim. Aslında sorununn cvp ı çok basit olabilir ama ya en fazla 4 milyar liraya kadar işlem yapabiliyorum yada hiç yapamıyorum yardımcı olursanız sewinirim.
İkincisi : Yapmış oldugum işlemlerin sonucunda DBEDIT deki para değerini başka bir dbedit e yazıyla yazdırmak istiyorum bunun için geçerli kod. ( Not : Dbedit lerinde type i Money )
Üçüncüsü : Benim table imde Firma isimleri vede Fatura Tarihleri die kısımlar var. Daha bir kaç field daha var ama onları burada yazmıyorum. Belli tarih aralıgındaki faturaları nasıl listelettire bilirim. Mesela 01.07.2003 ve 15.07.2003 arasındaki faturaları listeliyen kod.
Not : SQL in tüm komutlarını bilmeme ragmen delphi içinde nasıl kullanacagımı bilmiyorum. Mümkünse bu soruların cvp larını query kullanmadan sql komutları olmadan yanıtlarsanız sevinirim. Vereceginiz cvp lar için şimdiden teşekkür ederim.
Proje Dbedit hakkında !
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Merhaba,
1. Eğer Integer kullanıyorsan 4 milyara kadar kullanabilirsin. Değişkenlerini Double yap ve dönüşümlerde FloatToStr ve StrToFloat kullan.
2. Kodu aşağıda yazdım.
3. SELECT * FROM TABLO_İSMİ
WHERE TARIH BETWEEN '01.07.2003' AND '15.07.2003'
Ayrıca site SQL ve Query'ler için Veritabanı bölümündeki yazıları okumanı tavsiye ederim.
Kolay gelsin.
Sayıyı metne çeviren fonksiyon :
1. Eğer Integer kullanıyorsan 4 milyara kadar kullanabilirsin. Değişkenlerini Double yap ve dönüşümlerde FloatToStr ve StrToFloat kullan.
2. Kodu aşağıda yazdım.
3. SELECT * FROM TABLO_İSMİ
WHERE TARIH BETWEEN '01.07.2003' AND '15.07.2003'
Ayrıca site SQL ve Query'ler için Veritabanı bölümündeki yazıları okumanı tavsiye ederim.
Kolay gelsin.
Sayıyı metne çeviren fonksiyon :
Kod: Tümünü seç
function SayiToSozlu (Number :Double):String;
var
Text :Array [0..9,0..1] of String;
Sy, Syt, S : String;
function Oku(Deg:String):String;
var
B1,B2,B3 : String;
P : Integer;
begin
try
B1 := Text[strToInt(copy(Deg, 3, 1)), 0];
B2 := Text[strToInt(Copy(Deg, 2, 1)), 1];
P := strToInt(Copy(Deg, 1, 1));
except
P := 0;
end;
if P > 1 then
b3 := Text[P, 0] + 'Yüz'
else if P = 1 then
b3 := 'Yüz'
else b3 := '';
Oku := b3 + B2 + B1;
end;
begin
Text[0, 0] :='';
Text[1, 0] := 'Bir';
Text[2, 0] := 'İki';
Text[3, 0] := 'Üç';
Text[4, 0] := 'Dört';
Text[5, 0] := 'Beş';
Text[6, 0] := 'Altı';
Text[7, 0] := 'Yedi';
Text[8, 0] := 'Sekiz';
Text[9, 0] := 'Dokuz';
Text[1, 1] := 'On';
Text[2, 1] := 'Yirmi';
Text[3, 1] := 'Otuz';
Text[4, 1] := 'Kırk';
Text[5, 1] := 'Elli';
Text[6, 1] := 'Altmış';
Text[7, 1] := 'Yetmiş';
Text[8, 1] := 'Seksen';
Text[9, 1] := 'Doksan';
if Number <= 0 then
begin
Result := '';
Exit;
end;
S := FormatFloat('0',Number);
S := '000000000000000' + S;
S := Copy(S, Length(s)-14, 15);
Sy := '';
syt := '';
{Boluk$ := MID$(S$, 13, 3): Bolok Boluk$, Sy$, Text$()}
syt := Oku(copy(S, 13, 3));
if Oku(copy(S, 10, 3)) <> '' then
if strToInt(copy(S, 10, 3)) = 1 then
syt := 'Bin' +Syt
else
syt := Oku(copy(S, 10, 3))+'Bin' +Syt;
if Oku(copy(S, 7, 3)) <> '' then
syt := Oku(Copy(S, 7, 3)) + 'Milyon' + Syt;
if Oku(Copy(S, 4, 3)) <> '' then
syt := Oku(Copy(S, 4, 3)) + 'Milyar' + Syt;
if Oku(Copy(S, 1, 3)) <> '' then
syt := Oku(Copy(S, 7, 3)) + 'Trilyon' + Syt;
SayiToSozlu := syt;
end;
function SayiAdiniBul(N: LongWord): string;
begin
case N of
1..19 : Result := YirmidenKucukler[N];
20..99 : Result := Onluklar[N Div 10] + ' ' + SayiAdiniBul(N Mod 10);
100..999 : Result := YirmidenKucukler[N Div 100] + ' HUNDRED ' + SayiAdiniBul(N Mod 100);
1000..999999 : Result := SayiAdiniBul(N Div 1000) + ' THOUSAND ' + SayiAdiniBul(N Mod 1000);
1000000..999999999 : Result := SayiAdiniBul(N Div 1000000) + ' MILLION ' + SayiAdiniBul(N Mod 1000000);
1000000000..4294967295 : Result := SayiAdiniBul(N Div 1000000000) + ' BILLION ' + SayiAdiniBul(N Mod 1000000000);
end; {case}
end;
function SayiOku(Sayi : Real): String;
begin
if Sayi = 0 then
Result := ''
else
if (Sayi >= EnKucuk) and (Sayi <= EnBuyuk) then
begin
Result := SayiAdiniBul(Round(Int(Sayi)));
if not(Frac(Sayi)=0.00) Then Result:=Result+' and '+IntToStr(Round(Frac(Sayi)*100))+'/100';
end
else
Raise ERangeError.CreateFmt('%g ' + HataMesaji + ' %g..%g', [Sayi, EnKucuk, EnBuyuk]);
end;