Estas son las tablas necesarias categoría y productos.
Para listar categoría, ubicar la imagen y los productos por el código de la categoría
Use VaidrollTeamProductos go create proc sp_listarcategorias as select idcategoria,nombrecategoria from categoria go create proc sp_fotodelacategoria @codigo int as select imagen from categoria where idcategoria=@codigo go create proc sp_productoporcategoria @codigo int as select idproductos,nombreproducto,cantidad from productos where idcategoria=@codigo go exec sp_listarcategorias exec sp_fotodelacategoria 1 exec sp_productoporcategoria 1
Clase 1
Creamos la conexión y las funciones para listar las categorías, la imagen y los productos que pertenecen a la categoría seleccionada
Imports System.Data.SqlClient Public Class Class1 Dim cn As New SqlConnection("server=localhost\SQLEXPRESS;integrated security=true;database=VaidrollTeamProductos") Public Function ListarCategorias() As DataTable Dim da As New SqlDataAdapter("sp_listarcategorias", cn) Dim tbl As New DataTable da.Fill(tbl) Return tbl End Function Public Function ImagenCategoria(ByVal idcategoria As Integer) As DataTable Dim cmd As New SqlCommand("sp_fotodelacategoria", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@codigo", SqlDbType.Int).Value = idcategoria Dim das As New SqlDataAdapter(cmd) Dim tbl As New DataTable das.Fill(tbl) Return tbl End Function Public Function ProductosPorCategoria(ByVal idcategoria As Integer) As DataTable Dim cmd As New SqlCommand("sp_productoporcategoria", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@codigo", SqlDbType.Int).Value = idcategoria Dim das As New SqlDataAdapter(cmd) Dim tbl As New DataTable das.Fill(tbl) Return tbl End Function End Class
Formulario principal
Primero los datos del DataGridView1, luego en su evento "CellClick" al seleccionar una categoría el segundo DataGridView2 mostrará los productos de la categoría y el PictureBox1 la imagen.
Imports System.IO Public Class Form1 Dim obj As New Class1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load DataGridView1.DataSource = obj.ListarCategorias Dim n = 1 DataGridView2.DataSource = obj.ProductosPorCategoria(n) Dim tabla As DataTable = obj.ImagenCategoria(n) Dim paralaimagen() As Byte = CType(tabla.Rows(0)(0), Byte()) Dim varms As New MemoryStream(paralaimagen) PictureBox1.Image = Image.FromStream(varms) End Sub Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick Dim n = DataGridView1.Item(0, e.RowIndex).Value DataGridView2.DataSource = obj.ProductosPorCategoria(n) Dim tabla As DataTable = obj.ImagenCategoria(n) Dim paralaimagen() As Byte = CType(tabla.Rows(0)(0), Byte()) Dim varms As New MemoryStream(paralaimagen) PictureBox1.Image = Image.FromStream(varms) End Sub End Class
- Visual Studio 2019
- Microsoft SQL Server Management Studio 18