1. sayfa
|
sum(miktar) olan yeri isnull(sum(miktar),0) olarak değiştir. bunu yaptıktan sonr zaten null olanlar otomatik sıfır gelecektir. ayrıca sorgunuda şöyle yapabilirsin Dim komut As New SqlCommand("SELECT ISNULL(SUM(miktar),0) FROM xxx where.....", baglanti) toplam= Convert.ToDouble(komut.ExecuteScalar) |
| 'System.Decimal' türündeki nesne 'System.String' türüne atılamadı. ayrıca c# kodu diyorum dim ler vb ta kullanılıyor sanırım |
|
SqlCommand komut = new SqlCommand("SELECT ISNULL(SUM(miktar),0) FROM xxx where.....", baglanti); double TOPLAM = Convert.ToDouble(komut.ExecuteScalar); |
|
Merhaba, Sorununuz veri çekme yönteminizden kaynaklanmakta okuyucu.GetString(); yerine okuyucu[0].ToString() kullanabilirsiniz. Ben böyle yaptığımda hata almadım. Ayrıca sanırım veritabanından sadece bir veri alacaksınız, eğer bir veri alacaksanız while döngüsü kullanmanıza gerek yok. Kodlarla göstermek gerekirse: reader.Read(); if(!string.IsNullOrEmpty(reader[0].ToString())) sonuc = reader[0].ToString(); burda IsNullOrEmpty() methodu şu if kontrolu işe aynı anlama gelmektedir: if(deger == null || deger == "") şeklinde. Eğer parametre olarak girilen değer null ise size True yanıtını verir. else sonuc = 0; devamında ise bağlantı ve okuyucunuzu kapatabilirsiniz. Birde size tavsiyem sayısal verileri tutmak için string kullanmayın int kullanın ki ram üzerinde gereksiz yer kaplamasın sayısal bir ifade string şeklinde saklanarak. Kolay gelsin... |
|
arkadaşlar ilginiz için teşekkür ederim . sayın özgür beyin ilk önerdiğiniz şey işe yaradı messagebox a yazdırıyor. sorumu biraz genişletmek istiyorum . benim bir tablom var serverdan belirli bir sql sorgusuyla çektiriyorum ve bir datagridview e yüklüyorum. daha sonra data grid in 1. sütununda yazan stokkodu kısmından birinci satırda olanı stokkd değişkenine atıp sonra yukarıdaki kodlarla bunu yeni sorguda arattırıp toplam mt yi datagridview1 de 12. sütuna yazdırmak istiyorum. Kod şu anda messagebox a yazıyor ama kodla açtığım datagridview1 deki 12. sütuna yazmaya gelince şu hatayı veriyor : Dizin aralık dışındaydı. Negatif bir değer olmamalı ve koleksiyonun boyutundan daha küçük olmalıdır. Parametre adı: index kodumun son hali : for (i = 0; i <= dataGridView1.Rows.Count; i++) { string stokkd = Convert.ToString(dataGridView1.Rows.Cells[1].Value); if (stokkd == null) { break; } else { strbaglanti = "Data Source=***;Initial Catalog=***;User ID=***;Password=***"; baglanti = new SqlConnection(strbaglanti); string sorgu = "SELECT ISNULL(SUM(MIKTAR),0) FROM ***D0006TBLVERSIPHAREKET WHERE STOKKODU='" + stokkd + "'"; SqlCommand komut = new SqlCommand(sorgu, baglanti); baglanti.Open(); SqlDataReader okuyucu = komut.ExecuteReader(CommandBehavior.CloseConnection); while (okuyucu.Read()) { sonuc = okuyucu[0].ToString(); } dataGridView1.Rows.Cells[12].Value = sonuc; okuyucu.Close(); }} |
| neyse sorunu çözdüm artık istediğim sütuna yazdırabiliyorum fakat int e çeviremiyorum string geliyor. sonuc değişkenini string olarak tanımlamıştım formun en üstünde ondan kaynaklanıyor sanki ama onu int tanımlayıncada olmuyor .ToString() komutunu silincede olmuyor burda takıldım. |
Gelen değeri int veri türüne çevirmeniz gerekiyor, bunun için int.Parse(okuyucu[0].ToString()); kodunu kullanabilirsiniz. Bu arada veri türleri konusunda biraz eksiğiniz olduğunu düşünüyorum, veri türleri konusuna tekrar göz atmanız faydalı olacaktır. Tekrardan kolay gelsin... |
Veritabanından tam sayı değeri geldiğine emin misiniz? Gelen değeri ekrana yazdırdığınız da ondalık sayı çıkıyorsa demek ki tam sayı değeri gelmiyor demektir o zaman double yada float kullanmak durumundasınız. |
Rica ederim, yardımcı olabilmiş isem ne mutlu bana. Fakat dediğim gibi veri türleri konusunu tekrar etmeniz gerekiyor. |
1. sayfa
kod :
string stokkd = "74745 vr526";
strbaglanti = "Data Source=******;Initial Catalog=***;User ID=***;Password=******";
baglanti = new SqlConnection(strbaglanti);
string sorgu = "SELECT SUM(MIKTAR) FROM ****D0006TBLVERSIPHAREKET WHERE STOKKODU='" + stokkd + "'";
SqlCommand komut = new SqlCommand(sorgu, baglanti);
baglanti.Open();
SqlDataReader okuyucu = komut.ExecuteReader(CommandBehavior.CloseConnection);
while (okuyucu.Read())
{
if (sonuc == null) { sonuc = "0"; }
else
{
sonuc = okuyucu.GetString(0);
}
}
MessageBox.Show(sonuc);
okuyucu.Close();
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.