Bir if problemi
- belizahmet
- Üye
- Mesajlar: 10
- Kayıt: 20 Mar 2004 01:28
- Konum: Niğde/Bor
Bir if problemi
Aşağıdaki koddaki hatayı bulamadım.Veri tabanından SEC1YSO alanı için de veri varsa hata vermiyor SEC1YSO alanını içi boşsa hata veriyor.Bir mantıksal hata var ama nerede?Yardımlarınız için şimdiden teşekkürler
if (Donem2.Query1SEC1YSO.Text)=' ' then
begin
qrlabel136.Caption:=' ';
qrlabel150.Caption:=' ';
qrlabel162.Caption:=' ';
end
else
begin
if strtoint(Donem2.Query1SEC1YSO.Text)=5 Then qrlabel136.Caption:='Beş';
if strtoint(Donem2.Query1SEC1YSO.Text)=4 then qrlabel136.Caption:='Dört';
if strtoint(Donem2.Query1SEC1YSO.Text)=3 then qrlabel136.Caption:='Üç';
if strtoint(Donem2.Query1SEC1YSO.Text)=2 then qrlabel136.Caption:='İki';
if strtoint(Donem2.Query1SEC1YSO.Text)=1 then qrlabel136.Caption:='Bir';
qrlabel150.Caption:=inttostr((strtoint(Donem2.Query1.FieldByName('SEC1YSO').AsString))*(strtoint(form2.Table1. FieldByName('DS11').AsString)));
qrlabel162.Caption := NumStr(StrToCurr(qrlabel150.Caption));
end;
if (Donem2.Query1SEC1YSO.Text)=' ' then
begin
qrlabel136.Caption:=' ';
qrlabel150.Caption:=' ';
qrlabel162.Caption:=' ';
end
else
begin
if strtoint(Donem2.Query1SEC1YSO.Text)=5 Then qrlabel136.Caption:='Beş';
if strtoint(Donem2.Query1SEC1YSO.Text)=4 then qrlabel136.Caption:='Dört';
if strtoint(Donem2.Query1SEC1YSO.Text)=3 then qrlabel136.Caption:='Üç';
if strtoint(Donem2.Query1SEC1YSO.Text)=2 then qrlabel136.Caption:='İki';
if strtoint(Donem2.Query1SEC1YSO.Text)=1 then qrlabel136.Caption:='Bir';
qrlabel150.Caption:=inttostr((strtoint(Donem2.Query1.FieldByName('SEC1YSO').AsString))*(strtoint(form2.Table1. FieldByName('DS11').AsString)));
qrlabel162.Caption := NumStr(StrToCurr(qrlabel150.Caption));
end;
-
- Kıdemli Üye
- Mesajlar: 489
- Kayıt: 13 Eyl 2003 09:10
- Konum: istanbul
- İletişim:
Kodu tes etme sansım olmadı ama umarım iş ğörür bir dene bakalım
Basarılar.
Kod: Tümünü seç
if (Donem2.Query1SEC1YSO.Text)=' ' then begin
qrlabel136.Caption:=' ';
qrlabel150.Caption:=' ';
qrlabel162.Caption:=' ';
end
else
begin
case StrToint(Donem2.Query1SEC1YSO.Text) of
0: qrlabel136.Caption := 'Sıfır';
1: qrlabel136.Caption := 'Bir';
2: qrlabel136.Caption := 'İki';
3: qrlabel136.Caption := 'Üc';
4: qrlabel136.Caption := 'Dört';
5: qrlabel136.Caption := 'Beş';
else
qrlabel136.Caption := ''; //Hiç biri degil
end;
qrlabel150.Caption:=inttostr((strtoint(Donem2.Query1.FieldByName('SEC1YSO').AsString))
*(strtoint(form2.Table1. FieldByName('DS11').AsString)));
qrlabel162.Caption := NumStr(StrToCurr(qrlabel150.Caption));
end;
Kod: Tümünü seç
strtoint(Donem2.Query1SEC1YSO.Text)
Kod: Tümünü seç
Donem2.Query1SEC1YSO.AsInteger;
içinde herhangi bir değer yoksa hata oluşmaması için; @naile hn.ın dediği gibi;
AsString veya AsInteger gibi kullanmalısın.
Yani;
şeklinde kullanabilirsin. StrToInt() e de gerek kalmaz.
AsString veya AsInteger gibi kullanmalısın.
Yani;
nun yerineif strtoint(Donem2.Query1SEC1YSO.Text)=5 Then qrlabel136.Caption:='Beş';
Kod: Tümünü seç
if Donem2.Query1SEC1YSO.AsInteger = 5 then qrlabel136.Caption:='Beş';
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
- belizahmet
- Üye
- Mesajlar: 10
- Kayıt: 20 Mar 2004 01:28
- Konum: Niğde/Bor
Kodu aşağıdaki şekilde düzelttim ama yine aynı sonuç ÇALIŞMIYOR...qrlabel150'i NumStr function'u içinde kullanıyorum hata buradan kaynaklanabilir mi? hesaplamayı[((Donem2.Query1SEC1YSO.AsInteger)*(form2.Table1DS11.AsInteger));]işlemini sabitlere atayıp yaptım değişiklik olmadı
if Donem2.Query1SEC1YSO.AsString='' then
begin
qrlabel136.Caption:='';
qrlabel150.Caption:='';
qrlabel162.Caption:='';
end
else
begin
if Donem2.Query1SEC1YSO.AsInteger=5 then qrlabel136.Caption:='Beş';
if Donem2.Query1SEC1YSO.AsInteger=4 then qrlabel136.Caption:='Dört';
if Donem2.Query1SEC1YSO.AsInteger=3 then qrlabel136.Caption:='Üç';
if Donem2.Query1SEC1YSO.AsInteger=2 then qrlabel136.Caption:='İki';
if Donem2.Query1SEC1YSO.AsInteger=1 then qrlabel136.Caption:='Bir';
qrlabel150.Caption:=inttostr((Donem2.Query1SEC1YSO.AsInteger)*(form2.Table1DS11.AsInteger));
qrlabel162.Caption := NumStr(StrToCurr(qrlabel150.Caption));
end;
Kod yazım yanlışı mı Mantık hatası mı var bilemiyorum?....
if Donem2.Query1SEC1YSO.AsString='' then
begin
qrlabel136.Caption:='';
qrlabel150.Caption:='';
qrlabel162.Caption:='';
end
else
begin
if Donem2.Query1SEC1YSO.AsInteger=5 then qrlabel136.Caption:='Beş';
if Donem2.Query1SEC1YSO.AsInteger=4 then qrlabel136.Caption:='Dört';
if Donem2.Query1SEC1YSO.AsInteger=3 then qrlabel136.Caption:='Üç';
if Donem2.Query1SEC1YSO.AsInteger=2 then qrlabel136.Caption:='İki';
if Donem2.Query1SEC1YSO.AsInteger=1 then qrlabel136.Caption:='Bir';
qrlabel150.Caption:=inttostr((Donem2.Query1SEC1YSO.AsInteger)*(form2.Table1DS11.AsInteger));
qrlabel162.Caption := NumStr(StrToCurr(qrlabel150.Caption));
end;
Kod yazım yanlışı mı Mantık hatası mı var bilemiyorum?....
Çalışmıyor ne demek? hangi satırda ne hatası alıyorsun??
şeklinde kullanmayı dene.. Aynı olay Donem2.Query1SEC1YSO.AsInteger için de geçerli..
Yani bu SEC1YSO alanı ekli değilse eklemen lazım yada ParamByName() ile kullanman lazım... 

