Jump to content

Llenar combobox en vnet con consulta anidada


Recommended Posts

Estimados tengo un problema quisiera llenar un combobox con una consulta anidada, este es el código que tengo pero me lanza error, agradecería su ayuda

 

 

Private Sub LLenarBodega()

Dim da As New OleDbDataAdapter("select b.nombre as Bodega from Articulos a, Bodega b, ArtBo ab where a.Id_Art = ab.Id_Art and b.Id_Bod = ab.Id_Bod ", Cn)

Dim dt As DataTable = New DataTable("Bodega")

da.Fill(dt)

With ComboBox1

.DataSource = dt

.DisplayMember = "Nombre"

.ValueMember = "Id_Bod"

End With

 

End Sub

 

Link to comment
Share on other sites

holas, pucha yo no uso oldb o como se llame xD uso el sqlclient, con sus sqlcomand y demás, pero te dejo mi código por si es que sirve...

 

la función que carga el combobox es la siguiente:

Public Shared Sub cargaraUsuarios(ByVal cboUsuario As ComboBox)
	Try
		conexion.conectar() 'abro conexion'																		 
		Dim sql As String = "Select distinct Nombre from Usuario order by nombre asc"  'consulta'
		Dim comando As SqlCommand
		comando = New SqlCommand(sql, conexion.conexion) 'juntas el string consulta con la conexion'
		Dim registros As SqlDataReader
		registros = comando.ExecuteReader 'execute reader ejecuta la consulta y obtiene la informacion de las tablas'
		cboUsuario.Items.Clear() ' limpiar nuestra variable combobox'
		While registros.Read 'preguntamos si hay info para leer'
			cboUsuario.Items.Add(registros.GetString(0)) 'guardar la info del executeReader en el combobox'
		End While
		registros.Close() 'cerramos lectura'
		conexion.Desconectar() 'cerramos conexion'
	Catch ex As Exception
		MessageBox.Show(ex.Message)
	End Try
End Sub

 

y la llamo de este modo

 

nombredelaClase.cargaraUsuarios(nombreComboBox)

 

 

si vez lo que envió es el combobox, la funcion la recibe por valor y sobrescribe sobre ella...

 

por lo de las consultas anidadas te doy un ejemplo.

 

tenemos 2 tablas, una llamada usuario con datos (id [pk], nombre, apellido) la otra se llama registro con datos (id[pk], tipo_datos, fecha, informacion, id_usuario[fk])

 

 

si ves registro esta unida a usuario por la foreign key id (usuario [id] -----[id_usuario] registro)

 

entonces queremos mostrar toda la informacion de los registros que ha ingresado x usuario, la consulta seria la siguiente:

 

SELECT r.tipo_dato, r.fecha, r.informacion, u.nombre, u.apellido
FROM usuario u, registro r
WHERE u.id = r.id_usuario and u.id = 1

 

si ves la consulta, le asignamos una variable de referencia a la tabla en el from (usuario u) con esto podemos acceder facilmente a los datos de las tablas, para mostrar siempre tienes que anteponer esta referencia (u.nombre, r.informacion, etc)

 

el dato esta para consultas anidadas es que siempre tienes que igualar la PK con la FK de las tablas, como en la consulta igualamos (u.id = r.id_usuario) igualamos la PK id de usuario con la FK de registro y despues de igualarlas empiezas filtrar por lo que buscas.

 

bueno espero que te sirva.. cualquier cosa preguntas nomas

Edited by Variator
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...