Llenar ComboBox en VB 2005
-
Friday, October 26, 2007 3:38 AM
Hola amigos... tengo la siguiente consulta... antes, en Visual Basic 6.0 para llenar un ComboBox y reasignar un nuevo indice al elemento agregado se hacia con un código como el siguiente...
Set Tb = Db.OpenRecordset("Select * From tipocambio order by CodTipo")
While Not Tb.EOF
CboMoneda.AddItem Trim(Tb!DescTipo)
CboMoneda.ItemData(CboMoneda.NewIndex) = Tb!codtipo
Tb.MoveNext
Wend
Tb.Close¿Como puedo hacer esto mismo pero en Visual Basic 2005?
Saludos a todos...
All Replies
-
Friday, October 26, 2007 7:11 AMModerator
Hola,
Mira este código a ver si te vale:
Bloque de códigoDim
conex As New SqlClient.SqlConnection("MIconexion") Dim da As New SqlDataAdapter("Select * From tipocambio order by CodTipo", conex) Dim ds As New DataSetda.Fill(ds)
For i As Integer = 0 To ds.Tables(0).Rows.Count ' Aqui metes un valor o un objeto que luego podrás recuperar.combo.Items.Add(ds.Tables(
0).Rows(i)("Nombre o número de la columna")) NextUn Saludo
- Proposed As Answer by Mint Man Thursday, May 12, 2011 4:24 PM
-
Friday, October 26, 2007 1:48 PM
Gracias nuevamente Fran... sabes.. yo hice esa rutina de código...
El tema es que por ejemplo a parte de agregar esa descripcion al ComboBox, como se vió en el ejemplo de VB 6.0 asigno el mismo código de ese dato como nuevo Indice de lista... para al momento de grabar los datos por ejemplo, poder grabar directamente con el ItemData(ListIndex) en el caso de VB 6.0 y no tener que hacer la busqueda del código cada vez que quiera grabar....
como hago esto VB 2005??
Gracias.
-
Friday, October 26, 2007 2:08 PMModerator
Pues Fran te lo ha dejado cerca. Retomo su ejemplo y cambio la forma en que cargamos los datos al Combo:
Bloque de códigoDim conex As New SqlClient.SqlConnection("MIconexion")
Dim da As New SqlClient.SqlDataAdapter("Select * From tipocambio order by CodTipo", conex)
Dim ds As New DataSet
da.Fill(ds)
combo.DataSource = ds.Tables(0)
combo.DisplayMember = "Descripcion"
combo.ValueMember =
"Clave"Con DisplayMember indicas que campo mostrarás, pero con ValueMember indicas que campo quieers que sirva como clave de la selección.
combo.SelectedValue -> Retornará la clave que no se muestra en la Combo
combo.Text -> Retornará la descripción que se muestra en la Combo
Espero no haberme desviado del tema...
-
Friday, October 26, 2007 4:24 PMModeratorEso es, ahí está el tio
!!!.
Creo que eso te servirá, sino, ya nos comentas.
Un Saludo
-
Friday, October 26, 2007 6:26 PMeso era exactamente lo que necesitaba... muchas gracias toni...
-
Friday, October 26, 2007 6:29 PM
Muchas gracias a ti tambien Fran... me has sido de mucha ayuda en mi proyecto de título ya que estoy en pleno aprendizaje de Vb. Net 2005...
-
Friday, October 26, 2007 6:31 PMModerator
Nada hombre, ha sido un placer, para cualquier cosilla por aquí andaré.
Un Saludo
-
Tuesday, October 30, 2007 9:59 PM
Hola a tod@s:
Yo en una aplicación, lo tengo como en el ejemplo que mostrais. En el datasource, pongo la table, en el displaymember el campo que quiero ver y en el valuemember el campo vinculado.
El estilo que tengo puesto es dropdownlist, por lo cual no se puede elegir algún elemento que esté en la tabla. Pero lo que pretendo hacer, es que cuando no se quiera seleccionar ningún elemento de la lista, es añadir al combobox un item en el cual la descripción sea "Ninguno" y el valor para la clave sea 0. Pero he estado mirando y no se como hacerlo.
Si me podeis indicar como puedo solucionar este tema, estaría muy agradecido.
Un Saludo.
Juan Carlos
-
Tuesday, October 30, 2007 10:44 PMModerator
Hola,
Tan solo añade antes que los otros elementos el ese valor de la siguiente forma: combobox1.Items.Add("Ninguno")
y luego añade esta otra línea: combobox1.SelectedIndex = 0 y así seleccionará el valor por defecto en Ninguno.
Espero que te sirva,
Un Saludo.
-
Wednesday, October 31, 2007 3:42 PM
En mi caso como yo rescato las cosas desde una tabla de Sql Server 2000, lo que hice fue agregar un código 0 y una descripción "Por determinar" a esa tabla... y con eso solucioné el problema.
Ojalá te sirva mi sugerencia...
Saludos
-
Saturday, November 03, 2007 8:07 PM
Hola Fran, muchas gracias por tu respuesto.
Pero al intentar poner lo que me has comentado me dá el siguiente error: "No se puede modificar la colección Items cuando está establecida la propiedad DataSource.". Creo que este error se debe a que tengo el control desde diseño vinculado directamente al databindin, y aunque lo que tú me has indicado lo he puesto antes de llenar el combobox, me da el error que te he comentado. Lo que tiene este combobox es que no es obligatorio que tenga dato, pero si le selecciono alguno, no medeja luego des-seleccionarlo (es decir, dejar en blanco).
Hola CiberMauro:
Tambíen había contenplado lo que tú me indicas, pero lo malo es que tengo la tabla en modo autoincremento, por lo que no puedo controlar que el valor que le doy a "Ninguno" sea 0.
Un Saludo.
Juan Carlos
-
Sunday, November 04, 2007 11:30 AMModerator
Hola elturle,
Puedes agregar ese valor a tu tabla y luego una vez llenado el combobox, establecer el item que tu quieras como index del mismo. En este caso el valor "Ninguno".
Un Saludo
-
Friday, September 12, 2008 7:13 PM
Con ese código se llena pero desde una tabla o consulta, como hago para llenarlo desde un Procedimiento almacenado?
Saludos
richard
-
Monday, October 13, 2008 2:19 PMHola ... lo que hice yo fue agregar al SP que tenia (que me trae la lista de valores):
SELECT [id_Adicional],[Descripcion_Adicional]
FROM [DistriSur].[dbo].[Adicional]
esta sentencia ...
UNION
Select -1 as [clave], 'Sin Especificar' as [Campo]
Me agrega con clave -1 el valor "Sin especificar" en el campo Descripcion ... cuando cargo el combobox con este resultado, primero aparece el "Sin especificar" (aunque en realidad no existe en la tabla origen)
Slds
Javier -
Tuesday, October 21, 2008 9:59 AMNo te lies, si lo que quieres es unicamente que cuando aparezca el combobox aparezca sin ningún elemento seleccionado, después de cargar y hacerle fill a la tabla de turno en el dataset, le haces lo siguiente al combobox.
comboboxTucombo.selectedIndex = -1;
Y listo. -
Saturday, November 15, 2008 2:50 PM
Hola mira personalmente yo he echo eso en un proyecto con el estilo de 3 capas, donde tengo una clase llamada pais y dentro de esa clase creo la funsion (cargar_pais), y en presentacion tengo un formulario llamado pais ahi agrega ese código que te paso. espero que le entiendas
luego agrega este código a tu conexion a la base de datos
Protected Function consultar(ByVal strSelect As String) As System.Data.DataSet
Dim trnTemp As System.Data.SqlClient.SqlTransaction = Me.IniciarTransaccion()
Dim dtsTemp As System.Data.DataSet = Me.consultar(strSelect, trnTemp)
trnTemp.Commit()
Return dtsTemp
End FunctionProtected Function consultar(ByVal strSelect As String, ByVal trnTemp As System.Data.SqlClient.SqlTransaction) As System.Data.DataSet
Dim adaTemp As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter (strSelect,trnTemp.Connection)
adaTemp.SelectCommand.Transaction = trnTemp
Dim dtsTemp As System.Data.DataSet = New System.Data.DataSet
adaTemp.Fill(dtsTemp)
Return dtsTemp
End Functioncapa de negocio
public class pais
public function cargar_pais()as dataset
dim cade="select id_pais,nombre_pais from pais"
return consultar(cade)
end function
end class
capa de presentacion, formulario pais
private sub cargar_pais
dim obj as new negocio.pais ' negocio es una capa donde está la clase pais ahi una funcion llamada (cargar_pais) creas la consulta que la escrivo arriva
dim ds as new dataset
ds=obj.cargar_pais
combobox1.datasource=ds.table(0)
combobox1.valuemember="id_pais"
combobox1.displaymember="nombre_pais"
end sub
luego en el load del formulario agregas el procedimiento (cargar_pais)
Bueno, se que por ahi podria estar muy complicado y no le puedas entender al código pero cualquier dudas me preguntas nuevamente ok.
correo
-
Tuesday, May 19, 2009 3:33 AMhola que tal toni espero me puedas ayudar tengo una tabla proveedor con los campos idproveedor, razon social y ruc.yo lleno mi combo box con los registros del campo razon social lo que quiero es que al seleccionar cada registro de este combo box se llene 2 textbox q tengo con los registros de idproveedor y ruc. lo estoy haciendo con capas.tengo el siguiente codigo:
EN EL Componente datos (CAPA DATOS)
Public Function listarproveedor() As DataTable
Try
Dim dtTmp As New DataTable()
Dim CNN As New SqlConnection(conexion.instancia.cadenaconexion)
CNN.Open()
Dim ConsultaSQL As New SqlCommand("Select nproveedor, razonsocial, ruc from Proveedor", CNN)
ConsultaSQL.CommandType = CommandType.Text
Dim dap As New SqlDataAdapter(ConsultaSQL)
dap.Fill(dtTmp)
CNN.Close()
CNN.Dispose()
Return dtTmp
Catch ex As Exception
Throw New Exception(ex.Message)
Finally
End Try
End Function
Componente presentación (CAPA PRESENTACION)
Private Sub llenarcombo()
With cbproveedor
.DataSource = almacenpielesdalc.instancia.listarproveedor()
.ValueMember = almacenpielesdalc.instancia.listarproveedor().Columns(0).ColumnName
.DisplayMember = almacenpielesdalc.instancia.listarproveedor().Columns(1).ColumnName
End With
End Sub
Private Sub AlmacenPieles_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call Me.llenarcombo()
End Sub
TODO ESTE CODIGO ME PERMITE CARGAR MI COMBOBOX cbproveedor
PERO LO QUE QUIERO ES QUE AL SELECCIONAR UN REGISTRO DE ESTE COMBO ME LLENE LOS TEXTBO CODIGOPROVEEDOR Y EL RUC ESO ES LO QUE NO SE COMO HACERLO. QUE PUEDO AGREGAR A ESTE CODIGO QUE TENGO
GRACIAS POR ANTICIPADO TU AYUDA
-
Monday, July 06, 2009 3:14 PMHola a todos.
Tengo una consulta para ver si me pueden ayudar. Tengo una BD con la tabla Doctores y otra con Pacientes y otra que se llama Citas. Tengo un form que muestra los datos en un listview, pero quiero poner un combobox que me muestre la cedula de la tabla doctores y en el listview que me muestre los pacientes que tienen una cita con ese Doctor o con ese numero de cedula. No se si me explico pero por ahi anda. Gracias.
Estoy trabajando con vb.net 2005
Tortugo -
Saturday, May 01, 2010 4:43 PMMe Parece muy bueno ese código me servio para solucionar otro problema....
-
Wednesday, September 01, 2010 4:06 AM
muy bueno y gracias a mi me sirvio de lujoPues Fran te lo ha dejado cerca. Retomo su ejemplo y cambio la forma en que cargamos los datos al Combo:
Bloque de códigoDim conex As New SqlClient.SqlConnection("MIconexion")
Dim da As New SqlClient.SqlDataAdapter("Select * From tipocambio order by CodTipo", conex)
Dim ds As New DataSet
da.Fill(ds)
combo.DataSource = ds.Tables(0)
combo.DisplayMember =
"Descripcion"
combo.ValueMember =
"Clave"
Con DisplayMember indicas que campo mostrarás, pero con ValueMember indicas que campo quieers que sirva como clave de la selección.
combo.SelectedValue -> Retornará la clave que no se muestra en la Combo
combo.Text -> Retornará la descripción que se muestra en la Combo
Espero no haberme desviado del tema...
-
Friday, December 03, 2010 11:25 AMHola Toni, se que el tema es viejo pero es que tengo un grave problema con esto de los combobox y ya no se que hacer. Si hago lo que comentas aquí, resulta que al cambiar de elemento en el combo veo que se me sustituyo el ultimo valor que tenía seleccionado con el valor nuevo que selecciono. ¿Tienes idea de por qué ocurre esto? Gracias de antemano.
-
Thursday, December 16, 2010 1:33 PMHola, ¿alquién sabe como solucionar lo que digo? Tengo que terminar un programa y no puedo por este motivo... no consigo enlazar un combobox a una tabla y que me devuelva el valor del id, se va sustituyendo el ultimo valor que cojo con el anterior... :( gracias.
-
Thursday, February 16, 2012 10:21 PM
quetal toni espero que estes bien, tengo una duda este codigo que pones aqui lo e usado en VB 2010 para jalar datos de una tabla en sql 2008 y usarlo en un combo pero cuando lo corro no hace nada ni me marca error, porfavor si me pudieras ayudar te lo agradeceria.
cuidate.