buradaki form2.Table1DS11.AsInteger bir alan mıdır? ve Table1 in field properties inde eklenmişmidir? Eklenmemiş iseqrlabel150.Caption:=inttostr((Donem2.Query1SEC1YSO.AsInteger)*(form2.Table1DS11.AsInteger));
Kod: Tümünü seç
form2.Table1.FieldByName('DS11').AsInteger


Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
- belizahmet
- Üye
- Mesajlar: 10
- Kayıt: 20 Mar 2004 01:28
- Konum: Niğde/Bor
Sayın rsimsek Bey inanın her yolu denedim ama sonuç aynı....
Kodun son ve geniş hali Şöyle;
İşin Özü 2 tane seçmeli Ders Alanım var Bu seçmeli ders notları Ders saatleri ile çarpılıp Sonuç rakam ve sayı ile yazdırılıyor Eğer SEC1YSO veya SEC2YSO notu girilmezse sonuçlara etki ederek ağırlıklı ortalamayı hesaplatmak istiyorum.Ama.....
Kodun son ve geniş hali Şöyle;
Kod: Tümünü seç
if (Donem2.Query1.fieldByName('SEC1YSO').AsString='') then
begin
qrlabel136.caption:='';
qrlabel162.Caption:='';
qrlabel150.Caption:='';
end
else
begin
if Donem2.Query1SEC1YSO.AsInteger=5 THEN qrlabel136.Caption:='Beş';
if Donem2.Query1SEC1YSO.AsInteger=4 then qrlabel136.Caption:='Dört';
if Donem2.Query1SEC1YSO.AsInteger=3 then qrlabel136.Caption:='Üç';
if Donem2.Query1SEC1YSO.AsInteger=2 then qrlabel136.Caption:='İki';
if Donem2.Query1SEC1YSO.AsInteger=1 then qrlabel136.Caption:='Bir';
if form2.Table1.FieldByName('DS11').AsString='' then DS11:=0
else DS11:= form2.Table1.FieldByName('DS11').Asinteger;
SEC1:= Donem2.Query1.FieldByName('SEC1YSO').Asinteger;
qrlabel150.Caption:=inttostr(SEC1*DS11);
qrlabel162.Caption := NumStr(StrToCurr(qrlabel150.Caption));
end;
if Donem2.Query1SEC2YSO.Text='' then
begin
qrlabel137.Caption:='';
qrlabel163.Caption:='';
qrlabel151.caption:='';
end
else
begin
if strtoint(Donem2.Query1SEC2YSO.Text)=5 THEN qrlabel137.Caption:='Beş';
if strtoint(Donem2.Query1SEC2YSO.Text)=4 then qrlabel137.Caption:='Dört';
if strtoint(Donem2.Query1SEC2YSO.Text)=3 then qrlabel137.Caption:='Üç';
if strtoint(Donem2.Query1SEC2YSO.Text)=2 then qrlabel137.Caption:='İki';
if strtoint(Donem2.Query1SEC2YSO.Text)=1 then qrlabel137.Caption:='Bir';
if form2.Table1.FieldByName('DS12').AsString='' then DS12:=0
else DS12:= form2.Table1.FieldByName('DS12').Asinteger;
SEC2:= Donem2.Query1.FieldByName('SEC2YSO').Asinteger;
qrlabel151.Caption:=inttostr(SEC2*DS12);
qrlabel163.Caption := NumStr(StrToCurr(qrlabel151.Caption));
end;
//HESAPLAMALA
//
if (Donem2.query1.FieldByName('SEC1YSO').AsString<>'') and (Donem2.query1.FieldByName('SEC2YSO').AsString<>'') then qrlabel164.Caption:=inttostr(strtoint(qrlabel138.Caption)+strtoint(qrlabel140.Caption)+strtoint(qrlabel142.Caption)+strtoint(qrlabel143.Caption)+strtoint(qrlabel144.Caption)+strtoint(qrlabel145.Caption)+strtoint(qrlabel146.Caption)+strtoint(qrlabel147.Caption)+strtoint(qrlabel148.Caption)+strtoint(qrlabel149.Caption)+strtoint(qrlabel150.Caption)+strtoint(qrlabel151.Caption));
if (Donem2.query1.FieldByName('SEC1YSO').AsString='') and (Donem2.query1.FieldByName('SEC2YSO').AsString<>'') then qrlabel164.Caption:=inttostr(strtoint(qrlabel138.Caption)+strtoint(qrlabel140.Caption)+strtoint(qrlabel142.Caption)+strtoint(qrlabel143.Caption)+strtoint(qrlabel144.Caption)+strtoint(qrlabel145.Caption)+strtoint(qrlabel146.Caption)+strtoint(qrlabel147.Caption)+strtoint(qrlabel148.Caption)+strtoint(qrlabel149.Caption)+strtoint(qrlabel151.Caption));
if (Donem2.query1.FieldByName('SEC1YSO').AsString<>'') and (Donem2.query1.FieldByName('SEC2YSO').AsString='') then qrlabel164.Caption:=inttostr(strtoint(qrlabel138.Caption)+strtoint(qrlabel140.Caption)+strtoint(qrlabel142.Caption)+strtoint(qrlabel143.Caption)+strtoint(qrlabel144.Caption)+strtoint(qrlabel145.Caption)+strtoint(qrlabel146.Caption)+strtoint(qrlabel147.Caption)+strtoint(qrlabel148.Caption)+strtoint(qrlabel149.Caption)+strtoint(qrlabel150.Caption));
if (Donem2.query1.FieldByName('SEC1YSO').AsString='') and (Donem2.query1.FieldByName('SEC2YSO').AsString='') then qrlabel164.Caption:=inttostr(strtoint(qrlabel138.Caption)+strtoint(qrlabel140.Caption)+strtoint(qrlabel142.Caption)+strtoint(qrlabel143.Caption)+strtoint(qrlabel144.Caption)+strtoint(qrlabel145.Caption)+strtoint(qrlabel146.Caption)+strtoint(qrlabel147.Caption)+strtoint(qrlabel148.Caption)+strtoint(qrlabel149.Caption));
qrlabel167.Caption := NumStr(StrToCurr(qrlabel164.Caption));
//Ders saatlerini topla
if form2.Table1.FieldByName('TU45').AsString='' then aaa:=0
else aaa:=strtoint(form2.Table1.FieldByName('TU45').AsString);
if form2.Table1.FieldByName('M45').AsString='' then bbb:=0
else bbb:=strtoint(form2.Table1.FieldByName('M45').AsString);
if form2.Table1.FieldByName('F').AsString='' then ccc:=0
else ccc:=strtoint(form2.Table1.FieldByName('F').AsString);
if form2.Table1.FieldByName('S').AsString='' then ddd:=0
else ddd:=strtoint(form2.Table1.FieldByName('S').AsString);
if form2.Table1.FieldByName('YD').AsString='' then eee:=0
else eee:=strtoint(form2.Table1.FieldByName('YD').AsString);
if form2.Table1.FieldByName('DK').AsString='' then fff:=0
else fff:=strtoint(form2.Table1.FieldByName('DK').AsString);
if form2.Table1.FieldByName('R45').AsString='' then oo:=0
else oo:=strtoint(form2.Table1.FieldByName('R45').AsString);
if form2.Table1.FieldByName('MU45').AsString='' then jj:=0
else jj:=strtoint(form2.Table1.FieldByName('MU45').AsString);
if form2.Table1.FieldByName('B45').AsString='' then kk:=0
else kk:=strtoint(form2.Table1.FieldByName('B45').AsString);
if form2.Table1.FieldByName('SE').AsString='' then ll:=0
else ll:=strtoint(form2.Table1.FieldByName('SE').AsString);
if form2.Table1.FieldByName('DS11').AsString='' then mm:=0
else mm:=strtoint(form2.Table1.FieldByName('DS11').AsString);
if form2.Table1.FieldByName('DS12').AsString='' then nn:=0
else nn:=strtoint(form2.Table1.FieldByName('DS12').AsString);
ggg:=(aaa+bbb+ccc+ddd+eee+fff+jj+kk+ll+mm+nn+oo);
qrlabel166.Caption:=inttostr(ggg);
//ağırlıklı ortalama için; ders ssati not çarpımını toplam ders saatine böl
qrlabel165.Caption:=floattostr(trunc(strtoint(qrlabel164.Caption)/strtoint(qrlabel166.Caption)*100)/100);
Program kodlarını [/code] içinde yazarsanız daha okunaklı olur, sorunuzun anlaşılma ve cevaplanma ihtimalı artar 
Yine baştan alırsak, her ne kadar bir sürü kod yazdıysan da ben şöyle bir öneride daha bulunacağım (ki fazla kod yazmaktansa sorunu açık ve net yazmak daha yeğdir diye düşünüyorum) ;
senin Donem2.Query1SEC1YSO.Text text bir alan ise
şeklinde de yazabilirsin. yada ;
şeklinde de yazabilirsin.
Sorunu çözmez ise hangi satırda ne hatası aldığını yazarsan birlikte çözmeye çalışırız.
Kolay gelsin.
Kod: Tümünü seç
[code]

