Taksitlendirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Taksitlendirme

Mesaj gönderen sinancaylak »

Merhaba ben bir fiyatın 10 yada istediğim kadar bölünmesini istiyorum yani 80.000.000 TL lik bir fiyatın edite 10 değim zaman 10.000.000 TL lik taksitleri gridte görmek istiyorum. Ben söyle bir kod buldum ama çalımtıramadım

Kod: Tümünü seç

 query1.FieldByName('TAKSITFIYAT').Asinteger := query1.FieldByName('TOPTUTAR').Asinteger / query1.FieldByName('TAKSITSAY').Asinteger;

bunu TAKSITSAY fieldnin onchange yazıyorum ama aşağıdaki hataları alıyorum

[Error] Unit1.pas(34): Incompatible types: 'Integer' and 'Extended'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Bu konuda yardımcı olursanız sevinirim. İyi çalışmalar[/quote]
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba

lütfen biraz daha hassasiyet. Sizin için bu sefer ben düzelttim.
- Lütfen Mesajın ve başlığın tümünü büyük harflerle yazmayın. Büyük harflerle yazmanın net kullanıcıları arasında bağırmak anlamına geldiğini unutmayın.
Kolay gelsin.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

taksitfiyat alanın currency yada numeric yapmalısın
bolum sonucu cıkan deger float yani kayan noktalı oluyor
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Bölme işlemi yaptığınız için asInteger yerine asFloat kullanmanız gerekir, çünkü dönen sonuç tamsayı olmayabilir.

Aslında kodu neden böyle kullandığınızı anlayamadım, neden sql kullanmadınız?

Kod: Tümünü seç

with query1 do
begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT TOPTUTAR/TAKSITSAY FROM TABLO WHERE...');
  Open;
end;


query1.FieldByName('TAKSITFIYAT').Asinteger := query1.FieldByName('TOPTUTAR').Asinteger / query1.FieldByName('TAKSITSAY').Asinteger;
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

Öncelikle Başlıkta büyük harf kullandığım için kusura bakmayın. gkimitri abi senin dediğin gibi yaptım hata yok ama gridde benim istediğim bölme işlemini yapmıyor. Nailenin değinide yaptım ama alanları böldürüp sonunda WHERE kullanmış onuda pek anlayamadım. :(

TABLODA Kİ ALANLARIM

TAKSITFIYAT (Taksitin yapılacağı rakam)
TAKSITSAY (Taksit Sayısı)
TOPLAMTUTAR (Taksitlerin gösterileceği alan)

herhalde bir yerde yanlışlık yapıyorum .
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Ordaki WHERE kısıtın oluyor yani tablodaki o iki alanı bölerken hangi satırı almak istiyorsan onu seçmek için kullanmak için ama tablonda herhangi bir anahtar yok sanırım neye göre tutuyorsun merak ettim. Where i kullanmak zorunda değilsin.
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

naile tamam da TOPTUTAR/TAKSITSAY FROM taksit WHERE TAKSITUCRET şimdi bu mantığa göre toplam tutarı taksitsayısına bölüp TaksitÜcrete yazması gerekmiyor mu sonuçta ben Bu taksitlendirdiği böldüğü alanları bir yere yazdırmam gerekmiyor mu?
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Pardon bu kodları bir button altında yazıp denedinizmi yoksa Dataset in eventleri ile mi uğraşıyorsunuz?.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: Taksitlendirme

Mesaj gönderen rsimsek »

sinancaylak yazdı:

Kod: Tümünü seç

 query1.FieldByName('TAKSITFIYAT').Asinteger := query1.FieldByName('TOPTUTAR').Asinteger / query1.FieldByName('TAKSITSAY').Asinteger;

bunu TAKSITSAY fieldnin onchange yazıyorum ama aşağıdaki hataları alıyorum

[Error] Unit1.pas(34): Incompatible types: 'Integer' and 'Extended'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Bu konuda yardımcı olursanız sevinirim. İyi çalışmalar[/quote]
Soruya her nekadar bazı cevaplar ve öneriler getirilmişse de baştaki hata
query1.FieldByName('TAKSITFIYAT').AsInteger := ...
Integer (tamsayı) alanına atamak istediğin sonucun tam sayı olmaması. Bunun yerine
query1.FieldByName('TAKSITFIYAT').AsFloat := ...
demelisin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

hüseyin abi kodları butonda denedim hata veriyor şimdi recep hocamın kodlarını inceleyeceğim
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

ben bu kodları bit tane buton koyuyorum ve giride bilgi girdikten sonra butona tılayınca read only hatası veriyor kodlar aşağıdaki gibi ayrıca elinde böyle bir örnek varsa sinancaylak@hotmail.com adresine gönderirse sevinirim

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
query1.FieldByName('TAKSITUCRET').AsFloat := query1.FieldByName('TOPTUTAR').AsInteger / query1.FieldByName('TAKSITSAY').Asinteger;
end;

end.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

sinancaylak yazdı:ben bu kodları bit tane buton koyuyorum ve giride bilgi girdikten sonra butona tılayınca read only hatası veriyor kodlar aşağıdaki gibi ayrıca elinde böyle bir örnek varsa sinancaylak@hotmail.com adresine gönderirse sevinirim

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
query1.FieldByName('TAKSITUCRET').AsFloat := query1.FieldByName('TOPTUTAR').AsInteger / query1.FieldByName('TAKSITSAY').Asinteger;
end;

end.
Umarım anlayabilmişimdir.. Anlayabildiğim kadarı ile bir cevap yazacağım.

Şimdi formuna iki tane edit koy, bunlar toplam tutarı ve taksit sayısını gireceğin iki değer. Bir de grid koy ve buna bağlı bir table nesnesi ve datasource koy. table a sağ tıklayıp fieldları ekle. Butonun onclickine ise şöyle yaz:

Kod: Tümünü seç

table1.Open;
table1TOPTUTAR.asFloat := strtofloat(edit1.text);
table1TAKSITSAY.asFloat := strtofloat(edit2.text);
table1TAKSITUCRET'.asFloat := strtofloat(edit1.text) / strtofloat(edit2.text);
table1.insert;
table1.close;
table1.open;
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

sinancaylak yazdı:ben bu kodları bit tane buton koyuyorum ve giride bilgi girdikten sonra butona tılayınca read only hatası veriyor kodlar aşağıdaki gibi ayrıca elinde böyle bir örnek varsa sinancaylak@hotmail.com adresine gönderirse sevinirim

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
query1.FieldByName('TAKSITUCRET').AsFloat := query1.FieldByName('TOPTUTAR').AsInteger / query1.FieldByName('TAKSITSAY').Asinteger;
end;
end.
/ bu işareti Div olarak değiştirip deneyebilirmisin.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

naile dediklerini harfi harfine yaptım bu sefer table1 not insert mode hatası veriyor yapmam gereken başka bir şey var mı hüseyin abi kusura bakma ( / ) div işareti demekle ne dediğini tam olarak anlayamadım.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Tam sayı bölmelerinde '/' operatörü yerine 'Div' kullanılır. Ek bir ilave daha yapayım sonuç tamsayı olarak alınacaksa.

Kolay Gelsin...
En son husonet tarafından 18 May 2004 03:40 tarihinde düzenlendi, toplamda 1 kere düzenlendi.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Cevapla