[ nem @ 08.01.2015. 09:22 ] @
Pozdrav,
napravio sam neku vrstu poslovnog programa koji koristi SQL bazu podataka.
Korisnik se uloguje, unosi neke podatke koje program čuva u bazu podataka 'BAZA' u tabelu 'TABELA'.
Želeo bih da na stranici za login postavim combobox sa opcijama '2014. godina', '2015. godina' itd.
Ako korisnik odabere '2014. godina' program treba da korsiti 'TABELA2014' tj. da isčitava podatke iz te tabele kao i da snima podatke u tu tabelu. Isto tako ako izabere '2015. godina' da isčitava podatke iz te tabele kao i da snima podatke u tu tabelu.

Ovo je neki primer koji 'učitava podatke':
Code:

Public Function GetData() As DataView
Dim SelectQry = "SELECT rtrim(id)[ID],rtrim(delovodnik)[Delovodnik] from TABELA order by Delovodnik desc"

        Dim SampleSource As New DataSet
        Dim TableView As DataView
        Try
            Dim SampleCommand As New SqlCommand()
            Dim SampleDataAdapter = New SqlDataAdapter()
            SampleCommand.CommandText = SelectQry
            SampleCommand.Connection = Connection
            SampleDataAdapter.SelectCommand = SampleCommand
            SampleDataAdapter.Fill(SampleSource)
            TableView = SampleSource.Tables(0).DefaultView
        Catch ex As Exception
            Throw ex
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        Return TableView
    End Function



Ne znam na koji način da uradim da na osnovu onoga što je izabrano u combobox-u odabere odgovarjuću tabelu. Da li može da se koristi if uslov i neki primer?
[ djux66 @ 08.01.2015. 13:36 ] @
Po ovom tvom primeru možeš da promeniš select string, npr:

Code:


Dim StartQry = "SELECT rtrim(id)[ID],rtrim(delovodnik)[Delovodnik] from TABELA"
Dim SelectQry = StartQry + godina + " order by Delovodnik desc"



gde ti je "godina" ustvari ono što je izabrano u combobox-u npr "2014" pa dobijaš "SELECT rtrim(id)[ID],rtrim(delovodnik)[Delovodnik] from TABELA" + "2014" + " order by Delovodnik desc"

Mada bi ti bilo najjednostavnije da sve podatke držiš u jednoj tabeli, dodaš int polje godina i po tome filtriraš podatke...
[ nem @ 12.01.2015. 08:58 ] @
Tek danas sam uspeo da isprobam i radi odlično, hvala puno, to je baš kako sam hteo :) Mučio sam se sa if uslovima a ovako je mnoglo lakše i elegantnije.
[ nem @ 13.01.2015. 07:22 ] @
Sada imam probelm sa pretragom. Ovo je moj (uprošćen) kod za pretragu koja se vrši izborom neke stavke iz comboboxa.
Code:

Private Sub cbTrazi_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbTrazi.SelectedIndexChanged
        
Try
            con = New SqlConnection(cs)
            con.Open()
cmd = New SqlCommand("SELECT rtrim(id)[ID],rtrim(delovodnik)[Delovodnik] from TABELA  '" & Login.ComboBox1.SelectedItem.ToString() & "'   where delovodnik = '" & cbTrazi.Text & "' order by datum desc", con)

            Dim myDA As SqlDataAdapter = New SqlDataAdapter(cmd)

            Dim myDataSet As DataSet = New DataSet()

            myDA.Fill(myDataSet, "TABELA")

            DataGridView1.DataSource = myDataSet.Tables("TABELA").DefaultView

            con.Close()
        
Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub


Ovo je deo koji sam dodao: '" & Login.ComboBox1.SelectedItem.ToString() & "'. To radi tako što umesto ovog koda učita vrednost iz comboboxa sa login stranice što je u redu i dobijem ovako nešto: TABELA 2014, a trebalo bi da dobijem bez razmaka: TABELA2014, kako se to može dobiti? Probao sam da da tu 'sql komandu' rasčlanim na dva dela cmd1 i cmd2 pa kasnije napravim cmd kao cmd1 & cmd2 ali nije mi uspelo.
[ djux66 @ 13.01.2015. 08:37 ] @
Prosto, nemoj stavljati razmak u sql stringu posle reči TABELA nego odmah stavi " ne trebaju ti apostrofi ispred i iza

ti si stavio ovako:

Code:
cmd = New SqlCommand("SELECT rtrim(id)[ID],rtrim(delovodnik)[Delovodnik] from TABELA  '" & Login.ComboBox1.SelectedItem.ToString() & "'   where delovodnik = '" & cbTrazi.Text & "' order by datum desc", con)


a treba ovako:

Code:
cmd = New SqlCommand("SELECT rtrim(id)[ID],rtrim(delovodnik)[Delovodnik] from TABELA" & Login.ComboBox1.SelectedItem.ToString() & "  where delovodnik = '" & cbTrazi.Text & "' order by datum desc", con)



[ nem @ 13.01.2015. 09:52 ] @
E hvala, u međuvremenu sam i sam shvatio da je to probelm, sada i pretraga lepo radi :)