Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VB.Net operacje na DataGridView - pobrane z pliku Excela

02 Kwi 2019 17:27 240 7
  • Poziom 4  
    Witam. Mam pytanie, jak można wykonać operacje na komórkach w DataGridView. Mamy dwie kontrolki DataGridView w VB.Net i chcemy np. sumować poszczególne komórki ze sobą z obu kontrolek i wklejać wynik do trzeciej kontrolki DataGridView??? Istnieje taka możliwość? Jak kod wygląda? Proszę o pomoc.

    Dodano po 7 [minuty]:

    Pliki są pobierane do obu kontrolek z plików Excela, chodzi o sumowanie i wyświetlanie wyniku z poszczególnych pól z obu DataGridView
  • Poziom 18  
    Dgv.rows(0).cells(2).value=Dgv.rows(0).cells(0).value + Dgv.rows(0).cells(1).value

    Doda pierwsza i druga komórkę w pierwszym wierszy i wynik wpisze w wierszu 1,kolumnie 3
  • Poziom 4  
    Działa, tylko są następujące problemy:
    w czwartej kolumnie wiersz pierwszy mi źle sumuje: raport.Dgv3.Rows(0).Cells(3).Value = Dgv1.Rows(0).Cells(3).Value + Dgv2.Rows(0).Cells(3).Value wartość komórek Dgv1 i Dgv2 jest 5 zatem suma to 10, ami pokazuje 55. Następnie jak chcę kolejny wiersz sumować (raport.Dgv3.Rows(1).Cells(1).Value = Dgv1.Rows(1).Cells(1).Value + Dgv2.Rows(1).Cells(1).Value) to mi błąd wywala "index był spoza zakresu" Dgv1 oraz Dgv2 maja po jakieś 50 wierszy. Proszę o pomoc
  • Poziom 18  
    Domyślnie wartość będzie typu string, zdeklaruj wartości int, przypisz im wartości z komórek, zsumuj i wynik wpisz do docelowej komórki. Drugi przypadek to prawdopodobnie musisz najpierw dodać wiersz w raport.Dgv3.Rows(1).Cells(1).Value i dopiero wpisać wynik.
  • Poziom 4  
    Działa. Teraz chciałem jeszcze dodać wyszukiwanie dynamiczne dla Dgv1 oraz Dgv3. Dla Dgv1 mam kod pobierania danych z Excela:
    Code:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            With OpenFileDialog
                .Title = "Importieren"
                .InitialDirectory = TextBox1.Text
                .Filter = "All Files (*.*)|*.*|Excel (*.xlsx)|*.xlsx|Pliki CSV (*.csv)|*.csv|Excel XLS (*.xls)|*xls"
                .ShowDialog(Me)
            End With
            excel = OpenFileDialog.FileName
            conn = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
            dta = New System.Data.OleDb.OleDbDataAdapter("select * from [Arkusz1$]", conn)
            dta.TableMappings.Add("Table", "Net-informations.com")
            dts = New System.Data.DataSet
            dta.Fill(dts)
            Dgv1.DataSource = dts.Tables(0)
            conn.Close()
        End Sub

    Następnie chcę dynamicznie wyszukiwać poprzez wpisywanie tekstu w TextBox kod:
    Code:

    Private Sub wyszukaj_TextChanged(sender As Object, e As EventArgs) Handles wyszukaj.TextChanged
            Dim dv As DataView = New DataView()

            dv.RowFilter = String.Format("Model like '%" & wyszukaj.Text & "%", Me.wyszukaj.Text)
            Dgv1.DataSource = dv
        End Sub

    Niestety nie działa, wydaje mi się że musi tu być jeszcze DataTable? Jak to dodać do tego kodu żeby działało bo już nie mam pomysłu. Dla Dgv3 pewnie wyszukiwanie jeszcze inaczej musi się odbywać gdyż jest ono suma Dgv1 i Dgv2 oraz jest otwierane w nowym oknie. Proszę o pomoc

    Dodano po 55 [minuty]:

    kod dla TextBox przerobiłem teraz na taki:
    Code:

    Private Sub wyszukaj_TextChanged(sender As Object, e As EventArgs) Handles wyszukaj.TextChanged

            Dgv1.DataSource = dts.Tables(0)
            tabela = dts.Tables(0)
            tabela.DefaultView.RowFilter = "Column1 Like '%" & wyszukaj.Text & "%'"

        End Sub

    Teraz wywala że nie ma kolumny o nazwie Column1. Plik jest exportowany z excela do Dgv1. Kolumny nie mają standardowych nazw w takim przypadku tzn. Column1, Column2 itd? Jak się odwołać do pierwszej kolumny w moim przypadku??
  • Poziom 18  
    Filtrowanie w datagridview jest toporne, spróbuj nieco inaczej poprzez iteracje

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 4  
    Może jest możliwość żeby sumy komórek Dgv1 + Dgv2 zamiast wrzucić wynik do Dgv3 to wyświetlić go w ListView ??? ListView prościej można przeszukiwać? Jest taka możliwość i jakby to wyglądało w kodzie? Proszę o pomoc