İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. SDN Forum
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Visual studio 2010 da listview sütunu toplamak

simbiyot15.02.20139 cevap5.241 görüntüleme
#1
Merhaba Arkadaşlar,

Konu başlığında açıkladığım gibi vs2010 da listview'daki bir sütunun toplamını textbox'a veren bir kod arıyorum. Yardımcı olursanız minettar olurum.

İyi günler...
Cevaplar
#2
Aşağıdaki kodu bir incele istersen.

        ' Tabloyu yarat
        Dim listView1 As New ListView()
        listView1.Bounds = New Rectangle(New Point(10, 10), New Size(300, 200))
        listView1.View = View.Details
        listView1.GridLines = True
        listView1.FullRowSelect = True
        listView1.HideSelection = False
        listView1.MultiSelect = False
        listView1.Columns.Add("Column A")
        listView1.Columns.Add("Column B")
        listView1.Columns.Add("Column C")
        Dim tempValue As Integer = 0
        For i As Integer = 0 To 9
            Dim lvi As New ListViewItem
            lvi.Text = "Row " + i.ToString
            tempValue = tempValue + 1
            lvi.SubItems.Add(tempValue.ToString)
            tempValue = tempValue + 1
            lvi.SubItems.Add(tempValue.ToString)
            listView1.Items.Add(lvi)
        Next

        Dim Sum As Integer = 0
        Dim c As Integer = 1        'Birinci sutunu seç
        For r As Integer = 0 To listView1.Items.Count - 1
            Sum = Sum + listView1.Items(r).SubItems(c).Text
        Next
        'Geri dönen değeri textbox'a aktar
        TextBox1.Text = Sum.ToString
        Controls.Add(listView1)
simbiyot Konuyu açan
#3
Cevabınız için teşekkürler. Sorunsuz çalışıyor normal bir listview de harika.

Fakat benim listeyi çağırma kodum mysql ile bağlantılı. Mesela,

Dim sqlQery As String = "SELECT * FROM th_koy"
        Dim sqladapter As New MySqlDataAdapter
        Dim sqlcommand As New MySqlCommand
        Dim TABLE As New DataTable
        Dim i As Integer
        With sqlcommand
            .CommandText = sqlQery
            .Connection = sConnection
        End With


        With sqladapter
            .SelectCommand = sqlcommand
            .Fill(TABLE)
        End With


        For i = 0 To TABLE.Rows.Count - 1
            With sumerlist
                .Items.Add(TABLE.Rows(i)("Sıra"))
                With .Items(.Items.Count - 1).SubItems
                    .Add(TABLE.Rows(i)("Şehir"))
                    .Add(TABLE.Rows(i)("Öngörülen"))
                    .Add(TABLE.Rows(i)("ilcesayisi"))
                    .Add(TABLE.Rows(i)("koysayisi"))
                    
                End With


            End With
        Next


köy sayısını gösteren sütundaki tüm değerleri toplayıp altındaki textbox a yazdırmam lazım. Sizin verdiğiniz koda göre uyguladım liste çağırmayı ama yinede başarılı olamadım.

Buradaki kod'a uyum sağlayabilir miyiz?
İlginiz ve alakanız için gerçekten minettarım. Çok teşekkürler.
#4
simbiyot dedi: ↑
Cevabınız için teşekkürler. Sorunsuz çalışıyor normal bir listview de harika.

Fakat benim listeyi çağırma kodum mysql ile bağlantılı. Mesela,

Dim sqlQery As String = "SELECT * FROM th_koy"
        Dim sqladapter As New MySqlDataAdapter
        Dim sqlcommand As New MySqlCommand
        Dim TABLE As New DataTable
        Dim i As Integer
        With sqlcommand
            .CommandText = sqlQery
            .Connection = sConnection
        End With


        With sqladapter
            .SelectCommand = sqlcommand
            .Fill(TABLE)
        End With


        For i = 0 To TABLE.Rows.Count - 1
            With sumerlist
                .Items.Add(TABLE.Rows(i)("Sıra"))
                With .Items(.Items.Count - 1).SubItems
                    .Add(TABLE.Rows(i)("Şehir"))
                    .Add(TABLE.Rows(i)("Öngörülen"))
                    .Add(TABLE.Rows(i)("ilcesayisi"))
                    .Add(TABLE.Rows(i)("koysayisi"))
                    
                End With


            End With
        Next


köy sayısını gösteren sütundaki tüm değerleri toplayıp altındaki textbox a yazdırmam lazım. Sizin verdiğiniz koda göre uyguladım liste çağırmayı ama yinede başarılı olamadım.

Buradaki kod'a uyum sağlayabilir miyiz?
İlginiz ve alakanız için gerçekten minettarım. Çok teşekkürler.
Basit bir proje hazırlayıp link verseydin test edebilirdim ama sanırım istediğin böyle birşey test edemedim bir kontrol et
dim sayaç as integer = 0
For i = 0 To TABLE.Rows.Count - 1
            With sumerlist
                .Items.Add(TABLE.Rows(i)("Sıra"))
                With .Items(.Items.Count - 1).SubItems
                    .Add(TABLE.Rows(i)("Şehir"))
                    .Add(TABLE.Rows(i)("Öngörülen"))
                    .Add(TABLE.Rows(i)("ilcesayisi"))
                    .Add(TABLE.Rows(i)("koysayisi"))
                    sayaç = sayaç + TABLE.Rows(i)("koysayisi")
                End With
            End With

