spojeni tabulek   zodpovězená otázka

VB.NET, Databáze

dobry den,

nevite nekdo, jakym zpusobem mam spojit v jednom viewdatagridu sloupce ze dvou tabulek? v jedne tabulce mam ID a ve druhe ID_fak (jako cizy klic na ID) a potreoval bych je spojit v jedne tabulce.. popripade nevite nejaky odkaz na priklad, kde to resi? ja proste nic nenasel... Dekuji

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

Dobrý den,

nevím přesně jak to zamýšlíte a odkud tabulky načítáte (SQL server, MSAccess,...).

Pokud Vám jde o to, abyste v DataGridView zobrazil data z obou tabulek, je nejlepší provést jejich spojení pomocí SQL už při načítání např. do DataSetu. Výsledkem by pak byla jedna výsledná tabulka, která by obsahovala data z obou tabulek.

Dotaz by mohl vypadat následovně:

SELECT Tabulka1.*,Tabulka2.*

FROM Tabulka1 JOIN Tabulka2 ON Tabulka1.ID=Tabulka2.ID_fak

V kódu byste to mohl napsat nějak takhle :

Dim Querry As String = "SELECT Tabulka1.*,Tabulka2.* FROM Tabulka1 JOIN Tabulka2 ON Tabulka1.ID=Tabulka2.ID_fak"
Dim cmd As New SqlClient.SqlCommand
With cmd
    .Connection = con ' con je objekt SqlConnection, který je správně inicializován 
    .CommandType = CommandType.Text
    .CommandText = Querry
End With
Dim da As New SqlClient.SqlDataAdapter
Dim ds As New DataSet
da.SelectCommand = cmd
da.Fill(ds, "Vysledek") ' V DataTable Vysledek je spojení obou tabulek

Podotýkám, že se jedná o kód optimalizovaný pro SQL server, v případě Accessu by byl kód podobný. Jen by se použily třídy pro OLEDB.

Ono ale hodně záleží na tom jak ta data chcete mít spojená (jak je chcete mít zobrazena v DataGridView) a odkud je načítáte.

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

dekuji, nemel byste nahodou jeste ten kod pro db v accessu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
       Dim con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=soubor.mdb")
        Dim Querry As String = "SELECT Tabulka1.*,Tabulka2.* FROM Tabulka1 JOIN Tabulka2 ON Tabulka1.ID=Tabulka2.ID_fak"
        Try
            con.Open()
            Dim cmd As New OleDb.OleDbCommand
            With cmd
                .Connection = con
                .CommandType = CommandType.Text
                .CommandText = Querry
            End With
            Dim da As New OleDb.OleDbDataAdapter
            Dim ds As New DataSet
            da.SelectCommand = cmd
            da.Fill(ds, "Vysledek") ' V DataTable Vysledek je spojení obou tabulek

            Me.DataGridView.DataSource = ds
            Me.DataGridView.DataMember = "Vysledek"

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

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

muzu vas jeste poprosit o radu - kdyz deklaruji con - pise mi to "Array bounds cannot appear in type specifiers". Co delam spatne? Dekuji

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