Načítání dat z dataTable   zodpovězená otázka

VB.NET, ADO.NET, WinForms, Databáze

Ahoj, pokouším se vyřešit jak načítat data přímo z dataTable, ale něják nemůžu přijít na to jak:(

O co jde:

Do datatable načtu dle zadaných kriteríí záznamy z SQL serveru. S těmito záznamy potřebuju provést několik operací (sečíst některé hodnoty, udělat průměry atd.) a teprve výsledky načítat třeba do pole a po skončení výpočtů zobrazit výsledky v dataGridView. Bohužel nemůžu přijít na to jak se čte přímo z dataTable. Prozatím to mám vyřešeno tak, že mám dataTable napojenou na pomocný dataGridView a hodnoty pro výpočet získávám odtud (procházím ho řádek po řádku). Vím že toto řešení je prasečinka o výkonu nemluvě, proto bych byl rád kdyby mi někdo poradil:)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud jde jen o čtení řádků přímo z DataTable, pak je řešení jednoduché:


        ' prochazeni vsech radku
        For Each row As DataRow In dataTable.Rows

            Dim hodnotaSloupce As Integer

            ' pristupovani ke sloupci pomoci jmena
            hodnotaSloupce = CType(row("JmenoSloupce"), Integer)

            ' pristupovani ke sloupci pomoci indexu
            hodnotaSloupce = CType(row(2), Integer)

        Next

Agregační funkce lze udělat například pomocí LINQ:

Dim soucet As Integer = (From r As DataRow In dataTable.Rows Select CType(r("JmenoSloupce"), Integer)).Sum()
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Snáď by som doplnil ešte príklad čítania bez použitia cyklu For Each

        Dim dt As New DataTable
        dt.Columns.Add("Id")
        dt.Columns.Add("Mesto")
        dt.Rows.Add(New Object() {"0", "Bratislava"})
        dt.Rows.Add(New Object() {"1", "Praha"})
        MsgBox("Hlavné mesto Slovenska je " & dt.Rows(0).Item("Mesto").ToString)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Oba příklady (načítání pomocí FOR EACH i bez něj) mi v pořádku funguje a velmí za toto nakoputí děkuji:) Chtěl jsem ale vyzkouet ten LINQ a tam mi to hází chybu u r. (projekt ani nezkompiluji). Ale teď si tak uvědomuji, já mám VS 2005 profesional. Pokud se nepletu linq je implementován až od VS 2008 nebo to tak není?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je pravda, LINQ funguje až od verze VS 2008. V 2005 musíce projít všechny řádky a sečíst hodnoty ručně.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback