Pregunta: | 58226 - COMO ENLAZAR 3 COMBOBOX CON DATOS RELACIONADOS DE BD VB2005 |
Autor: | Jesus Bautista Rodriguez |
Hola a todos
estoy empezando a aprender visual basic 2005, y estoy tratando de hacer una aplicaion donde necesito relacionar 3 ComboBox con datos relacionadosa de una base de datos de sql server express 2005, he buscado informacion pero solo encuentro para elnlazar 2 combobox. La tablas estan relacionadas de esta forma: Es de venta de articulos: Tabla Articulo: ArticuloID - llave primaria Nom_Articulo Imagen Tabla Marcas: MarcaID - llave primaria Nom_Marca ArticuloID - Relacion Tabla Modelos: ModeloID - llave primaria Nom_Modelo Precio MarcaID - Relacion Lo que yo intento hacer es que cuando seleccione un Articulo en el primer combo, me aparescan sus respectivas marcas en el segundo combo; entonces de las Marcas que aparescan, al seccionar una me aparescan sus respectivos Modelos en el tercer combo. He podido relacionar Articulos y Marcas pero no con Modelos. Para los 2 combos lo he echo en un ambiente desconectado(DataSet) y agregando los datos de la tabla al combo(item) de Articulos por filas(Row) , creo un DataRelation y obtengo las Marcas con un GetChilden. Pero no import la forma. Les agradesco de antemano la ayuda que puedan dar. Gracias |
Respuesta: | abel montalvo |
Supongamos que tienes tres combos Public Class Form1 Dim DT1 As DataTable = New DataTable("DT1") Dim DT2 As DataTable = New DataTable("DT2") Dim DT3 As DataTable = New DataTable("DT3") Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DT1.Columns.Add(New DataColumn("Tabla1_ID", GetType(System.String))) DT1.Columns.Add(New DataColumn("Tabla1_Valor", GetType(System.String))) DT1.Columns.Add(New DataColumn("Tabla1_Valor2", GetType(System.String))) DT1.Rows.Add("1", "valor1", "valor2") DT1.Rows.Add("2", "valor3", "valor4") DT2.Columns.Add(New DataColumn("Tabla2_ID", GetType(System.String))) DT2.Columns.Add(New DataColumn("Tabla1_ID", GetType(System.String))) DT2.Columns.Add(New DataColumn("Tabla2_Valor", GetType(System.String))) DT2.Rows.Add("3", "1", "valor5") DT2.Rows.Add("4", "1", "valor6") DT2.Rows.Add("5", "2", "valor7") DT3.Columns.Add(New DataColumn("Tabla3_ID", GetType(System.String))) DT3.Columns.Add(New DataColumn("Tabla2_ID", GetType(System.String))) DT3.Columns.Add(New DataColumn("Tabla3_Valor", GetType(System.String))) DT3.Rows.Add("6", "3", "valor8") DT3.Rows.Add("7", "3", "valor9") DT3.Rows.Add("8", "3", "valor10") DT3.Rows.Add("9", "4", "valor11") ComboBox1.DataSource = DT1 ComboBox1.DisplayMember = "Tabla1_Valor" ComboBox1.ValueMember = "Tabla1_ID" End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Dim DT As DataTable = DT2.Clone For Each elemento In DT2.Select("Tabla1_ID = '" + ComboBox1.SelectedValue.ToString + "'") DT.ImportRow(elemento) Next ComboBox2.DataSource = DT ComboBox2.DisplayMember = "Tabla2_Valor" ComboBox2.ValueMember = "Tabla2_ID" End Sub Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged Dim DT As DataTable = DT3.Clone For Each elemento In DT3.Select("Tabla2_ID = '" + ComboBox2.SelectedValue.ToString + "'") DT.ImportRow(elemento) Next ComboBox3.DataSource = DT ComboBox3.DisplayMember = "Tabla3_Valor" ComboBox3.ValueMember = "Tabla3_ID" End Sub End Class |