Databáze   otázka

VB.NET

Prosím o radu. Začínám programovat jednoduchou databázi a nevím si rady jak propojit data. Mám tabulku Ucitele a tabulku SeznamZaku. Obe tabulky obsahuji pole CisloUcitele kde kazdy zak ma cislo sveho ucitele. Vytvořil jsem si hlavní formulář kde mám údaje o každém učiteli. Chtěl jsem si na tomto hlavním formuláři vytvořit DataGridWiev kde by byl seznam žáků daného učitele. Bohužel nevím jak to spojit. Zkoušel jsem přímo v DataSetu vytvořit propojení ale stále mám v DataGridWiev všechny žáky.

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

řešil jsem obdobný problém, vzhledem k tomu, že jsem DB soubor otvíral ručně, tak je vše ošetřeno programově.

Přikládám kód k otevření DB a naplnění, snad pomůže.

		If OfdOpenDB.ShowDialog = Windows.Forms.DialogResult.OK Then
			'Try
			ConnectString = "Provider = Microsoft.Jet.Oledb.4.0;Data Source=" + OfdOpenDB.FileName + ";"
			DBConnection = New OleDb.OleDbConnection(ConnectString)
			DBConnection.Open()
			DBCmdStructInsert = New OleDb.OleDbCommand("INSERT INTO t_StructType (Name, Comment, Kind) VALUES(?,?,0);", DBConnection)
			DBCmdStructInsert.Parameters.Add("Name", OleDbType.BSTR)
			DBCmdStructInsert.Parameters.Add("Comment", OleDbType.BSTR)

			DBCmdStructUpdate = New OleDb.OleDbCommand("UPDATE t_StructType SET Name = ?, Comment = ? WHERE ID = ?", DBConnection)
			DBCmdStructUpdate.Parameters.Add("Name", OleDbType.BSTR)
			DBCmdStructUpdate.Parameters.Add("Comment", OleDbType.BSTR)
			DBCmdStructUpdate.Parameters.Add("IDNum", OleDbType.Decimal)

			Dlg_Struct.DBCmdCntrlStructNameAdd = New OleDb.OleDbCommand("SELECT * FROM t_StructType WHERE (Name = ?)", DBConnection)
			Dlg_Struct.DBCmdCntrlStructNameAdd.Parameters.Add("Name", OleDb.OleDbType.BSTR)

			Dlg_Struct.DBCmdCntrlStructNameEdit = New OleDb.OleDbCommand("SELECT * FROM t_StructType WHERE (Name = ?) AND (Name <> ?)", DBConnection)
			Dlg_Struct.DBCmdCntrlStructNameEdit.Parameters.Add("NameCh", OleDb.OleDbType.BSTR)
			Dlg_Struct.DBCmdCntrlStructNameEdit.Parameters.Add("NameOr", OleDb.OleDbType.BSTR)


			SqlStructSelect = "SELECT * FROM t_StructType ORDER BY ID;"
			FillListBoxStructName()
			GridChangeEnable = True
			SqlMemberSelect = "SELECT t_StructMember.ID, t_StructType.Name AS [Str Name], t_StructType.Comment AS [Str Comment], t_StructMember.Member AS [Name], t_StructMember.Comment, Type, Offset, [Bit] " + _
			"FROM (t_StructMember INNER JOIN t_StructType ON t_StructMember.StructID = t_StructType.ID)"

		DBAdapter = New OleDb.OleDbDataAdapter(SqlMemberSelect + WhereString + ";", DBConnection)
		'DBCommand = New OleDb.OleDbCommand(SqlMemberSelect + WhereString + ";", DBConnection)
		'DBCommandDelete = New OleDb.OleDbCommand("DELETE * FROM t_StructMember;", DBConnection)
		DBDataSetGrid.Clear()
		DBLines = DBAdapter.Fill(DBDataSetGrid, "t_StructMember")
		DataGridView1.AutoGenerateColumns = True
		DataGridView1.DataSource = DBDataSetGrid.Tables("t_StructMember")

rozhodne se tu dá sposta věcí najít

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

Proč to nenapíšete přímo do toho SQL selectu?

Něco jako

SELECT * FROM SeznamZaku WHERE Ucitel = @id

a do parametru id dáte ID učitele?

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

Taky si myslím že by se dal použít přímo takovýto dotaz. Nicméně nevím jak ho do kódu zapracovat.

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