Foros del Web » Programación para mayores de 30 ;) » .NET »

Llenar combobox con el nombre de los campos de una base de datos

Estas en el tema de Llenar combobox con el nombre de los campos de una base de datos en el foro de .NET en Foros del Web. Hola! Estoy ante un problema que por mucho que intento no consigo solucionar. Estoy realizando una conexión a una base de datos access de la ...
  #1 (permalink)  
Antiguo 09/03/2008, 09:56
 
Fecha de Ingreso: noviembre-2006
Mensajes: 437
Antigüedad: 17 años, 5 meses
Puntos: 3
Llenar combobox con el nombre de los campos de una base de datos

Hola! Estoy ante un problema que por mucho que intento no consigo solucionar. Estoy realizando una conexión a una base de datos access de la siguente manera:

Código:
Public Class Form2
    Inherits System.Windows.Forms.Form
    Private dt As DataTable
    Private da As OdbcDataAdapter
    Private fila As Integer

    Private Sub b_conectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_conectar.Click
        Dim scnn As String
        Dim config As config
        If Me.cb_bbdd.Text = "MySQL" Then
        scnn = "DATABASE=" & config.tb_nom_mysql.Text & ";DSN=Mysql-vb;OPTION=0;PORT=0;SERVER=" & config.tb_servidor_mysql.Text & ";UID=root"
        Else
            scnn = "DSN=Access-vb;DBQ=" & Application.StartupPath & "\bbdd\base_visual.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
            'scnn = "DSN=Access-vb;DBQ=" & config.tb_ruta_access.Text & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
        End If
        ' La cadena de selección
        Dim sSel As String = "SELECT * FROM clients ORDER BY ID"

        Try
            ' Crear un nuevo objeto del tipo DataAdapter
            da = New OdbcDataAdapter(sSel, scnn)
            Dim cb As New OdbcCommandBuilder(da)
            ' Asignar los comandos al DataAdapter
            ' (se supone que lo hace automáticamente, pero...)
            da.UpdateCommand = cb.GetUpdateCommand
            da.InsertCommand = cb.GetInsertCommand
            da.DeleteCommand = cb.GetDeleteCommand
            ' Esta base de datos usa el ID con valores automáticos
            da.MissingSchemaAction = MissingSchemaAction.AddWithKey
            '
            dt = New DataTable
            ' Llenar la tabla con los datos indicados
            da.Fill(dt)

            DataGrid1.ColumnHeadersVisible = True
            DataGrid1.DataSource = dt
            
        Catch ex As Exception
            MessageBox.Show("ERROR al connectar o recuperar les dades:" & vbCrLf & _
                            ex.Message, "Connectar amb la BBDD", _
                            MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub 
Esto funciona correctamente, al apretar el boton de conectar me muestra la tabla de la base de datos en un datagrid.
Lo que no consigo realizar es que me llene un combobox con el nombre de los campos de esa tabla, lo quiero realizar para poder hacer un buscador de pàlabras seleccionando el campo.

Un saludo y grácias de antemano
  #2 (permalink)  
Antiguo 09/03/2008, 14:37
 
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Llenar combobox con el nombre de los campos de una base de datos

que mas.....

depronto te sirva este articulo.
http://www.onglasses.net/default.aspx?articuloid=113
  #3 (permalink)  
Antiguo 09/03/2008, 15:16
 
Fecha de Ingreso: noviembre-2006
Mensajes: 437
Antigüedad: 17 años, 5 meses
Puntos: 3
Re: Llenar combobox con el nombre de los campos de una base de datos

¿Que mas? ¿Lo dices porque he abierto dos temas preguntando un par de dudas? He preguntado dos cosas puntuales que no sabia como resolver y tampoco encontraba mucha información.Creo que aqui todos estamos para eso, resolver nuestras dudas y ayudar a los demas a resolverlas.

Gracias por tu contribución.Lo que busco es como llenarlo con el nombre que tiene el campo, no con registros.

Un saludo

Última edición por komodo; 09/03/2008 a las 15:52
  #4 (permalink)  
Antiguo 09/03/2008, 19:30
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Re: Llenar combobox con el nombre de los campos de una base de datos

q onda komodo ,no es para q te enojes, "que mas" es una forma de decir "que hay" en colombia.

pero bueno.

para hacer eso tienes de 2 usar un storedprocedure como este q te rellene solo el combobox con los valores y el resultado asignarselo a tu dataset

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = 'TABLA'

o

usando lo siguiente desde tu dataset

DataTable table = dataset.Tables["tutabla"];
DataColumnCollection columnas = table.Columns;
ComboBox combo = new ComboBox();

combo.DataSource = columnas;
combo.DisplayMember = "ColumnName";

saludos
peter
  #5 (permalink)  
Antiguo 10/03/2008, 05:58
 
Fecha de Ingreso: noviembre-2006
Mensajes: 437
Antigüedad: 17 años, 5 meses
Puntos: 3
Re: Llenar combobox con el nombre de los campos de una base de datos

Quizá lo entendí mal, aqui en España suena como: ¿quieres que te lo haga todo?. Pido perdón, no tenia un buen dia ayer y me sentó mal ese comentario. Tema zanjado y mis disculpas.

Gracias, provaré eso y hos cuento que tal ha ido.

Un saludo!
  #6 (permalink)  
Antiguo 10/03/2008, 08:06
 
Fecha de Ingreso: noviembre-2006
Mensajes: 437
Antigüedad: 17 años, 5 meses
Puntos: 3
Re: Llenar combobox con el nombre de los campos de una base de datos

Hola de nuevo. He probado eso y no funciona. Mi formulario es un win forms, el ejemplo que me has puesto funciona en un win forms? No hay otra manera de hacerlo? Cuando relleno el datagrid a traves de una consulta:

SELECT * FROM clients

en la cabecera sale el nombre de cada campo, no hay manera de coger esos valores y ponerlos en un combo?

Un saludo
  #7 (permalink)  
Antiguo 10/03/2008, 08:46
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: Llenar combobox con el nombre de los campos de una base de datos

Puedes recorrer la colección de Columns del DataTable con un For y con la propiedad Name obtendrás el nombre del campo.

O puedes recorrer los encabezados del grid.

Saludos,
__________________
Leer es Saber, REEL.
Mi Blog
  #8 (permalink)  
Antiguo 10/03/2008, 09:17
 
Fecha de Ingreso: noviembre-2006
Mensajes: 437
Antigüedad: 17 años, 5 meses
Puntos: 3
Re: Llenar combobox con el nombre de los campos de una base de datos

Hola reel. Gracias, he intentado lo que dices pero no lo saco, he probado con esto:

Cita:
For i = 0 To dt.Columns.Count
cb_camps.DataSource = dt.Columns(i).ToString
cb_camps.DisplayMember = dt.Columns(i).ToString
Next
También he probado:
Cita:
Dim i As Integer
For i = 0 To dt.Columns.Count
cb_camps.DataSource = dt.Columns(i).ColumnName
cb_camps.DisplayMember = dt.Columns(i).ColumnName
Next
El combo no me muestra ningun dato.Como lo deberia hacer? Me muestra un error que dice: El enlace de datos complejo acepta como origen de datos Ilist o IlistSource.

Un saludo

SOLUCIONADO!

Cita:
Dim i As Integer
For i = 1 To dt.Columns.Count - 1
cb_camps.Items.Add(dt.Columns(i).ColumnName.ToStri ng)
Next
Despues de mucho batallar lo he conseguido, gracias a todos por vuestra ayuda.

Un saludo

Última edición por komodo; 10/03/2008 a las 09:27
  #9 (permalink)  
Antiguo 10/03/2008, 09:28
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Re: Llenar combobox con el nombre de los campos de una base de datos

no a lo q el se referia es o q lo llenaras manual o q lo bindearas con el ColumnCollection como datasource.

saludos
peter
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 12:57.