Next
me.textbox1.text = sayaç.tostring


döngünün içinde eklenen her köy sayısı aynı zamanda sayaç integerinede ekleniyor ve bunda biriktiriliyor döngüden çıktığında döngü içinde kaç adet köy eklenmişse sayaç integerinin değeride o olmuş oluyor böylece textbox'a sayaç değerini yazdırıyoruz kod her çalıştırıldığında sayaç'ın değeri 0'oluyor bu kısım sana uygunmu bilmiyorum..

eğer değilse daha önce eklenmiş olanlarıda üzerine eklemek istiyorsan

dim sayaç as integer
if me.textbox1.text ="" then
sayaç = 0
else
sayaç = me.textbox1.text
endif
For i = 0 To TABLE.Rows.Count - 1
            With sumerlist
                .Items.Add(TABLE.Rows(i)("Sıra"))
                With .Items(.Items.Count - 1).SubItems
                    .Add(TABLE.Rows(i)("Şehir"))
                    .Add(TABLE.Rows(i)("Öngörülen"))
                    .Add(TABLE.Rows(i)("ilcesayisi"))
                    .Add(TABLE.Rows(i)("koysayisi"))
                    sayaç = sayaç + TABLE.Rows(i)("koysayisi")
                End With
            End With

Next
me.textbox1.text = sayaç.tostring
#5
ListView benzer şekilde DataTable'lar da şu şekilde yapabilirsin...

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dt As New DataTable
        Dim dr As DataRow
        Dim dc As DataColumn
        Dim Sum As Integer = 0
        Dim c As Integer = 1  'Toplanacak column index'i
        Dim pData As Integer(,) = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}}
        dt = CreateDataTable(pData)

        For r = 0 To dt.Rows.Count - 1
            Sum = Sum + dt.Rows(r)("Column1") 'yada dt.Rows(r)(c)
        Next
        MsgBox(Sum)
    End Sub

    Public Function CreateDataTable(ByVal pData As Integer(,)) As DataTable
        Dim dt As New DataTable
        Dim newrow As DataRow
        For i As Integer = 0 To UBound(pData, 2)
            dt.Columns.Add(New DataColumn("Column" + i.ToString))
        Next
        For i As Integer = 0 To UBound(pData, 1)
            newrow = dt.NewRow
            For ii As Integer = 0 To UBound(pData, 2)
                newrow(ii) = pData(i, ii)
            Next
            dt.Rows.Add(newrow)
        Next
        Return dt
    End Function
End Class

#7
simbiyot dedi: ↑
Ben bir örnek yükledim dediğiniz gibide denedim fakat olmadı.

http://ul.to/pj9v1bqh
Örneği access kullanarak yapsaydınız bağlantı sağlama kodu dışında diğerleri aynı bir fark yok mysql yüklü değil bilgisayarda çoğu kişidede olduğunu sanmıyorum bu yüzden örneği çalıştırmak mümkün olmuyor
simbiyot Konuyu açan
#8
Doğru mu yanlış mı bilemiyorum ama benim mantığım şu,

Normalde listview da değerleri girince ve kayıt işlemi vb'nin altında olunca sıkıntı yok toplama işlemi gerçekleşiyor.

Diğer bir yandan listview da değerleri girdiğimde mysql'e komut yollayarak oraya kayıt ettiriyorum ve tabloları çağırıp toplama işlemini yaptırınca değer hep 0 oluyor.

Yani ben bu işlemide zannedersem mysql üzerinden komut verip yaptırmam gerekiyor. Örneğin "SELECT sum(köysayisi) From th_koy" gibi...

Burada da şöyle bir problem var. Bu toplatma işini yaptırdıktan sonra değeri bir yere kayıt etmiyor haliyle benim bu değeri çağırıp textbox'a yazdıramıyorum.

Bir yolu var ama bende çözemedim. :)
#9

        With sqladapter
             .SelectCommand = sqlcommand
             .Fill(TABLE)
         End With


Fill table ile geri dönen DataTable ile işlem yapabilirsin. Üsteki post'larda DataTable nasıl okunacağına ilişkin örnek gösterdim.
Umarım faydalı olabilmişimdir.
simbiyot Konuyu açan
#10
algea cevabın için teşeekkür ederim . Fakat denedim yine olmadı.

Ama cevabımı buldum. Tahminim doğruymuş. Mysqlde yeni bir tablo açıp sadece toplananları kayıt ettirebileceğim bir yer oluşturdum ve daha sonra query komutu verdirttim vb de. Örnek
UPDATE th_toplam SET köysayisi = (SELECT sum(köysayisi) from th_koy)


Daha sonra toplamını kayıt ettirdiğim sütunu textbox'ın birine eşitledim. Böylece sorunum çözülmüş oldu. İlginiz alakanız ve cevaplarınız için gerçekten teşekkür ediyorum. :)

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.

Reklam