Comboboxy a databáza vo VB .net   zodpovězená otázka

VB.NET

Vo svojom projekte mám Combobox1, Combobox2, database1.mdf s tabuľkami Table1 a Table2.

Table1:

IdTbl1 Itemtbl

1...........a

2...........b

3...........c

Table2:

IdTbl2 ItemTbl1 ItemTbl2

1...........a...........aa

2...........b...........ba

3...........a...........ab

4...........b...........bb

5...........c...........ca

6...........a...........ac

Do combobox1 načítam ItemTbl1 z Table1. Do ComboBox2 by som chcel načítať ItemTbl2, ale iba z tých riadkov ktorých ItemTbl1 je vyselektovaná v ComboBox1.

Poradil by mi niekto, prosím?

Ďakujem!

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

Skúšal som to pomocou Datasetu, TableAdapteru a Databinding, ale keď som naplnil druhý ComboBox, tak sa zmenili položky v prvom. Tak som to skúsil inak. Okresaný program:

Imports System.Data.SqlClient
Public Class Form1
    Dim connStr As String = System.Configuration.ConfigurationManager.ConnectionStrings("dbDatabase1").ConnectionString
    Dim sqlConnection As New SqlClient.SqlConnection(connStr)
    Dim sqlCommand1 As New SqlCommand("SELECT [ItemTbl1] FROM [Table1]", sqlConnection) ' vytvoření dotazu a předání připojení
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        sqlConnection.Open()
        Dim dataReader1 As SqlDataReader = sqlCommand1.ExecuteReader()
        Do While dataReader1.Read ' posun na další řádky, dokud jsou k dispozici
            ComboBox1.Items.Add(String.Format("{0}", dataReader1("ItemTbl1")))
        Loop
        dataReader1.Close()
        sqlConnection.Close()
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        ComboBox2.Items.Clear()
        ComboBox2.Text = ""

        Dim sqlCommand2 As New SqlCommand("SELECT [ItemTbl2] FROM [Table2] WHERE [ItemTbl1]=@ItemTbl1", sqlConnection) ' vytvoření dotazu a předání připojení
        sqlCommand2.Parameters.AddWithValue("@ItemTbl1", ComboBox1.Text()) ' přidat parametr do dotazu

        sqlConnection.Open()
        Dim dataReader2 As SqlDataReader = sqlCommand2.ExecuteReader()
        Do While dataReader2.Read ' posun na další řádky, dokud jsou k dispozici
            ComboBox2.Items.Add(String.Format("{0}", dataReader2("ItemTbl2")))
        Loop
        dataReader2.Close()
        sqlConnection.Close()
    End Sub
End Class

Je potrebné pridať System.Configuration cez ad reference

Zdroje:

http://www.vbnet.cz/clanek--52-komunikac...

http://www.vbnet.cz/blog-clanek--249-net...

http://www.vbnet.cz/snippet--50-zobrazen...

Ešte app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="dbDatabase1"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>   
</configuration>

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