Se puede Abrir cualquier tabla de una base de datos? Hola, mi nombre es Giannina y soy nueva en el foro y estoy desarrollando una aplicación en VB.Net 2005. La idea es contar con una base de datos que cuente con varias tablas. Las tablas se llaman EP_codigo (la palabra codigo se reemplaza por el codigo de un determinado conjunto de datos, por ejemplo EP_Temuco, EP_Iquique, EP_SP051SA, etc) La base de datos ACCESS que tengo en este momento contiene 10 tablas con nombres similares a los ya mencionados. La aplicación que he desarrollado hasta el momento me permite conectarme a cualquier base de datos pero solo a una determinada tabla, que es sentenciada dentro del código, por lo que siempre me carga la misma tabla en el datagrid. Si alguno de ustedes sabe como el usuario puede indicar la tabla que desea abrir, o que de alguna manera se muestre todas las tablas que posee la base de datos y poder seleccionar la que se desea cargar en el datagridview me sería de gran ayuda. De antemano muchas gracias. Adjunto el codigo de la aplicación que he desarrollado hasta el momento:
Imports System.data
Imports System.Data.OleDb
Imports System.IO
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim drives() As String
drives = System.Environment.GetLogicalDrives()
CB_Drivers.Items.AddRange(drives)
End Sub
Private Sub CB_Drivers_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CB_Drivers.SelectedIndexChanged
Try
Dim combo As New DirectoryInfo(Me.CB_Drivers.Text)
Dim carpetas() As DirectoryInfo
carpetas = combo.GetDirectories()
TV_Directorios.Nodes.Clear()
Dim carpetas2 As DirectoryInfo
Dim nodo As TreeNode
LV_BaseDatos.Items.Clear()
For Each carpetas2 In carpetas
nodo = New TreeNode(carpetas2.FullName, 0, 1)
TV_Directorios.Nodes.Add(nodo)
Next
Catch pollo As Exception
MessageBox.Show("Mensaje de error: " & pollo.Message, "Error al leer la unidad " & CB_Drivers.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
CB_Drivers.Text = "C:\"
End Try
End Sub
Private Sub TV_Directorios_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TV_Directorios.AfterSelect
Try
If Not e.Node.IsExpanded Then
Dim carpetas3 As DirectoryInfo
carpetas3 = New DirectoryInfo(e.Node.FullPath)
Dim carpetas4() As DirectoryInfo
carpetas4 = carpetas3.GetDirectories()
Dim subcarpetas As DirectoryInfo
Dim nodo As TreeNode
For Each subcarpetas In carpetas4
nodo = New TreeNode(subcarpetas.Name, 0, 1)
e.Node.Nodes.Add(nodo)
Next
Dim archivos() As FileInfo
archivos = carpetas3.GetFiles()
LV_BaseDatos.Items.Clear()
Dim BaseDatos As FileInfo
For Each BaseDatos In archivos
Select Case BaseDatos.Extension
Case ".mdb"
LV_BaseDatos.Items.Add(BaseDatos.Name, 1)
End Select
Next
End If
Catch pollo As Exception
MessageBox.Show("Mensaje de error: " & pollo.Message, "Error al leer bases de datos ", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub LV_BaseDatos_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LV_BaseDatos.SelectedIndexChanged
Dim dbConnection As OleDbConnection
Dim NombreTabla As String = TV_Directorios.SelectedNode.FullPath & "\" & LV_BaseDatos.SelectedItems(0).Text
Dim CadenaConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & NombreTabla
Dim CadenaSelect As String = "SELECT * from EP_Temuco"
'aqui le indico que tabla debe abrir, y lo que quiero modificar es que me seleccione datos de cualquier tabla
'no necesariamente de EP_Temuco, que la tabla la pueda especificar o seleccionar el usuario
dbConnection = New OleDbConnection(CadenaConexion)
dbConnection.Open()
Dim dbDataSet = New DataSet
Dim dbDataAdapter = New OleDbDataAdapter(CadenaSelect, dbConnection)
dbDataAdapter.Fill(dbDataSet, NombreTabla)
DataGridView1.DataSource = dbDataSet.Tables(0).DefaultView
End Sub
End Class
muchas gracias, chaus y que estén bien |