Yine baştan alırsak, her ne kadar bir sürü kod yazdıysan da ben şöyle bir öneride daha bulunacağım (ki fazla kod yazmaktansa sorunu açık ve net yazmak daha yeğdir diye düşünüyorum) ;
senin Donem2.Query1SEC1YSO.Text text bir alan ise
Kod: Tümünü seç
if not Donem2.Query1SEC1YSO.IsNull and (StrToInt(Donem2.Query1SEC1YSO.Text)=5) ...... then ...
Kod: Tümünü seç
if not Donem2.Query1SEC1YSO.IsNull and (trim(Donem2.Query1SEC1YSO.Text)<>'') and (StrToInt(Donem2.Query1SEC1YSO.Text)=5) ...... then ...
Sorunu çözmez ise hangi satırda ne hatası aldığını yazarsan birlikte çözmeye çalışırız.
Kolay gelsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
- belizahmet
- Üye
- Mesajlar: 10
- Kayıt: 20 Mar 2004 01:28
- Konum: Niğde/Bor
Sayın rsimsek Önerilerinizi Uyguladım ve uygulayacağım.Hatayı buldum Veri tabanı olarak BDE kullanıyorum. SQL'de ve Programda bütün SEC1YSO alanlarına boşluk kontrolü koydum.Böylece işlemim tamamlandı.Çok Teşekkür Ederim.Elimdeki programı degerlendirmenizi istiyorum.Eger ilgilenirseninz size nasıl ulaştırabilirim.Yayınlanmaya değer bulurda Dosyalar kısmında yayınlarsanız sevinirim.