Visual Basic'de text Box'a girilen değer yoksa hesaba katılmasın.

byeni

Üye
Katılım
17 Eki 2006
Mesajlar
28
Puanları
1
Yaş
60
Konum
Ege
Arkadaşlar örnek olarak veriyorum,programda 6 adet textbox'ım var bunlara değer girilip formül'e uygulanacak.(Dirençlerin paralel hesaplanması ile ilgili gibi).Fakat her zaman 6 değer girilmeyeceği için kaç adet textbox'a değer girildiyse formulün o şekilde hesaplanması lazım.Eğer ben 3 adet değer girersem hata veriyor.Sıfır girersem saçma sapan sonuçlar çıkıyor.Örnek :
PSonuç.Text = (1 / PR1.Text) + (1 / PR2.Text) + (1 / PR3.Text) + (1 / PR4.Text) + (1 / PR5.Text) + (1 / PR6.Text)
Eğer 3 değer giriyorsam formülün ilk üç değere göre olmasını istiyorum.Yani : PSonuç.Text = (1 / PR1.Text) + (1 / PR2.Text) + (1 / PR3.Text)
Bunu nasıl yapabilirim.Yardımcı olabilecek arkadaş varmıdır acaba?
 
Elimde jav script olarak örnek var.Bunu vb kodlamaya çevirebilirmiyiz acaba?

function Hesapla(form) {
with(Math) {
var Precision= 3;

var R1= Number(form.R1.value);
var R2= Number(form.R2.value);
var R3= Number(form.R3.value);
var R4= Number(form.R4.value);
var R5= Number(form.R5.value);
var R6= Number(form.R6.value);
var Rp;


if(R6) {
Rp= 1/(1/R1+1/R2+1/R3+1/R4+1/R5+1/R6);
} else if(R5) {
Rp= 1/(1/R1+1/R2+1/R3+1/R4+1/R5);
} else if(R4) {
Rp= 1/(1/R1+1/R2+1/R3+1/R4);
} else if(R3) {
Rp= 1/(1/R1+1/R2+1/R3);
} else if(R2) {
Rp= 1/(1/R1+1/R2);
} else if(R1) {
Rp= 1/(1/R1);
}



form.Rp.value= Rp.toPrecision(Precision);
}
}


</script>
 
matematik kuralı hiçbir sayı sıfıra bölünemez. Eğer kutuda değer yoksa yada sıfırsa sonuç işlemine atlama yaptırılarak deniye bilirsiniz.
 
Son düzenleme:
VB'de bu birçok şekilde yapılabilir, aşağıda ilk aklıma geleni yazıyorum, textboxların hem doluluk kontrolünü hemde sıfırdan büyük olma kontrolünü yapıyor. Ben Hesapla adında bir butonun click yordamına atadım, sonucu Textboxa değilde bir Label a yazdırabilirsin.
------------------------
Private Sub hesapla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hesapla.Click
Dim Sonuc As Double = 0
If PR1.TextLength > 0 And Val(PR1.Text) > 0 Then Sonuc += (1 / Val(PR1.Text))
If PR2.TextLength > 0 And Val(PR2.Text) > 0 Then Sonuc += (1 / Val(PR2.Text))
If PR3.TextLength > 0 And Val(PR3.Text) > 0 Then Sonuc += (1 / Val(PR3.Text))
If PR4.TextLength > 0 And Val(PR4.Text) > 0 Then Sonuc += (1 / Val(PR4.Text))
If PR5.TextLength > 0 And Val(PR5.Text) > 0 Then Sonuc += (1 / Val(PR5.Text))
If PR6.TextLength > 0 And Val(PR6.Text) > 0 Then Sonuc += (1 / Val(PR6.Text))
PSonuc.Text = FormatNumber(Sonuc, 2)
End Sub
 
Çözüm önerileriniz için çok teşekkürler,çözümü buldum.Sorunsuz sonuç alabiliyorum.Kod aşağıda,herhangi bir sorun yok zannedersem.

Dim Sonuc As Double
If Val(PR1.Text) > 0 Then Sonuc = 1 / (1 / PR1.Text)
If Val(PR2.Text) > 0 Then Sonuc = 1 / (1 / PR1.Text + 1 / PR2.Text)
If Val(PR3.Text) > 0 Then Sonuc = 1 / (1 / PR1.Text + 1 / PR2.Text + 1 / PR3.Text)
If Val(PR4.Text) > 0 Then Sonuc = 1 / (1 / PR1.Text + 1 / PR2.Text + 1 / PR3.Text + 1 / PR4.Text)
If Val(PR5.Text) > 0 Then Sonuc = 1 / (1 / PR1.Text + 1 / PR2.Text + 1 / PR3.Text + 1 / PR4.Text + 1 / PR5.Text)
If Val(PR6.Text) > 0 Then Sonuc = 1 / (1 / PR1.Text + 1 / PR2.Text + 1 / PR3.Text + 1 / PR4.Text + 1 / PR5.Text + 1 / PR6.Text)
PSonuc.Text = FormatNumber(Sonuc, 2)
 
neden altı tane textbox kullanıyorsun ? yani altı tane parelel dirençten fazlası olamaz mı ?
bir textbox kullanıp döngü kurmanı tavsiye ederim. kullanıcı istediği kadar giriş yapabilir böylece
 
Soru sorarken aklıma gelmemişti.senin cevabından sonra mantıklı olduğunu gördüm ve uyguladım.Fikrin için teşekkürler.Bu arada bir soru sorsam cevaplarsan memnun olurum.Led direnci hesaplarken değerleri buluyorum tabiki bu değerler her zaman bulunamayacağı için en yakın direnç değerini nasıl gösterebiliriz.Bunu bir fonksiyonla ve if else yapabileceğimi düşündüm ama deneyince başaramadım.Yardımın için tekrar teşekkürler.
 
bende belirli değerleri seçtirmem gerekti. bu konu ile ilgili vb forumunda sormuştum. bana şöyle bir kod verdiler:

For xa = 0 To Combo1.ListCount - 1
If ( Hesaplanan Değer ) < (Combo1.List(xa)) Then Combo1.ListIndex = xa: Exit For
Next xa

burada kodlarla oynayarak istediğin sonucu alırsın. ben bu kodları değiştirerek bir büyüğünü bir küçüğünü eşitini seçtirdim.
combobox'a standartlarını eklersin sonuca göre seçim yapar.
 
aslında lenth ile dde uzunluga bakabilirsin karakter veya noktalama işaretlerini bulmak içinde cache-try kullanabilirsin.
 
Verdiğin bilgi için teşekkürler.Deneyeceğim.
 

Forum istatistikleri

Konular
128,312
Mesajlar
916,605
Kullanıcılar
450,148
Son üye
AİŞTAR

Yeni konular

Geri
Üst