bir döngü istiyorum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
birtekocak
Üye
Mesajlar: 8
Kayıt: 24 Mar 2004 10:16

bir döngü istiyorum

Mesaj gönderen birtekocak »

arkadaşlar table kayıtlı demirbaşlarım için giriş tarihlerini dikkate alarak
1971 yılından bu güne kadar tek tek tüm demirbaşların amortisman değerlerini hesaplayacak bir döngü istiyorum
her demirbaşın kendi giriş tarihi var ve her yılın kendine göre bir artış oranı var
Kullanıcı avatarı
altunway
Üye
Mesajlar: 217
Kayıt: 11 Haz 2003 09:16
Konum: İstanbul
İletişim:

S.A

Mesaj gönderen altunway »

S.A

Arkadasım :) Bu Durumda Sanırım Sen Gölü Mayalamak istiyorsun..

Bence Biraz Daha Ayrıntılı Bilgi Verirsen Programın Hakkında Table hakkında çok iyi Olur..

Hayırlı Gunler
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

aklıma birden şu espiri geldi
- abi bir döngü istiyorum
- tabii çift kaşarlımı :lol:
veya
- abi bir döngü istiyorum
- tabii sarayımmı burdamı yiceksiniz
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

evet detaylar eksik ama şöyle genel birşey söyleyebilirim.

Bir Query ile 1971'den büyük kayıtları seçin.

SELECT * FROM TABLO_İSMİ
WHERE TARIH>='01.01.1971'

daha sonra bir döngü ile kayıtları işleme tabi tutun. Mesela Query1 ise,

Kod: Tümünü seç

Query1.First;
while not Query1.Eof do
begin
  //burda hesaplama işlemleri yapılıyor
  Query1.Next;
end;
Kolay gelsin.
Kullanıcı avatarı
birtekocak
Üye
Mesajlar: 8
Kayıt: 24 Mar 2004 10:16

kusura bakmayın

Mesaj gönderen birtekocak »

arkadaşlar kusura bakmayın daha fazla detaylandırıp canınızı sıkmak istemedim.
işin aslı şu demirbaşların tutuluduğu bir table ım var
bu table da demirbaş no, ad giriş tarihi , giriş bedeli gibi bilgiler mevcut

1971 den bu yana her yıl bu demirbaşların giriş bedelleri oyılın artış oarnı ile çarpılıp yeniden hesaplanıyor ve bunlar her yıl yenileniyor döngü istiyorum derken bu kastedmiştim
demirbaş döngüye girecek ilg giriş tarihi kontrol edilecek ve o yıldan hesap edilmeye başlanacak tarih bir yıl arttırılıp hesaplama işlemi tekrar yapılacak
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

demirbaş döngüye girecek ilg giriş tarihi kontrol edilecek ve o yıldan hesap edilmeye başlanacak tarih bir yıl arttırılıp hesaplama işlemi tekrar yapılacak
Merhaba ne güzel anlatıyorsun!!! Döngü örneğide verilmiş. Algoritmanı Kod lara dök anlattığın şekilde döngü kur if lerle şartları karşılaştır. Takıldığın yerlerde bu formun altına yaz.

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

Mesaj gönderen mussimsek »

Merhaba,

verdiğim döngü ile yapabilirsin. Bir yılın ilk günü : 01.01, son günü ise 31.12'dir. Ona göre SQL cümleni değiştirmen lazım.

SELECT * FROM TABLO_İSMİ
WHERE TARIH BETWEEN '01.01.2003' AND '31.12.2003'

gibi.

Kolay gelsin.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Canı sıkmak dersen ozaman soruna yukarıdaki kadar cevap alırsın :lol: Aksine can sıkacaksınki millet bi an önce kurtulmak için hemen ve detaylı bir şekilde cevap yazsınlar.

Bu yeniden değerlendirme 3 yıllık olmıyacakmı ? yoksa ilk maliyet sıfırlana kadarmı olacak ? eğer 3 yıl olacaksa table a 3 field daha ekle, ve sonraki yılların değerlerini gir ve hesaplat, yada bu sonuçlarıda field ekleyip table a yaz. Eğer maliyet sıfırlana kadarsa, ozaman detail table kullan, detail de her yılın bilgilerini bir kayıt olarak tut. bunun döngüsünüde

Kod: Tümünü seç

while not Table1.EOF do begin
// yazanağın kod
 Table1.Next;
end;
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
birtekocak
Üye
Mesajlar: 8
Kayıt: 24 Mar 2004 10:16

nerde yanlış yapıyorum

Mesaj gönderen birtekocak »

procedure TForm1.Button1Click(Sender: TObject);
var
oran,bolum:integer;
begin
oran:=114290;
bolum:=100;
Query1.First;
while not Query1.Eof do
begin
form1.table1dem_amort:=form1.table1dem_fiat * oran / bolum;//burda hesaplama işlemleri yapılıyor;
Query1.Next;
end;
end;


burda table daki alnalar üzerinde işlem yapmak istiyorum
bilmediğim bir şeyler var nedir onlar acaba?
Kullanıcı avatarı
birtekocak
Üye
Mesajlar: 8
Kayıt: 24 Mar 2004 10:16

evet

Mesaj gönderen birtekocak »

evet yıllık artış oranları birbirinden farklı ve demirbaşın değer artışı ile amortismanın değer artışı birbirini yakaladığı yerde, her yeni yıl için amortisman hesabı yapılmıyor. ayrıca 3 yıllık değil de bu işlem demirbaşın üniteye girişinden hurda olup çıkışına kadar devam ediyor
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

ozaman master-detail kullan detail de her yıl bilgilerini sakla.
form1.table1dem_amort:=form1.table1dem_fiat * oran / bolum;//burda hesaplama işlemleri
bu temsili kod değil ise çalışmaz, yazılım hatası var

Kod: Tümünü seç

form1.table1.Edit;//Yada form1.table1.Insert
form1.table1.fieldbyname('dem_amort').asfloat:=form1.table1.fieldbyname('dem_fiat').asfloat * oran / bolum;//burda hesaplama işlemleri 
form1.table1.Post;
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
birtekocak
Üye
Mesajlar: 8
Kayıt: 24 Mar 2004 10:16

bu kodlarla tek satır işlem görüyor

Mesaj gönderen birtekocak »

vermiş olduğunuz kodlarla işlem yaptığımda o an seçili kayıtın değeri hesaplanıyor bu hesaplamayı hepsine birde nasıl uygularım şimdiden sağolun
Kullanıcı avatarı
birtekocak
Üye
Mesajlar: 8
Kayıt: 24 Mar 2004 10:16

?hallettim ama?

Mesaj gönderen birtekocak »

merhaba
sorunu hallettim ama şimdi de
silme ve değer atama işlemlerinde
'database not edit or insert ' diyor.

kod aşağıda olduğu gibi.
yardımlarını bekliyorum sağolun

procedure TForm1.Button1Click(Sender: TObject);
var
oran,bolum:integer;
i:longint;
begin
oran:=114290;
bolum:=100;
Query1.First;
for i:=1 to form1.table1.RecordCount do
begin
form1.Table1.Open;
form1.table1.Edit;//Yada form1.table1.Insert
form1.table1.FieldByName('dem_amort').AsFloat:=form1.table1.fieldbyname('dem_fiat').asfloat * oran / bolum;
form1.table1.Next;
end;
form1.Table1.Post;
form1.Table1.Close;
showmessage('bitti');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
j:longint;
begin
Query1.First;
for j:=1 to form1.table1.RecordCount do
begin
form1.Table1.Open;
form1.table1.Edit;//Yada form1.table1.Insert
form1.table1.FieldByName('dem_amort').AsFloat:=0;
form1.table1.Next;
end;
form1.Table1.Post;
form1.Table1.Close;
showmessage('bitti');
end;
Kullanıcı avatarı
birtekocak
Üye
Mesajlar: 8
Kayıt: 24 Mar 2004 10:16

her şey sağolun

Mesaj gönderen birtekocak »

arkadaşlar sağ olun her şey için
hepsi tamam
takıldığım yer olursa sizi rahatsız etmeye devam edecem
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

orda bi dur bakalım. Bu foruma borcun var, nedemek
takıldığım yer olursa sizi rahatsız etmeye devam edecem
burdan benim anladığım ben işimi hallettim ne haliniz varsa görün.
500 kerede söyledim, burda cevap aldıysan işine yarasın yaramasın, her cevap karşılığı 3 cevap vermek zorundasın.
Mutlakada bildiğin bir şey çıkacaktır
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla