![]() |
Llenar un ComboBox con un DataReader Estimados Amigos, Tengo una duda de como llenar un Combo con Valor y Clave a travéz de un objeto DataReader, ok puedo llenar la coleccion de Items del Combo, pero necesito necesariamente cargar tambien los Primary Key de la Tabla como values en el Combo, me inmagino que esto debe ser mucho mas sencillo de lo que me he inmaginado hasta ahora.... :ojotes: Espero que me puedan ayudar!!! Frank PD: El código esta en VB.NET y es un Windows Form, la Bases de Datos es en SQL Server 2000... |
Hola.. en el caso de un win form por lo regular lo haces con un dataset.. pero que pasa si quieres manipular tus datos y llenar manualmente tu combobox.. Bien.. lo que puedes hacer es construir una pequeña clase que te permita hacer eso y despues guardar esa clase en un ArrayList.. Ejemplo. Cita:
Cita:
P.D.- Creo que se puede incluir en las faq´s no crees..?? :pensando: Salu2 :cool: |
Gracias Root =) Sabes, así me lo inmaginaba... je pero pense que existía una manera mas sencilla de hacerlo, te cuento: tengo 8 combos que se llenan desde una misma Tabla, si lo hago con un DataTable funciona bien, el problema es que cuando seleccionas el primer combo, me inmagino que se mueve el apuntador del DataTable hacia la Seleccion del Primero, entonces me vería obligado a utilizar un Datatable por Combo :abajo: y eso desmejoraría el rendimiento notablemente, por eso decidí usar un reader que me llenara los combos, si conoces la manera de desactivar el apuntador hacia el DataTable tambien me sirve. Me parece que si Se puede Incluir en los FAQs porque creo que muchas personas sobretodo en ASP les gustaría llenar los Combos con un DataReader eso Mejoraría notablemente el rendimiento de la APP Web... Bueno Root una vez Mas, muchisimas Gracias... :si: y si nos ayudamos unos a otros las cosas se hacen mucho mas Fáciles... Cualquier cosa que pueda hacer por Ud, solo Dígalo.... sera un placer ayudarlo... Frank :adios: |
Me da gusto que te haya servido friend.. Por otro lado ... Cita:
Cita:
Ejemplo: Cita:
|
Sip Root eso justamente es lo que he hecho, lo que pasa es que Cuando Selecciono un Item en el ComboBox1, cambia el Item en el ComboBox2, :S me inmagino porque esta cableado al mismo DataSource.... >:(, lo que voy a hacer para solucionar eso sera Clonar el Objeto DataTable... :O pruebalo para que veas, llena 2 combos con la misma Tabla, y cuando seleccionas un Item en el Primer Combo se Cambia en el Segundo... lo mismo pasa al Contrario, me inmagino que debe haber un apuntador en el Selected Item del Combo con respecto al DataTable... Coño pana eso me tiene Verde.... jaja pero bueno a la final no me voy a matar es una App pequeña y voy a Crear Clones de las Tablas... Gracias Por Todo Friend... Frank... |
Cita:
Si alguien sabe algo al respecto estaría muy interesado en saberlo. Te prometo conseguir una solución, ya me dejaste intrigado..jeje |
mira.. he visto muchos ejemplos en los que utilizan un dataadapter por cada query para cada combo, pero tambien se puede hacer ésto para usar el mismo datadapter y el datatable.. Cita:
|
Sip asi me parece cool... pero tambien puedes usar la copia del DataTable... asip dt2.copy = dt1 Claro lo malo es que necesito instanciar 6 Datatables indenticos... jeje pero bueno chamo Muchas Gracias... no creo que falle al final es minima la pérdida de Performance... Aqui estamos, tengo muchisimos PDF en ingles y e-books, tambien las láminas de los cursos oficiales de VB, si necesitas algo de eso... tan a la orden... tambien los TestKing por si no te has certificado... bueno y lo que no tengo lo consigo... Thank u 4 all Frank |
Cita:
Salu2 :cool: |
amigos lo he intentado de varias formas creando un objeto, collention, new y nada me arroja error al ValueMember, alguna sugerencia... esto mismo lo hago en asp.net y todo bien pero vb.net nada? ayuda |
HOla a todos .. recien entro a este foro y me gustaria poder ayudar y q me ayuden.. yo hago asi Combo.DataSource = LDistritos.Tables("Distritos") Combo.DisplayMember = dataset.Tables("Tabla").Columns("Columa1").ToStrin g Combo.ValueMember = dataset.Tables("Tabla").Columns("Columa2").ToStrin g de este modo ya no te sale el error en el value!! |
te recomiendo que no uses DataReaders debido a que cierran la base de datos sólo cuando uno termina con ellos. Te recomiendo que utilices un DataAdapter y luego llenes un datatable ó dataset. y realices un databind() control.datasource=dataset control.datakeyfield="nombredelacolumnaclave" control.datavaluefield"nombredelacolumnatexto"+ salu2 |
Cita:
Imaginate que estas haciendo una páginación con 10,000 registros y eso lo metes en un dataset y si al mismo tiempo entran 30 usuarios cuanto ancho de banda estas ocupando y cuanta carga le dejas a la memoria..?? es bastante no crees.?? y si haces uso de un datareader para páginar donde solo navegues en los registros que necesitas el acceso es mas rápido además de la liberación de memoria, pero aclaro que todo depende de lo que uno pretenda hacer y decidir que sería lo mas conveniente de usar. Es solo una opinión :cool: Saludos |
ComboBox !! Ayuda! Alquien sabe como hago para seleccionar un item de un comboBox, y que dependiendo de cual seleccione haga una u otra cosa. Por ejemplo. Tengo un formulario con un combo que dice tipo_usuario y varias opciones. Lo que necesito es que al seleccionar una de las opciones me habra la ventana principal con uno u otro menu deshabilitado. El codigo lo pongo en el evento load del formulario, pero lo que no me sale es la comparación. Cuando comparo en el if, no se bien como referenciar que se trata de una opcion u otra. Dim form_menu As New Ingreso If form_menu.cmbtipo_usuario.SelectedItem = form_menu.cmbtipo_usuario.SelectedItem Then 'MessageBox.Show("Esto es una prueba") Me.menu_venta.Enabled = True Me.menu_taller.Enabled = False Me.menu_compras.Enabled = False Me.menu_admin.Enabled = False ElseIf form_menu.cmbtipo_usuario.SelectedItem = form_menu.cmbtipo_usuario.SelectedItem Then Me.menu_venta.Enabled = False Me.menu_taller.Enabled = True Me.menu_compras.Enabled = False Me.menu_admin.Enabled = False End If |
Llenar un ComboBox con un DataReader Compañeros del foro Tengo un problema con unos combobox en una aplicacion web, los combox los lleno con un datareader pero en algunas ocaciones me arroja el siguiente error databinder.eval: 'System.Data.Common.DbDataRecord' does not contain a property with the name xxxxxx. El problema es que no siempre arroja el error es a veces si me pongo a actualizar la pagina con F5 varias veces funciona pero en ocaciones sale el error, nose si sera problemas de comunicacion con la base de datos o definitivamente es error mio de programacion. Si alguno de uds le a sucedido o saben cual es el error les pido porfavor me ayuden a resolverlo. Gracias. |
Re: Llenar un ComboBox con un DataReader Hola, tengo una pregunta mas facil... como acceso a los datos del reader ? tengo: Código: SqlConnection myConnection = new SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes"); |
Re: Llenar un ComboBox con un DataReader Necesito que alguien me ayede, lleno un combo por medio de esta funcion pero mi problema es que cuando envio a llenar el combo lo hace desde el segundo items como puedo hacer para que lo llede desde el princio cuando se coloca Items.Add lo hace desde el items(1) no desde el (0) GenerarCombo("Oficina", Me.Combo, OficinaPrincipal) '''Esta es la funcion Public Function GenerarCombo1(ByVal Tabla As String, ByVal Combo As Object, Optional ByVal Filtro As String = "") Dim sQry As String oConn = New SqlConnection(sConn) sQry = "GenerarCombo '" & Tabla & "'" sQry = sQry & ", " & IIf(Filtro = "", "null", "'" & Filtro & "'") oComm = New SqlCommand(sQry, oConn) oConn.Open() oRead = oComm.ExecuteReader() If cmbServer Then While oRead.Read() ReDim Preserve Combo(1, UBound(Combo, 2) + 1) Combo(0, UBound(Combo, 2)) = oRead.GetString(0) Combo(1, UBound(Combo, 2)) = oRead.GetString(1) End While Else While oRead.Read() If Codigo = oRead.GetString(0) Then Else Combo.Items.Add(Combo.DisplayMember) End If End While End If oRead.Close() oConn.Close() End Function Muchas gracias |
| La zona horaria es GMT -6. Ahora son las 22:46. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.