filtrovani databaze   zodpovězená otázka

VB.NET, WinForms, Databáze

Zdravim vsecky, potrebuju pomoc s filtrovanim dat z databaze.

Hledal jsem ruzny clanky na webu,ale nic moc.

Chtel bych 2x dropdownlist a jeden textbox. Vubec nevim kterou cestu zvolit. Je na to nejaky pruvodce nebo tak? Jak rikam, na netu je dost dropdownmenu pro vyhledavani,ale v teto kombinaci co potrebuju to neni. Podarilo se mi maximalne vyfiltrovat data pres jeden dropdown,ale jakmile jsem zadal retezec do textboxu,tak se filtrovalo nejspis z puvodnich dat.

Mrknete nekdo na toto co mam,treba se najde nekdo,kdo pomuze.

rotected Sub btnFiltering_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnFiltering.Click
        Dim sqlQuery As String = "SELECT * from Table1"
        Dim conn As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString"))
        Dim sda As New SqlDataAdapter(sqlQuery, conn)
        Dim dtData As New DataTable()
        sda.Fill(dtData)

        Dim dvData As New DataView(dtData)
        Dim duData As New DataView(dtData)


        If (txtFilter.Text = "") Then
            'gvFilter.DataSource = dvData Filter prepsan Results
            'gvResults.DataSource = dvData
            'TextBox1.Text = dvData.Count 'datacount je 0
        Else

            dvData.RowFilter = "state = '" & txtFilter.Text.ToUpper() & "'"
            'TextBox1.Text = dvData.Count 'datacount>0 ale 00000
            duData = dvData
            gvFilter.DataSource = dvData
            gvFilter.DataBind()

        End If


        If (TxtFilter2.Text = "") Then
        Else
            duData.RowFilter = "City = '" & TxtFilter2.Text.ToUpper() & "'"

        End If



        gvResults.DataSource = duData
        gvResults.DataBind()


    End Sub

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

Pokud správně rozumím, že má jít o select podle jedné nebo více podmínek, tak bych to osobně řešil na straně databáze. V aplikaci maximálně ošetřit správné input hodnoty a v databázi si vytvořit proceduru, která podle hodnot parametrů provede správný select.

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

Ok,tak poslete nekdo priklad nebo tak neco.Navod...

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

Možná trochu přívetivosti pomůže příspěvek rychleji zodpovědět. Nikdo tu není povinen pomáhat.

A navíc určitě každý čeká na to, až bude moct někomu, kdo ani nepoprosí, poslat návod na řešení problému.

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

Tak to jsou ale nazory...Raci se nebudu rozepisovat.

Uz jsem to poresil,kdyz se nikdo neozval.

Uvedu to i sem,aby to pomohlo i ostatnim,kdyz nikdo nepise. Kazdy kdo se pak na to podiva,mi muze jeste podekovat,ze jsem to jsem vubec dal. No nic...

        If Not (txtFilter.Text = "") And (TxtFilter2.Text = "") Then
            duData.RowFilter = "state = '" & txtFilter.Text.ToUpper() & "'"

        End If

        If (txtFilter.Text = "") And Not (TxtFilter2.Text = "") Then
            duData.RowFilter = "City = '" & TxtFilter2.Text.ToUpper() & "'"
        End If

        If Not (txtFilter.Text = "") And Not (TxtFilter2.Text = "") Then
            duData.RowFilter = "state = '" & txtFilter.Text.ToUpper() & "' AND " + "City = '" & TxtFilter2.Text.ToUpper() & "'"
        End If

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

Říkal jste, že články tady nic moc. Možná, kdyby jste si přečetl ten o komunikaci s databází MSSQL (http://www.vbnet.cz/clanek--52-komunikac... ), zjistíte, jak předávat parametry do objektu SqlCommand, který lze použít k inicializaci SqlDataAdapteru místo jen querystringu. Vaše řešení skládaných dotazů je nepoužitelné, pokud se do filtrovacího textboxu zadá ukončovací znak apostrof. A navíc pomalé pro větší množství dat, protože se vše natáhne nejdříve ke klientovi.

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

diky za info

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