Enlazar combobox

loto666 rivero
15 de Mayo del 2014
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

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()


FORMULARIO 2 (el de los combobox)

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


un saludo y gracias a todos