none
MOSTRAR NOMBRES DE TABLAS ACCESS EN COMBOBOX O LIST VIEW RRS feed

  • Pregunta

  • Hola Muy Buena Tarde tengan todos.

    Espero puedan apoyarme con el código para mostrar en un combobox o listview (u otra herramienta) las tablas que contienen mi base de datos, estas tablas se crean y se llenan en tiempo de ejecución en un formulario, despues, en otro formulario me gustaria mostrar las tablas y poderlas seleccionar para mostrar sus datos en uno o mas grids.

    vb2008

    datos : oledb

    Espero haya sido claro, quedo muy agradecido con ustedes.


    roberto

    viernes, 16 de septiembre de 2016 21:49

Respuestas

  • Hola buena tarde, ya encontre un codigo que me agregar las tablas existentes en mi base de datos, la comparto esperando les sea de utilidad a las personas que pudieran tener el mismo problema.

    Dim SchemaTable As DataTable

            'Connect to the database
            
            Try
                ListBox1.Items.Clear()

                con.Open()

                'Get table and view names
                SchemaTable = con.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, Nothing})

                Dim int As Integer
                For int = 0 To SchemaTable.Rows.Count - 1
                    If SchemaTable.Rows(int)!TABLE_TYPE.ToString = "TABLE" Then
                        'Add items to list box
                        ListBox1.Items.Add(SchemaTable.Rows(int)!TABLE_NAME.ToString())
                    End If
                Next

            Catch ex As Exception
                MessageBox.Show(ex.Message.ToString(), "Data Load Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End Try

            con.Close()


    roberto

    sábado, 17 de septiembre de 2016 20:56

Todas las respuestas

  • Rovertmvk,

    Puedes hacer uso del método GetSchema():

    Using cn As New OleDbConnection("Cadena de conexión")
    
                cn.Open()
    
                For Each row As DataRow In cn.GetSchema("TABLES").Rows
                    cboTables.Items.Add(row("TABLE_NAME"))
                Next
    
    End Using



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 16 de septiembre de 2016 22:34
  • wiliam un saludo antes que nada.

    Gracias por la atencion, sabes que me indica error en cboTables , trate de poner el nombre del combo box y sigue el error, aprovechando la oportunidad, tambien me salta la duda en los espacios ("TABLES") Y ("TABLES_NAME"), estas declaraciones son comandos? o tengo que escribir el nombre de mis tablas?. 

    Gracias, Saludos.



    roberto

    sábado, 17 de septiembre de 2016 20:18
  • Hola buena tarde, ya encontre un codigo que me agregar las tablas existentes en mi base de datos, la comparto esperando les sea de utilidad a las personas que pudieran tener el mismo problema.

    Dim SchemaTable As DataTable

            'Connect to the database
            
            Try
                ListBox1.Items.Clear()

                con.Open()

                'Get table and view names
                SchemaTable = con.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, Nothing})

                Dim int As Integer
                For int = 0 To SchemaTable.Rows.Count - 1
                    If SchemaTable.Rows(int)!TABLE_TYPE.ToString = "TABLE" Then
                        'Add items to list box
                        ListBox1.Items.Add(SchemaTable.Rows(int)!TABLE_NAME.ToString())
                    End If
                Next

            Catch ex As Exception
                MessageBox.Show(ex.Message.ToString(), "Data Load Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End Try

            con.Close()


    roberto

    sábado, 17 de septiembre de 2016 20:56
  • Rovertmvk,

    Es raro, asumía que no deberías tener problemas. 'TABLE_NAME' es el nombre de la columna que recuperas y 'TABLES' el tipo de objeto. Acomodando tu código:

    Using cn As New OleDbConnection("Cadena de conexión")
    
                cn.Open()
                ListBox1.Items.Clear()
    
                For Each row As DataRow In cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                                                New Object() {Nothing, Nothing, Nothing, Nothing}).Rows
                    If row!TABLE_TYPE.ToString = "TABLE" Then
                        ListBox1.Items.Add(row("TABLE_NAME"))
                    End If
                Next
    End Using



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 17 de septiembre de 2016 21:27