Řazení záznamů v dataGridViewu   otázka

VB.NET

Dobrý den, prosím o radu. Mám datagridView do kterého načítám data z SQL serveru 2000.

A teď můj problém: pokud načtu data přes SQLclient nejdou mi data v datagridView řadit.

příklad:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
    Sub nacistData()
 
    dim connectionString As String = "SERVER=mujserver;DATABASE=pokus;UID=userA;PWD=pswd"
    dim spojeni As New SqlClient.SqlConnection(connectionString)
    dim dotaz As String
    dim com As SqlClient.SqlCommand
    dim bindingSource1 As BindingSource = New BindingSource
Dim zasobnikNacistUhrady As BindingSource = New BindingSource
 
 
        On Error GoTo handlerChybaSpojeni
        spojeni.Open()
        On Error GoTo 0
 
 
 
        dotaz = ("zde_volam_proceduru_serveru")
        com = New SqlClient.SqlCommand(dotaz, spojeni)
 
        On Error GoTo HandlerChybaProcedury
        com.ExecuteScalar()
        On Error GoTo 0
 
 
 
 
        zasobnikNacistUhrady.DataSource = com.ExecuteReader
        frmaplikace.DataGridViewUhrady.DataSource = zasobnikNacistUhrady
 
 
 
 
        spojeni.Close()
 
 
 
        Exit Sub
 
 
HandlerChybaProcedury: chybaProcedury(dotaz)
        Exit Sub
 
handlerChybaSpojeni: chybaSpojeni()
        Exit Sub
 
    End Sub

Řazení mám samozřejmě povolené. Pokud do stejného datagridviewu načtu ta samá data pře OLE DB řazení mi funguje (data nacpu do dataTable), ale příjde mi "neelegantni" používat OLE DB když mám data na SQL serveru a taky už nemám kontrolu nad připojením/odpojením (můžu sice dát spojeni.open a spojeni.close, ale pokud ho neotevřu data se mi stejně načtou, což se mi moc nelíbí).

Zde je ještě kod jak načítám data přes OLE DB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
    dim connectionString2 As String = "Provider=SQLOLEDB;SERVER=mujserver;DATABASE=pokus;UID=userA;PWD=pswd"
 
 
    dim dbAdapter As OleDb.OleDbDataAdapter
    dim spojeni As New OleDb.OleDbConnection(connectionString2)
    dim dotaz As String
 
 
        dbUhrady.Clear()
 
 
        On Error GoTo handlerChybaSpojeni
        spojeni.Open()
        On Error GoTo 0
 
 
 
     ("zde_volam_proceduru_serveru")
 
 
 
 
        dbAdapter = New OleDb.OleDbDataAdapter(dotaz, connectionString2)
 
        On Error GoTo HandlerChybaProcedury
        dbAdapter.Fill(dbUhrady)
        On Error GoTo 0
 
        frmaplikace.DataGridViewUhrady.DataSource = dbUhrady
 
 
 
 
        spojeni.Close()
 
 
 
 
        Exit Sub
 
 
HandlerChybaProcedury: chybaProcedury(dotaz)
        Exit Sub
 
handlerChybaSpojeni: chybaSpojeni()
        Exit Sub

S SQLclientem to bylo OK až na to řazení, což samozřejmě není ideální.

Díky za jakoukoliv radu:)

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

A co použít nové technologie - LINQ. Btw, to s tím "On error goto" myslíte fakt vážně?

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

Ano myslím, každý něják začíná.

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

Proč používáte ve verzi se SqlClientem DataReader, který je určen pouze pro dopředné readonly procházení záznamů?

Použijte SqlDataAdapter, Dataset a DataTable. Na DataTable v DataSetu napojte objekt BindingSource a na něj DataGridView. Data pak půjdou nejen řadit, ale i filtrovat. Např. pomocí metody Sort a Filter objektu BindingSource.

No a pro obsluhu výjimek bych doporučil misto On Error - Goto raději konstrukci Try - Catch...

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

To načítání pomocí sqlClienta jsem dělal podle nějákého návodu. Možná byl dokonce na tomto webu ale to si nejsem jistý.

Obsluhu vyjímek se teprve učím zpracovávat. Každopádně děkuji za Vaši radu:)

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

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