Proje Dbedit hakkında !

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Proje Dbedit hakkında !

Mesaj gönderen DotCom »

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.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

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 :

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;
Cevapla