miércoles, 26 de noviembre de 2008

Visual Basic .net + access

Tenia muchas ganas de escribir este articulo, pero me costava encontrar la manera adecuada para hacero. Se trata de un pequeño ejemplo en Visual Basic .NET que se conecta a una base de datos Access.
La aplicación, es un Listin Telefónico super sencillo, en el que se pueden buscar telefonos según el nombre introucido o insertar nuevas personas.
Este articulo no es para iniciarse en la programación de aplicaciones visuales, o programación orienteada a eventos. Pero si tienes unas nociones sobre este tipo de programación, creo que el siguiente ejemplo te puede ayudar bastante para orientarte en cuanto a aplicaciones que se conecta a bases de datos.
Por cierto, si no te interesa la programación, pero quieres descargarte la agenda de soy-informático solo tienes que pulsar aqui.
Para este articulo, me he documentado sobre el blog de tony y sus ondas. Sobre todo de estos dos articulos:
Tengo que reconocer que la indentación no la he trabajado mucho, pero por lo menos he podido indentar gracias al blog de Albert Mata

Para cualquier cosa, contactarnos a traves de los comentarios.

Public Class Form1
Dim dt As New DataTable
Dim fila As Integer = 0
Dim strConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=bd1.mdb"

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strSQL As String = "Select * from telefonos"
Dim dataAdapter As New OleDb.OleDbDataAdapter(strSQL, strConexion)
dataAdapter.Fill(dt)
dataAdapter.Dispose()
ActualizaTexto()
End Sub

Private Sub ActualizaTexto()
txtNombre.Text = CStr(dt.Rows(fila)("nombre"))
txtTelefono.Text = CStr(dt.Rows(fila)("telefono"))
End Sub

Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
Dim StrBuscaNombre As String
Dim Encontrado As Boolean = False
Dim i As Integer
StrBuscaNombre = txtNombre.Text
For i = 0 To dt.Rows.Count - 1
If CStr(dt.Rows(i)("nombre")) = StrBuscaNombre Then
Encontrado = True
;fila = i
ActualizaTexto()
End If
Next
If Not Encontrado Then
MsgBox("No se encontro " & StrBuscaNombre)
End If
End Sub

Private Sub btnInsertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsertar.Click
Dim Conex As New OleDb.OleDbConnection
Dim Comm As New OleDb.OleDbCommand
Conex.ConnectionString = strConexion
Comm.Connection = Conex
Dim filas As Integer = dt.Rows.Count + 1
Comm.CommandText = "INSERT INTO telefonos(id, nombre, telefono)" & _
"values(" & filas.ToString & ", '" & txtNombre.Text & "', " & txtTelefono.Text & ");"
Conex.Open()
Comm.ExecuteNonQuery()
Conex.Close()
MsgBox("Dato introducido correctamente")
Dim strSQL As String = "Select * from telefonos"
Dim dataAdapter As New OleDb.OleDbDataAdapter(strSQL, strConexion)
dataAdapter.Fill(dt)
dataAdapter.Dispose()

End Sub
End Class

21 comentarios:

  1. La verdad me ayudo bastante lo que publicaste eh!!!
    sigue publicando mas de estos contenidos

    saludos…

    by rexonline

    ResponderEliminar
  2. Muchas gracias por el comentario. Voy posteando lo que creo conveniente y sobre todo cuando el tiempo y las ganas me lo permiten, jejeje. Los enlaces que he puesto también soy muy interesantes, y si quieres algo ya sabes que aquí estamos.
    Saludos!!!

    ResponderEliminar
  3. hola, me parece muy claro todo el codigo, o bueno creo haberlo entendido, ese codigo se escribe dentro de visual studis verdad? tengo otras dudas, se debe de crear antes una base de datos en acces con sus tablas ? y se tiene que descargar algun controlador o como se hace la conexion entre visual y access? gracias de antemano. javier

    ResponderEliminar
  4. Hola Javier, en primer lugar muchas gracias por leer y comentar en el blog. El código que hay se tiene que escribir en un fichero que se llame Form.vb si tu formulario principal se llama de otro manera, sería nombreformulario.vb
    Por otro lado si, primero tienes que crear una base de datos en este caso access y que se llame bd1.mdb
    Bueno, espero haberte ayudado, para cualquier otra cosa, ya sabes.
    Saludos

    ResponderEliminar
  5. ala muxas gracias, me sirvio d muxo tu ejemplo, en serio, GRACIAS!!!!!!!!!!!!!! =0)

    ResponderEliminar
  6. NO PUEDODESCARGAR EL ARCHIVO ME LO ENVIAS AL MAIL

    davito.hxc@hotmail.com

    ResponderEliminar
  7. Ya he reparado el enlace.
    Un saludo.

    ResponderEliminar
  8. gracias por ese codigo me ayudo mucho

    ResponderEliminar
  9. Muchas gracias!! Me sirvio muchisimo su código :)

    ResponderEliminar
  10. hola a todos, tengo problema en da.Fill(dt), no me corre el programa, k podria hacer!!!!???

    ayudemen con esto pliz

    ResponderEliminar
  11. tengo el mismo problema.. porfavor alguien me ayude ya son muchas cosas las que e intentado

    ResponderEliminar
  12. hola, el ejemplo no está mal me gusta pero quiero hacer una consulta.
    Tengo una BD acces con campos Integer y otros tipos de datos que no son string.
    ¿COMO LE HAGO?

    ResponderEliminar
    Respuestas
    1. tendras otro que sea solo el menu y 2 form uno de captura de 2 articulos y el otro de le venta de ellos en access asi de excelente como este

      Eliminar
  13. Hola muy buena tu aplicacion, pero megustaria saber si me pueden colaborar con una cosita es que necesito crear login con access 2010 y visual basic.net 2010 les agradeseria de todo corazon mi correo damilban@hotmail.com

    ResponderEliminar
  14. Alguien me podria ayudar con una form de venta de 4 articulos a la vez

    ResponderEliminar
  15. Aqui codigos VB.Net 2010 --->http://ayudaveloz.blogspot.com/

    ResponderEliminar
  16. Me marca error de no encontrar la base de datos con el dataAdapter.Fill(dt)

    ResponderEliminar
  17. Muchísimas gracias por presentar este ejemplo, todavía estoy un poco perdido con el tema de como pasar correctamente las tablas de la base de datos a vb en tiempo de programación y con suerte esto me sirve.

    ResponderEliminar
  18. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  19. Hola. Yo tengo una aplicación a la que le tengo que añadir un módulo que genera información de una tabla mediante un store procedure de oracle, traspasar esa información a una tabla Access con la misma estructura que la de Oracle, y mostrar la información en un reporte hecho con Crystal Reports. Lo divertido es que está hecho en Visual Basic 6.0 (del cual salvo cosas sencillitas, nunca he programado en serio). ¿Alguna sugerencia o tutorial? Muchas gracias.

    ResponderEliminar