[ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 24.02.12
Prihlásený: 13.02.15
Príspevky: 10
Témy: 3 | 3

Dobrý deň,

v práci sme mali staré programy v 602SQL. Dostali sme za úlohu prepísať ich do visual basicu. Vývojové prostredie sme použili Microsoft visual studio a na DB používame Microsoft sql management studio.
Neviem vyriešiť tento vzniknutý problém:

Ak spustím niektorý zo SQL štandardných príkazov nachádzajúcich sa v programe (napr. select) priamo v MS managemet studiu tak vykonanie je okamžité.
Ak ten istý príkaz spúšťam v programe trvá to niekoľko sekúnd. Je to neúmerne dlhé. Dáta zo selektu sa načítavajú do datagridu. Načítanie dát prebieha v loade formulára a preto jeho otvorenie dosť trvá. Formulár sa otvorí až keď načíta dáta.
Mám dojem, že táto odozva je spojená len s načítaním dát do datagridov nakoľko problémy s odozvou systému na zapísanie zmien alebo vloženie nových dát nemáme.

Ak ste sa s tým niekto stretli vopred ďakujem za skúsenosti a rady. :)


Offline

Skúsený užívateľ
Skúsený užívateľ
visual basic - dlhe otvaranie formulara s datagridom plneneho z DB

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14571
Témy: 66 | 66
Bydlisko: Žilina

Príčinou spomalenia môže byť viacero... Bolo by fajn, keby si mohol dať ukážku toho svojho kódu, ktorý sa vykonáva pri spustení, lebo takto môžme len tipovať, v čom je konkrétne problém. Vo všeobecnosti nie je dobrý nápad natiahnuť všetky dáta, ale väčšinou sa na to používa stránkovanie, prípadne aj filtrovanie údajov podľa kritérií.
Plus k tomuto všetkému, načítanie dát by som určite riešil asynchrónne aby to neblokovalo UI vlákno...


_________________
C#, PHP, ...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 24.02.12
Prihlásený: 13.02.15
Príspevky: 10
Témy: 3 | 3

Každý formulár je napísaný takýmto spôsobom. Ten select zvyčajne ťahá okolo 50 000 riadkov čo si myslím nemal byť problém

Kód:
 Private Sub Prehlad_analyz_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Cis_prodTableAdapter.Fill(Me.***DataSet.Cis_prod)
        Me.Cis_podskupTableAdapter.Fill(Me.***DataSet.Cis_podskup)
        Me.Cis_skupTableAdapter.Fill(Me.***DataSet.Cis_skup)
....
        Nacitaj_analyzy()
END SUB

  Private Sub Nacitaj_analyzy()
cmdText = "SELECT Analyzy.ID_ana, Analyzy.Vzorka, Analyzy.Nazov_ana, Analyzy.Hodnota, Analyzy.Zaciatok, Analyzy.Koniec, " _
            & "FORMAT(Analyzy.Zaciatok,'yyyy-MM-dd') AS Datum_zaciatok, FORMAT(Analyzy.Koniec,'yyyy-MM-dd') AS Datum_koniec, " _
            & "Analyzy.Analyzoval, Analyzy.Minimum_a, Analyzy.Maximum_a, Analyzy.Vymazana, Analyzy.Archiv, Analyzy.ID_uziv_ana, " _
            & "Vzorky.Meno_vzorky, Vzorky.ID_cis_prod, Cis_prod.Nazov, Cis_prod.ID_podskup, Parameter.Nazov_param, Parameter.Jednotka, " _
            & "(SELECT Priezvisko + ' ' + Meno FROM Uzivatelia WHERE (ID_uziv = Analyzoval)) AS Analyzoval_meno, " _
            & "(SELECT ID_skup FROM Cis_podskup WHERE Cis_podskup.ID_podskup = Cis_prod.ID_podskup) AS skup " _
            & "FROM Analyzy INNER JOIN Vzorky ON Analyzy.Vzorka = Vzorky.ID_vzorky " _
            & "INNER JOIN Cis_ana ON Analyzy.Nazov_ana = Cis_ana.ID_cis_ana INNER JOIN Cis_prod ON Vzorky.ID_cis_prod = Cis_prod.ID_prod " _
            & "AND Cis_ana.ID_prod = Cis_prod.ID_prod INNER JOIN Parameter ON Cis_ana.Param_ID = Parameter.ID_param " _
            & "WHERE ((Analyzy.Archiv IS NULL OR Analyzy.Archiv = 0) AND (Analyzy.Vymazana IS NULL OR Analyzy.Vymazana = 0) AND Analyzoval IS NOT NULL) " _
            & "ORDER BY Analyzy.Zaciatok DESC"

        Try
            dsAnalyzy = New DataSet()
            bsAnalyzy = New BindingSource()
            daAnalyzy = New SqlClient.SqlDataAdapter(cmdText, DBconn.DBCONN)
            dsAnalyzy.Clear()
            daAnalyzy.Fill(dsAnalyzy)
            bsAnalyzy.DataSource = dsAnalyzy.Tables(0)
            Me.dgAnalyzy.DataSource = bsAnalyzy
            Sprav_filter()
            bsAnalyzy.Filter = txtFilter
            Me.dgAnalyzy.Refresh()

        Catch ex As Exception
            MessageBox.Show("Chyba načítania hodnôt ... ", "Chyba")
        End Try

    End Sub


Offline

Skúsený užívateľ
Skúsený užívateľ
visual basic - dlhe otvaranie formulara s datagridom plneneho z DB

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14571
Témy: 66 | 66
Bydlisko: Žilina

A reálne potrebuješ zobraziť 50000 riadkov? Lebo potom samozrejme, že poskladať 50 000 riadkov do Gridu chvíľku trvá..
Pokiaľ ale vážne potrebuješ toľko výsledkov, proste sprav asynchrónne načítanie údajov a naplnenie datagridu... :)


_________________
C#, PHP, ...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 24.02.12
Prihlásený: 13.02.15
Príspevky: 10
Témy: 3 | 3

Ďakujem, vyskúšam. Máme ešte nejaké svoje tipy že ako to vylepšiť tak musíme to otestovať. Nepoužívame indexovanie tak ešte to skúsime


Offline

Skúsený užívateľ
Skúsený užívateľ
visual basic - dlhe otvaranie formulara s datagridom plneneho z DB

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14571
Témy: 66 | 66
Bydlisko: Žilina

Indexovanie by pomohlo pokiaľ by samotný dotaz trval dlho, ale podľa tvojho opisu to vyzerá tak, že vytvorenie gridu je úzkym hrdlom aplikácie.


_________________
C#, PHP, ...
 [ Príspevkov: 6 ] 


visual basic - dlhe otvaranie formulara s datagridom plneneho z DB



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Visual Basic

v Ostatné

3

821

10.08.2011 19:03

Fico

V tomto fóre nie sú ďalšie neprečítané témy.

Visual Basic Kalkulačka

v Ostatné

1

1119

29.04.2011 12:28

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Visual Basic 2008

v Ostatné programy

2

862

06.04.2009 13:34

Ominous

V tomto fóre nie sú ďalšie neprečítané témy.

Knihy Visual Basic

v Ostatné

2

1350

08.09.2009 14:25

reDo

V tomto fóre nie sú ďalšie neprečítané témy.

manual k Visual Basic

v Ostatné

5

4132

17.05.2009 10:06

M.Valasek

V tomto fóre nie sú ďalšie neprečítané témy.

visual basic exe subor

v Ostatné

1

1606

08.01.2010 16:05

semo1212

V tomto fóre nie sú ďalšie neprečítané témy.

Visual Basic premenná public

v Ostatné

0

563

04.12.2013 11:40

Karo88

V tomto fóre nie sú ďalšie neprečítané témy.

Stiahnutie Visual Basic 6

v Ostatné

8

4086

15.03.2009 20:24

prandof

V tomto fóre nie sú ďalšie neprečítané témy.

Visual Basic 2008 tiene

v Ostatné

3

790

27.04.2010 22:13

Patkoo

V tomto fóre nie sú ďalšie neprečítané témy.

visual basic 2008 textbox

v Ostatné

2

779

02.01.2010 17:37

eragon124

V tomto fóre nie sú ďalšie neprečítané témy.

[Visual Basic 2010] Minimalizovanie programu

v Ostatné

0

434

08.04.2021 17:22

marian_sk

V tomto fóre nie sú ďalšie neprečítané témy.

visual basic pre 64bit system

v Ostatné

0

769

29.09.2010 23:08

mutte

V tomto fóre nie sú ďalšie neprečítané témy.

OpenFileDialog vo Visual Basic 2008

v Ostatné

17

3358

15.08.2011 18:59

marian_sk

V tomto fóre nie sú ďalšie neprečítané témy.

Vista & Visual basic 6

v Windows

1

547

08.02.2009 12:07

Mettiu

V tomto fóre nie sú ďalšie neprečítané témy.

Kniha C# alebo Visual Basic

v Backend

1

634

07.03.2014 21:42

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Visual basic - rozdiely vo verziách

v Ostatné

1

767

27.04.2010 22:12

Patkoo



© 2005 - 2026 PCforum, edited by JanoF