elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  como selecciono la tabla que yo quiera con OleDbDataAdapter?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como selecciono la tabla que yo quiera con OleDbDataAdapter?  (Leído 7,191 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
como selecciono la tabla que yo quiera con OleDbDataAdapter?
« en: 9 Junio 2009, 18:44 pm »

hola

tengo un problema... miren, estoy haciendo un progama para revisar archivos de Access pero no se como abrir la tabla que yo quiero, ya que siempre tengo que cambiar el nombre al codigo, pero quisiera hacerlo desde el mismo programa, por ejemplo...

tengo un archivo access con dos tablas "dir1 y dir2"... y tengo que hacer esto

Código:
dim dba as OleDbDataAdapter
dim dbc as OleDbConnection

y luego

dba = new OleDbDataAdapter ("select * from dir1", dbc)


y con esto ya puedo visualizar la tabla dir1, pero para ver la tabla dir2, tengo que hacer esto desde el codigo

Código:
dba = new OleDbDataAdapter("select * from dir2", dbc)

pero me gustaria colocar una caja de texto en donde al escribir dir1 o dir2 y al oprimir un boton pueda ver la tabla que yo quiera

hay forma de encontrar las tablas y colocarlas en un listbox, para despues escribir en un textbox la tabla que quiero ver?

P.D. estoy usando Visual Studio 2008

salu2  ;D


« Última modificación: 9 Junio 2009, 18:49 pm por Belial & Grimoire » En línea

.                                 
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: como selecciono la tabla que yo quiera con OleDbDataAdapter?
« Respuesta #1 en: 9 Junio 2009, 20:15 pm »

Hola.

Es simple la respuesta... lo resuelves con una sentencia IF dentro del control
Código
  1. If text1.Text = "dir1" Then
  2.    dba = new OleDbDataAdapter("select * from dir1", dbc)
  3.    ' actualizaElse
  4.    dba = new OleDbDataAdapter("select * from dir2", dbc)
  5. End If
  6. ' Aca debes poner el codigo que usas para mostrar la tabla
  7.  


espero que te sirva!!!


En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como selecciono la tabla que yo quiera con OleDbDataAdapter?
« Respuesta #2 en: 9 Junio 2009, 22:09 pm »

hola

gracias raul338 por la respuesta, pero lo que busco es que al abrir un archivo de access pueda colocar en un listbox las tablas que tenga, ya que por ejemplo, si nose los nombres, lo que tendria que hacer es abrir el codigo y colocar en los if el nombre de todas las tablas, etc...

y como menciono anteriormente, me gustaria abrir el archivo access y que el programa tome el nombre de las tablas y me las coloque en un listbox para saber despues cual tabla quiero abrir, pero nose de que manera hacer que el programa me encuentre los nombres de las tablas... hay alguna funcion para eso?

 
En línea

.                                 
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: como selecciono la tabla que yo quiera con OleDbDataAdapter?
« Respuesta #3 en: 10 Junio 2009, 00:01 am »

Utiliza esta consulta para obtener todas las tablas

Código
  1. SELECT Name FROM MSysObjects WHERE ParentId = (SELECT Id FROM MSysObjects WHERE Name = "Tables")

Obtienes todas las tablas de la base de datos. Es una tabla oculta, para verla ve al menu Herramientas -> Opciones -> Ver objetos del sistema.

Espero que te sirva!!!
En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como selecciono la tabla que yo quiera con OleDbDataAdapter?
« Respuesta #4 en: 10 Junio 2009, 01:12 am »

hola

mira te dejo la parte del codigo que uso para cargar el archivo de access, y no se si me podrias ayudar diciendome donde o como coloco el codigo que me diste, es que estoy un poco mas acostumbado a VB6 y ahorita que intente con VB.net lo que me mencionaste, me aparecion algunos errores... y aunque parece un vbs, me dice algo de end select y si le agrego end select, me aparece otro error en FROM, etc

Código:
bdc = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Form1.odf.FileName)
        bdc.Open()
        bda = New OleDbDataAdapter("select * from" & " " & TextBox1.Text, bdc)
        ds = New DataSet
        bda.Fill(ds, TextBox1.Text)
        Form1.dg.DataSource = ds
        Form1.dg.DataMember = TextBox1.Text
        bdc.Close()

si ves, tengo que decirle con un textbox que tabla quiero abrir, y me gustaria que el programa me dijera que tablas hay y al selecionarla colocarla en Fill y poder visualizar los datos

salu2 y gracias por la ayuda  ;D
En línea

.                                 
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: como selecciono la tabla que yo quiera con OleDbDataAdapter?
« Respuesta #5 en: 10 Junio 2009, 01:57 am »

Cambie un poco las declaraciones, use estas
Código
  1. Dim bdc As OleDbConnection
  2. Dim bdcm As OleDbCommand
  3. Dim bdr As OleDbDataReader
  4. Dim bda As OleDbDataAdapter
  5. Dim ds As DataSet

En el boton que abre la conexion a la base de datos pon lo siguente
Código
  1. ' Abre la conexion
  2. bdc = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & txtBase.Text)
  3. bdc.Open()
  4.  
  5. ' Consulta para devolver las tablas
  6. bdcm = New OleDbCommand("SELECT Name FROM MSysObjects WHERE ParentId = (SELECT Id FROM MSysObjects WHERE Name = 'Tables')", bdc)
  7. bdr = bdcm.ExecuteReader()
  8.  
  9.  
  10. ' Lee las tablas
  11. While bdr.Read()
  12.    ' Se usa el Select Case para saltear las tablas del sistema y solo mostrar las creadas por un usuario
  13.    Select Case bdr("Name").ToString()
  14.        Case "MSysAccessObjects"
  15.        Case "MSysAccessXML"
  16.        Case "MSysACEs"
  17.        Case "MSysObjects"
  18.        Case "MSysQueries"
  19.        Case "MSysRelationships"
  20.        Case Else
  21.            lstTablas.Items.Add(bdr("Name").ToString())
  22.    End Select
  23. End While

y el evento DoubleClick de la Lista use:
Código
  1. ' Tiene que haber al menos uno seleccionado, sino tira error
  2. If lstTablas.SelectedItems.Count > 0 Then
  3.    bda = New OleDbDataAdapter("SELECT * FROM " & lstTablas.SelectedItem.ToString(), bdc)
  4.    ds = New DataSet()
  5.    bda.Fill(ds, lstTablas.SelectedItem.ToString())
  6.    dg.DataSource = ds
  7.    dg.DataMember = lstTablas.SelectedItem.ToString()
  8. End If

tengo la aplicacion de ejemplo si despues la quieres...te la paso

EDIT: 1) Los ".ToString()" no son necesarios (yo tengo option strict on)
2) Para leer de la tabla MSysObjects debes ponerles los permisos de lectura de la base de datos, sino no funcionara. Para hacerlo en Access vas al menu Herramientas -> Seguridad -> Permisos de usuario y grupo.

Seleccionas el usuario (o dejalo en adminstrador) y en "Nombre del objeto" buscas "MSysObjects" y en la sección de "Permisos" activas "Leer datos"

ahora si....Espero que te sirva!!! ;)
« Última modificación: 10 Junio 2009, 02:01 am por raul338 » En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como selecciono la tabla que yo quiera con OleDbDataAdapter?
« Respuesta #6 en: 10 Junio 2009, 02:52 am »

hola

voy a provar el codigo que me diste, solo que tuve que desinstalar un momento VStudio 2008... pero ahorita que lo vuelva a instalar lo voy a intentar, ok... y gracias por el codigo, aunque tendre que estudiar un poco mas ya que no conocia "OleDbDataReader", ni "ExecuteReader", jeje

salu2  ;D

En línea

.                                 
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines