Visual Basic.NET - Combobox dependientes

 
Vista:
sin imagen de perfil

Combobox dependientes

Publicado por Carlos (11 intervenciones) el 15/05/2014 10:05:48
Hola, uso una base de datos mysql, son 5 tablas, una para almacenar todos los datos de los vehiculos que en este caso aqui no interviene y luego las siguientes, una tabla marcas, con idmarca y nombre, una tabla modelos,con idmodelo idmarca y nombre,una tabla version con idversion id modelo y nombre y una ultima variante con idvariante id version y nombre, y quiero eso que al grabar el idmarcar de la tabla marcas sea el mismo que el idmarcas de la tabla modelos y eso mismo con las otras para enlazar 4 combobox. Aquí os copio lo que hice ...


FORMULARIO 1 , boton guardar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Dim cmda As New MySqlCommand
        Dim s As Integer
        Try
 
            _conexion.Open()
            cmda = New MySqlCommand("insert INTO marcas (nombre)value('" & ComboBox1.Text & "')", _conexion)
            s = cmda.ExecuteNonQuery()
 
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        con.Close()
        _conexion.Close()
 
 
        Dim cmdb As New MySqlCommand
        Dim q As Integer
        Try
 
            _conexion.Open()
            cmdb = New MySqlCommand("insert INTO modelos (nombre)value('" & TextBox2.Text & "')", _conexion)
            q = cmdb.ExecuteNonQuery()
 
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
        _conexion.Close()
 
        Dim idmodelo As New MySqlCommand
 
        Dim cmdc As New MySqlCommand
        Dim t As Integer
        Try
 
            _conexion.Open()
            cmdc = New MySqlCommand("insert INTO variantes (nombre)value('" & textbox2b.Text & "')", _conexion) ' "','" & idmodelo.modelos & "')", _conexion)
            t = cmdc.ExecuteNonQuery()
 
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
        _conexion.Close()
 
        Dim cmdd As New MySqlCommand
        Dim u As Integer
        Try
 
            _conexion.Open()
            cmdd = New MySqlCommand("insert INTO versiones (nombre)value('" & TextBox2c.Text & "')", _conexion)
            u = cmdd.ExecuteNonQuery()
 
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
        _conexion.Close()
ese seria el boton guardar de un formulario
FORMULARIO 2 (el de los combobox)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
'Sub para llenar combo1 sencillo sin parámetros
 
Public Sub DATOSCOMBO(ByVal QUERYCOMBO As String, ByVal COMBO As ComboBox)
        CONECTARBD()
        If CONECTADA = 1 Then
            mycommand = New MySqlCommand(QUERYCOMBO, conexionbd)
            myadapter = New MySqlDataAdapter(mycommand)
            mydatatable = New DataTable
            myadapter.Fill(mydatatable)
 
            COMBO.DataSource = mydatatable
            COMBO.ValueMember = "CODIGOC"
            COMBO.DisplayMember = "ETIQUETAC"
        Else
            Exit Sub
        End If
 
    End Sub
 
Private Sub COMBO1()
        QUERYCOMBO = "SELECT DISTINCT nombre AS ETIQUETAC, idmarca AS CODIGOC FROM marcas WHERE activo != 0 ORDER BY idmarca"
        DATOSCOMBO(QUERYCOMBO, ComboBox1)
    End Sub
 
Private Sub prueba_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call COMBO1()
    End Sub
 
Private Sub ComboBox1_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectionChangeCommitted
        VCOMBO1 = ComboBox1.SelectedValue
        QUERYCOMBODEP = "SELECT DISTINCT nombre AS ETIQUETAC,idmodelo AS CODIGOC FROM modelos WHERE activo != 0 AND idmarca = " & VCOMBO1 & " ORDER BY nombre"
        DATOSCOMBO(QUERYCOMBODEP, ComboBox2)
    End Sub
 
Private Sub ComboBox2_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectionChangeCommitted
        VCOMBO2 = ComboBox2.SelectedValue
        QUERYCOMBODEP = "SELECT DISTINCT idvariante AS CODIGOC, nombre AS ETIQUETAC FROM variantes WHERE activo != 0 AND idmodelo = " & VCOMBO2 & " ORDER BY nombre"
        DATOSCOMBO(QUERYCOMBODEP, ComboBox3)
    End Sub
 
Private Sub ComboBox3_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectionChangeCommitted
        VCOMBO3 = ComboBox3.SelectedValue
        QUERYCOMBODEP = "SELECT idversion AS CODIGOC, nombre AS ETIQUETAC FROM versiones WHERE activo != 0 AND idvariante = " & VCOMBO3 & " ORDER BY nombre"
        DATOSCOMBO(QUERYCOMBODEP, ComboBox4)
    End Sub

si alguien me pudiese ayudar, muchas gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder