Este post va dirigido principalmente a mis alumnos de Ingeniería en Software, pero puede ser útil a varios más.
Primero que nada, eso de MS Access se que no va ya con mi filosofía de herramientas a utilizar, pero muchas veces es necesario ya sea porque es la única herramienta que se conoce o bien es un requisito del cliente/maestro (esto último no es mi caso
).
Para realizar la conexión y las transacciones con la base de datos voy a utilizar una librería que se puede descargar conexionOleDb.dll y también la base de datos.
El motivo de utilizar esta librería es para agilizar las cosas y obviar detalles básicos de una conexión a BD (adaptador, conector, datatables, etc.)
La librería cuenta con los siguientes métodos y atributos:

El primer paso es crear nuestro proyecto y agregar la referencia a la librería, esta referencia se agrega desde el "Explorador de Soluciones".
Una vez agregada la referencia podemos comenzar a programar.
Desde el editor de código le indicamos que vamos a utilizar nuestra librería:
Imports net.pecesama.db.OleDb
-
Imports net.pecesama.db.OleDb
Nuestra clase UI va a necesitar de dos propiedades, una para tener el objeto de conexión y otra para tener el resultado de las consultas a la BD:
Dim con As conexionOleDb
Dim dt As DataTable
-
Dim con As conexionOleDb
-
Dim dt As DataTable
A nuestra UI vamos a agregarle los siguientes elementos:

El DataGridView se llama Data y deben asignar el siguiente valor en sus propiedades SelectionMode = FullRowSelect
Los TextBoxes se llaman txtUsuario, txtPass, txtNombre respectivamente.
El DataGidView lo vamos a utilizar SOLO para ver la información, no lo usaremos en su modo de edición, esto para ver como hacer la edición desde lenguaje SQL.
En el evento Form1_Load vamos a agregar el siguiente código:
Dim rutaBD As String = Application.StartupPath + "\bd.mdb"
con = New conexionOleDb(rutaBD)
If con.conectar Then
dt = con.ejecutaSql("SELECT * FROM usuarios")
data.DataSource = dt
Else
MessageBox.Show("No se pudo conectar a la BD" + vbCrLf + vbCrLf + con.error, "Error al conectar", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
-
Dim rutaBD As String = Application.StartupPath + "\bd.mdb"
-
con = New conexionOleDb(rutaBD)
-
If con.conectar Then
-
dt = con.ejecutaSql("SELECT * FROM usuarios")
-
data.DataSource = dt
-
Else
-
MessageBox.Show("No se pudo conectar a la BD" + vbCrLf + vbCrLf + con.error, "Error al conectar", MessageBoxButtons.OK, MessageBoxIcon.Error)
-
End If
Para probar la edición de registros, vamos a agregarle un evento click a nuestro DataGridView, y en este evento (data_Click) ponemos el siguiente código:
txtUsuario.Text = data.SelectedCells(1).Value
txtPass.Text = data.SelectedCells(2).Value
txtNombre.Text = data.SelectedCells(3).Value
-
txtUsuario.Text = data.SelectedCells(1).Value
-
txtPass.Text = data.SelectedCells(2).Value
-
txtNombre.Text = data.SelectedCells(3).Value
No hay mucho que explicar en el código anterior, solo que las cajas de texto se llenan con la información del renglón seleccionado en el DataGridView.
A nuestro botón editar le ponemos en el evento btnEditar_Click el siguiente código para actualizar la BD.
Dim sqlStr As String ' aqui pondremos la consulta
' SQL para editar registros
sqlStr = "UPDATE usuarios SET usuario='" + txtUsuario.Text + "', pass='" + txtPass.Text + "', nombre='" + txtNombre.Text + "' WHERE id_usuario=" + data.SelectedCells(0).Value.ToString()
con.ejecutaSql(sqlStr) ' ejecutamos la consulta directamente en la BD
' refrescamos el DataGridView y las cajas de texto
dt = con.ejecutaSql("SELECT * FROM usuarios")
data.DataSource = dt
txtUsuario.Text = ""
txtPass.Text = ""
txtNombre.Text = ""
-
Dim sqlStr As String ‘ aqui pondremos la consulta
-
‘ SQL para editar registros
-
sqlStr = "UPDATE usuarios SET usuario=’" + txtUsuario.Text + "’, pass=’" + txtPass.Text + "’, nombre=’" + txtNombre.Text + "’ WHERE id_usuario=" + data.SelectedCells(0).Value.ToString()
-
con.ejecutaSql(sqlStr) ‘ ejecutamos la consulta directamente en la BD
-
‘ refrescamos el DataGridView y las cajas de texto
-
dt = con.ejecutaSql("SELECT * FROM usuarios")
-
data.DataSource = dt
-
txtUsuario.Text = ""
-
txtPass.Text = ""
-
txtNombre.Text = ""
Por último a nuestro botón salir en el evento btnSalir_Click le agregamos:
con.cerrarConexion()
Application.Exit()
-
con.cerrarConexion()
-
Application.Exit()
Con esto terminamos el ejemplo de como conectarnos a una base de datos en Access, como leer los datos, como editarlos y como cerrar la conexión.
Queda como ejercicio para ustedes la inserción de registros.
Actualización: Les pongo el código para insertar y eliminar en el ejemplo.
Agregue dos nuevos botones en el formulario, btnAgregar y btnEliminar.
A nuestro botón editar le ponemos en el evento btnAgregar_Click el siguiente código para insertar registros.
Dim sqlStr As String
sqlStr = "INSERT INTO usuarios (usuario, pass, nombre) VALUES ('" + txtUsuario.Text + "', '" + txtPass.Text + "', '" + txtNombre.Text + "');"
con.ejecutaSql(sqlStr)
dt = con.ejecutaSql("SELECT * FROM usuarios")
data.DataSource = dt
txtUsuario.Text = ""
txtPass.Text = ""
txtNombre.Text = ""
-
Dim sqlStr As String
-
sqlStr = "INSERT INTO usuarios (usuario, pass, nombre) VALUES (‘" + txtUsuario.Text + "’, ‘" + txtPass.Text + "’, ‘" + txtNombre.Text + "’);"
-
con.ejecutaSql(sqlStr)
-
dt = con.ejecutaSql("SELECT * FROM usuarios")
-
data.DataSource = dt
-
txtUsuario.Text = ""
-
txtPass.Text = ""
-
txtNombre.Text = ""
A nuestro botón editar le ponemos en el evento btnEliminar_Click el siguiente código para eliminar registros.
Dim sqlStr As String
sqlStr = "DELETE FROM usuarios WHERE id_usuario=" + data.SelectedCells(0).Value.ToString()
con.ejecutaSql(sqlStr)
dt = con.ejecutaSql("SELECT * FROM usuarios")
data.DataSource = dt
txtUsuario.Text = ""
txtPass.Text = ""
txtNombre.Text = ""
-
Dim sqlStr As String
-
sqlStr = "DELETE FROM usuarios WHERE id_usuario=" + data.SelectedCells(0).Value.ToString()
-
con.ejecutaSql(sqlStr)
-
dt = con.ejecutaSql("SELECT * FROM usuarios")
-
data.DataSource = dt
-
txtUsuario.Text = ""
-
txtPass.Text = ""
-
txtNombre.Text = ""
Este código se puede mejorar cambiando la declaración de Dim sqlStr As String al inicio de la clase del formulario, y crear un método para el código de refrescar el DataGridView y los TextBoxes.
Reyes
December 15, 2008 at 12:42 pm
buen dia profe, no soy alumno de usted pero esta muy bueno el tema, estuve haciendo el ejercicio y si se compila bien el proyecto y no me marca error, solo que no me hace ningun cambio en el update ni en el insert, esta raro porque el DELET si lo hace bien, lo estoy haciendo en:
S.O. Windows Vista
Visual Studio .NET 2005
tengo su dll y la misma bd.
que cree usted que pueda ser ???
saludos., Monterrey, N.L. Mexico.
Guido
December 15, 2008 at 8:12 pm
hola, lo molesto nuevamente…
tengo una duda, no pertenece a este tema, pero me parece el mejor lugar para perguntar…
1. se puede crear tablas sql (con sql server) en tiempo de ejecucion y con un nombre q le pase a traves de una variable. Ej
nombre = textbox1.text
sql = CREATE TABLE nombre …
o
sql = CREATE TABLE Clientes … ???
desde ya gracias… y mil disculpas por preguntar de sql aca…
saludos…
Chinese
December 29, 2008 at 3:43 pm
Hola quisiera saber como conectar una base de datos mysql con vb.net 2005
Pablo
January 5, 2009 at 9:58 am
Hola profesor, soy de Guatemala y llemo mucho tiempo en buscar ayuda a un mi problema y gran parte de mi respuesta la solucione con su tan detallado ejemplo. gracias muchas gracias. solo tengo una pregunta, como hago lo siguiente:
Escribir en un Textbox un nombre XXXX y que mi data grid se posicione automaticamente al dar enter o al precionar un boton. porfavor le agradeceria mochisimo si usted me puediera ayudar. gracias.
Pablo Barrundia. Guatemala
Naitmeir
February 27, 2009 at 4:27 am
Muchas gracias, fue de gran ayuda!
Nano
March 5, 2009 at 2:26 pm
No consigo contar los registros de una tabla (SELECT Count…), con tu DLL.
Matias Seguel Miranda
March 16, 2009 at 11:41 am
Hola, como puedo postrar directamente en un textbox sin tener que pasarlo por un grid, recuerdo que en vb 6 antiguamente se decia txt1.text = dt!nombre pero en punto net no se como es.
Matias Seguel
March 17, 2009 at 3:14 pm
Hola, tenga usted muuuuuy buen dia, primero que todo quiero felicitarlo por tan noble, esto de ayudar a su futura competencia es muy noble de su parte.
Quiero hacerle una consulta, yo estoy tratando desarrollar su ejercicio, afrtunadamente todo lo que usted ha enseñado me ha resultado pero tengo una inquietud. ¿Como puedo mostrar los registro en un textbox en vez de una grid? una vez hecho eso como podria hacer el famoso movenext movelast, etc que haciamos en vb6?
Por su buena voluntad muchas gracias.
JUAN PABLO LEYTON
April 29, 2009 at 9:35 pm
Me gustaria conocer un ejemplo para realizar la conexion vb 2005 y access con la restriccion de password en la base de datos
Jose
May 8, 2009 at 9:42 am
Cual es el link de descarga del proyecto Conectar a MS Access con VB.Net ya que no lo consigo.
Gracias
Jose
May 8, 2009 at 2:11 pm
Donde puedo conseguir el link paraajar este proyecto, si me lo facilita sera mucho mejor.
Eduardo
June 8, 2009 at 11:48 pm
bueno, es un muy buen aporte esta pequeña .DLL, no soy alumno suyo, pero me gustaria saber de como trabajar con esta libreria, estoy empezandome con este tema, y me quede mas de un dia pensando en como podria cargar los datos de mi tabla en un combobox, por ejemplo tengo una tabla que tiene (codalumno, nom_alumno), pero como seria el codigo para realizar que el combobox solo jale los datos de solo nom_alumno… he intentado de todo pero no me funca nada…. agradeceria su apoyo..
gracias de antemano
Jaime Yepes
July 17, 2009 at 8:32 am
Saludos desde Barranquilla, Colombia.
Muy util el codigo me sirvió bastante. Ahora usaré esto y lo afinaré con Crystal Report.
Nevardo Jaramillo Sánchez
July 19, 2009 at 2:50 pm
Felicitaciones profesor es Usted todo un docente. Muy didáctica y muy pedagógica su explicación la cual me ha sido muy util.
Mis agradecimientos.
Oswaldo Hernández
August 27, 2009 at 1:01 am
Saludos. Muy bueno su blog. Tengo una consulta. Logre hacer funcionar correctamente todo el ejemplo publicado (editar, insertar, eliminar) incluso hice un buscar (con filas = Data.RowCount() ), pero al tratar de usar los codigos con otra BD y tabla, solo logro poder eliminar. No inserto, ni edito. Le anexo el codigo utilizado a ver si me puede decir que tengo mal:
BD: biblioteca.mdb. Tabla: clave
Campos de la Tabla
id : autonumerico
login : varchar-10
password : varchar-10
Private Sub btnAgregar_Click(…..
Dim sqlStr As String
sqlStr = “INSERT INTO clave (login, password) VALUES
(‘ ” + txtLogin.Text + ” ‘, ‘ ” + TxtPass.Text + ” ‘)”
con.ejecutaSql(sqlStr)
dt = con.ejecutaSql(“SELECT * FROM clave”)
Data.DataSource = dt
TxtLogin.Text = “”
TxtPass.Text = “”
End Sub
Private Sub btnEditar_Click(…..
Dim sqlStr As String
sqlStr = “UPDATE clave SET password=’ ” + TxtPass.Text + ” ‘ WHERE login=’ ” + TxtLogin.Text + ” ‘;”
con.ejecutaSql(sqlStr)
dt = con.ejecutaSql(“SELECT * FROM clave”)
Data.DataSource = dt
txtLogin.Text = “”
TxtPass.Text = “”
End Sub
He probrado incluso un Update Forzado:
sqlStr = “UPDATE clave SET password=’123456′ WHERE id= 2″
id. Es el campo autonumerico en la tabla clave
He probado con el valor desde un TextBox
sqlStr = “UPDATE clave SET password=’” + TxtPass.Text + “‘ WHERE login=’” + txtLogin.Text + “‘;”
Y nada.
Sin embargo en el ejercio original de usted, he hecho los cambios para el Update del valor Where
Original. Funciona
sqlStr = “DELETE FROM usuarios WHERE id_usuario=” + Data.SelectedCells(0).Value.ToString()
Asi tambien funciona
sqlStr = “DELETE FROM usuarios WHERE usuario=’” + TxtUsuario.Text + “‘”
Yo no se que hacer.. Me podria ayudar.-
Private Sub btnBuscar_Click(…..
Dim sqlStr As String
Dim filas As Integer
sqlStr = “SELECT * FROM clave WHERE login = ‘” + txtLogin.Text + “‘;”
con.ejecutaSql(sqlStr)
dt = con.ejecutaSql(sqlStr)
Data.DataSource = dt
filas = Data.RowCount()
If filas > 0 Then
MsgBox(“Registro existe”)
End If
End Sub
Edith
October 20, 2009 at 9:55 pm
QUISIERA TENER UN MAESTRO COMO USTED!!! que de verdad le preocupe y le interese enseñar (si ese es el caso con usted), me hubiese gustado haber visto este post hace unos meses, ya que necesitaba hacer algo asÃ, y lo que encontraba no lo explicaban muy bien. De todos modos aún me sirve para complementar alguna duda
xxxxxxxxxxx
November 10, 2009 at 5:33 pm
hola
yo ya tengo mi coneccion de mi base de datos tengo un campo que se llama edad pero necesito mostrar las edades por rangos y por sexo ej
mujeres
menores de 12 años
13 a 18 años
19 a 25 años
hombres
menores de 12 años
13 a 18 años
19 a 25 años
como le puedo hacer por favor ayuda
ya investigue y noencuentro
me podrian ayudar por favor lo antes posible
de antemanomuchas gracias
Rudy Gonzalez
December 10, 2009 at 9:58 pm
ante todo saludos y gracias por su aporte.
me gustarÃa que si está a su alcanse mandarme el link de descarga del ejemplo ya que estoy estudiando vb .net y casualmente necesito acceder a una base de datos access con vb .net
saludos
tlcnano
December 17, 2009 at 10:32 am
para el que necesita mostrar las edades:
puedes utilizar una consulta sql con datediff
ejem:SELECT * From Tabla where DATEDIFF(day, fecha_tabla, now())<=12
Rocio
February 20, 2010 at 9:45 pm
Hola, hoy descubri su blog. Necesito aprender VB.Net , tendra algun manual ó tutorial que me pueda servir????
Lucia
April 8, 2010 at 12:39 am
Hola, yo tambien descubri hoy el blog y he intentado hacer el ejemplo. Mi sorpresa ha sido que conectar con la base de datos ha resultado ser una tarea muy simple, tan simple que no se aprende nada. Pues la funcion o el evento “conectar” esta encapsulada y no se puede ver el proceso que realiza. Por ejemplo si quieres conectar con una base de datos de Acces que lleve contraseña esto ya no funciona.
Me gustaria ver las entrañas al evento “conectar” que utiliza el profe.
Un saludo
pecesama
April 9, 2010 at 8:42 pm
Lucia si analizaras las cosas en lugar de sólo criticar te darás cuenta que en el diagrama UML esta el cómo conectarse a una BD con contraseña.
Lucia
April 12, 2010 at 5:06 am
Pido mil disculpas, es verdad que en el diagrama tambien esta la opcion de conectarse a la base de datos mediante contraseña. No me habia percatado de ello.
Bueno nuevamente pido perdon y doy las gracias por vuestra ayuda.
Voy a seguir experimentando con los ejercicios.
Saludos
Alberto Garcia
June 3, 2010 at 6:33 pm
hola profe, me parecio muy bueno su ejemplo, aun que yo no soy programador trato de hacer aplicaciones que uso en mi trabajo como erramientas propies, hace poco trate de hacer una plicacion en visual studio 2008 y ya casi la acompleto, solo que estoy un poco atorado en un detalle, ya tengo toda la conexion y todo incuso ya hice una prueba y los datos se guardan bien el la bd, solo que no he podido ponerle un boton para editar los datos que se han guardado.
agradeceria mucho su ayuda si me pudiera contactar por msn.
muchas gracias de antemano
Miguel Leon
June 26, 2010 at 7:59 pm
Profe Gracias desde Venezuela su ejemplo me ha aclarado muchas dudas pero le agradeceria si pudiera colocar el procedimiento de como hacer la dll de la conexion. Digo para aprender. Un saludo.
jonathan
August 1, 2010 at 4:51 pm
hola a todos queria agradecer mucho por este excelente post ya que me saco de un buen aprieto con unos mantenimientos q estaba haciendo con vb.net y access pero ahora me surgio el problema para buscar un registro, espero alguien me pueda ayudar y decirme como puedo buscar registros por medio del nombre espero sus respuestas, muchas gracias nuevamente
Cristian
August 22, 2010 at 1:56 am
Veo q varios no pueden buscar un dato espesifico asiq pondre un ejemplin ya q pase x aqui… de paso buen ejemplo el q postearon aqui ayudo bastante y gracias por subirlo.
buscando el nombre en una tabla cuyo dato clave es el id q estara en un textbox
datos es mi datatable
Tabla es mi tabla en access
Codigo es el campo primario
Nombre es el campo q busco
If TxCodigo.Text “” Then
datos = con.ejecutaSql(“select Nombre from Tabla where Codigo=” & TxCodigo.Text & ” “)
If datos.Rows.Count > 0 Then
TxNombre.Text = datos.Rows(0).Item(“Nombre”).ToString
Else
MsgBox(“no se encontro el registro”, MsgBoxStyle.Critical, “error”)
End If
End If
espero sirva xD
Cristian
August 22, 2010 at 1:57 am
me ayudó bastante*
GABRIELA
September 27, 2010 at 8:42 pm
Hola! necesito saber como puedo conectar una BD con VB, que no sea con el database
Jesus
October 5, 2010 at 10:33 pm
Disculpe la pregunta, hice un proyecto en VB.net con SQL Server y me da problemas al momento de crear los instaladores, me dice no existe la base de datos y tambien me da problemas con cristal report, creo que me convendria pasalo con access. Como debo hacer la cadena de enlaces o que debo cambiar para pasarme de SQL a Access
Joel Hernandez
October 23, 2010 at 6:55 pm
Profesor le felicito por este trabajo que esta haciendo espero muchos imitemos su ejemplo cuandotengamos la oportunidad de hacerlo.
Ahora profe si tengo miles de registro en las tablas como puedo acceder a uno en especifico ya que hice este ejercicio y me hicieron esta pregunta.
Joel Hernandez
October 23, 2010 at 7:22 pm
A una pregunta para cristian o usted profe donde aplico el codigo que mostro cristian
fernando
November 2, 2010 at 10:38 pm
muy bueno su ejemplo, esto me llevo casi 6 meses solicionarlo, ahora tengo una duda, tengo una bdd en mysql y vacio la informacion en un datagrid, tengo otro formulario donde edito o elimino los datos, hasta ahi todo parece perfecto, pero coloque 2 textbox para hacer busquedas por 2 campos diferentes sin embargo no funciona, si ingreso datos en un textbox, me toma el filtro si pongo en el otro me filtra pero sin respetar el anterior, podria ayudarme con esto, ademas de un filtro por un campo donde necesito q ubiq por ejemplo los nacidos en nloviembre sin importar el año
gracias
luis Sarango
December 1, 2010 at 2:19 pm
HOLA ES UN BUEN APORTE PERO QUISIERA Q EXPLIQUE COMO HAGO MI CONEXION YO LA TENGO DE ESTA MANERA Y ME SALE ERROR
Imports System.Data.OleDb
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim con As New OleDbConnection(“Provider= Microsoft.jet.OLEDB.4.0; data source=” & Server.MapPath(“vbpractica.mdb”))
Dim com As New OleDbCommand(“insert into ingreso (nombre,apellido, edad,direccion, fecha, sexo)values(@nombre,@edad,@email, @clave, @reclave)”, con)
Dim prmnom As New OleDbParameter(“@nombre”, OleDbType.VarChar)
prmnom.Value = nom.Text
com.Parameters.Add(prmnom)
Dim prmape As New OleDbParameter(“@apellido”, OleDbType.Integer)
prmape.Value = ape.Text
com.Parameters.Add(prmape)
Dim prmedad As New OleDbParameter(“@edad”, OleDbType.VarChar)
prmedad.Value = edad.Text
com.Parameters.Add(prmedad)
Dim prmdir As New OleDbParameter(“@direccion”, OleDbType.VarChar)
prmdir.Value = dir.Text
com.Parameters.Add(prmdir)
Dim prmfecha As New OleDbParameter(“@fecha”, OleDbType.VarChar)
prmfecha.Value = fecha.Text
com.Parameters.Add(prmfecha)
Dim prmsexo As New OleDbParameter(“@sexo”, OleDbType.VarChar)
prmsexo.Value = sexo.Text
com.Parameters.Add(prmsexo)
Try
con.Open()
com.ExecuteNonQuery()
MsgBox(“Datos Procesados “)
con.Close()
Catch ex As Exception
MsgBox(“Datos No Procesados “)
End Try
End Sub
End Class
EddyPaz
December 22, 2010 at 8:09 pm
no se mi me puede dar un pequeño ejemplo de como realizar una busqueda en una base de datos echa en access solo quiero recuperar un campo puede ser un nombre o un id nada mas y que se guarde el campo encontrado en una variable o en un textbox o label cualquiera me sirve le quedaria muy agradecido a usted o a quien pueda ayudarme
Mauro
January 3, 2011 at 5:04 pm
Muy bueno me ayudaste
Gracias !
P4k0_90n_k
March 8, 2011 at 9:22 am
Hola buen dia a todos.
. Alguien sabe la manera de modificar la libreria para poder usar una base de dato de SQL?. Esta libreria me facilita demasiado las cosas pero ahora necesito migrar la bade de datos a SQL. Apreciaria mucho la ayuda
pecesama
March 10, 2011 at 1:46 pm
crearé un proyecto open source para liberar el código de la librerÃa, esten atentos
P4k0_90n_k
March 12, 2011 at 8:40 am
Muchas gracias profe
:). Creame que si lo hace le estaré muy agradecido. Ojala sea pronto jejeje. Un saludo
Francisco Enrique DomÃnguez
March 14, 2011 at 12:55 pm
Hola buenas tardes profesor:). Me pregunto cuando va a liberar el codigo de su libreria de gran utilidad para muchos. Un saludo
pecesama
March 14, 2011 at 1:35 pm
Hola a todos, ya he creado el proyecto open source para descargar los fuentes de la librerÃa, los podrán encontrar en C# y en VB.Net: http://blog.pecesama.net/conexion-ole-db-en-net/
Lina
May 10, 2011 at 1:14 pm
Hola, me parece interesante la información que brinda a todos los que visitan este lugar y quisiera que me ayudara con ejemplo de base de datos de visual basic.net conectandose con Microsoft Access.
Miguel Leon
May 11, 2011 at 4:31 pm
Lina escribeme a mleon98@gmail.com yo te puedo ayudar con eso
Miguel Leon
Abraham Rosales
July 5, 2011 at 8:37 pm
Muchas gracias, esto esta genial, hare una pregunta, si tengo dos campos llave en una tabla, ¿Cómo puedo hacer para que no se repitan los datos?
Keizer
August 10, 2011 at 5:00 pm
que tal, soy nuevo usando vb y cuando estaba implementando este ejemplo me marcaba en data.datasource un error diciendo que datasource no es un miembro de data, lo hice en vb2008, no se si haya alguna solucion para esto u otra instruccion, espero me puedan contestar, grax
Rodrigo
August 27, 2011 at 2:18 pm
Muy buena libreria.. La verdad soy Ingeniero Civil, me gusta la programacion. Pero lo que yo deseaba era usar la liberia y queria saber si se podia añadir mas datos, escribi el siguiente codigo pero no se que pasa porque no me funciona, sin embargo el ejemplo que descague funciona de maravilla con los 3 datos, mi caso es que tengo en mi base mas datos como 12:
Coloco el codigo para que alguien me ayude, gracias…
La base se carga normalmente…
Imports net.pecesama.db.OleDb
Public Class Form1
Dim bCon As conexionOleDb
Dim dt As DataTable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized ‘FormWindowState.Maximized)
Data.Width = Me.Width
Call abrirConexion()
End Sub
Private Sub BTnguardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnguardar.Click
Call GrabarDatos()
End Sub
Sub abrirConexion()
Dim rutaBD As String = Application.StartupPath & “\bddatosEPlanos.mdb”
bCon = New conexionOleDb(rutaBD)
If bCon.conectar Then
dt = bCon.ejecutaSql(“SELECT * FROM EtiquetasP”)
Data.DataSource = dt
Else
MessageBox.Show(“No se pudo conectar a la BD” + vbCrLf + vbCrLf + bCon.error, “Error al conectar”, MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
Sub GrabarDatos()
Dim ListCAMPOSbd1x As New ArrayList
Dim ListCAMPOSbd1y As New ArrayList
ListCAMPOSbd1x.Add(“ETIQUETA”) ’1
ListCAMPOSbd1x.Add(“TITULO”) ’2
ListCAMPOSbd1x.Add(“ESTRUCTURA”) ’3
ListCAMPOSbd1x.Add(“SERVICIO”) ’4
ListCAMPOSbd1x.Add(“MUESTRA”) ’5
ListCAMPOSbd1x.Add(“NUMERACIÓN”) ’6
ListCAMPOSbd1x.Add(“REVISIÓN”) ’7
ListCAMPOSbd1x.Add(“FECHA”) ’8
ListCAMPOSbd1x.Add(“HOJA”) ’9
ListCAMPOSbd1x.Add(“ELABORADO”) ’10
ListCAMPOSbd1x.Add(“ELABORADO”) ’11
ListCAMPOSbd1x.Add(“APROBADO”) ’12
ListCAMPOSbd1y.Add(“NombreETrv”) ’1
ListCAMPOSbd1y.Add(“TITULOrv”) ’2
ListCAMPOSbd1y.Add(“ESTRUCTURArv”) ’3
ListCAMPOSbd1y.Add(“SERVICIOrv”) ’4
ListCAMPOSbd1y.Add(“MUESTRArv”) ’5
ListCAMPOSbd1y.Add(“NUMERACIÓNrv”) ’6
ListCAMPOSbd1y.Add(“REVISIÓNrv”) ’7
ListCAMPOSbd1y.Add(“FECHArv”) ’8
ListCAMPOSbd1y.Add(“HOJArv”) ’9
ListCAMPOSbd1y.Add(“ELABORADOrv”) ’10
ListCAMPOSbd1y.Add(“ELABORADOrv”) ’11
ListCAMPOSbd1y.Add(“APROBADOrv”) ’12
Dim sqlStr As String
‘sqlStr = “INSERT INTO EtiquetasP (NombreET,TITULO,ESTRUCTURA,SERVICIO,MUESTRA,NUMERACIÓN,REVISIÓN,FECHA,HOJA,ELABORADO,VERIFICADO,APROBADO) VALUES (‘” & “EtiquetaRV” & “‘, ‘” & “TITULO” & “‘, ‘” & “ESTRUCTURA” & “‘, ‘” & “SERVICIO” & “‘, ‘” & “MUESTRA” & “‘, ‘” & “NUMERACIÓN” & “‘, ‘” & “REVISIÓN” & “‘, ‘” & “FECHA” & “‘, ‘” & “HOJA” & “‘, ‘” & “ELABORADO” & “‘, ‘” & “VERIFICADO” & “‘, ‘” & “APROBADO” & “‘);”
Dim MisCampos As String
Dim MisCamposVAL As String
For i = 0 To ListCAMPOSbd1x.Count – 1
If i = 0 Then
MisCampos = ListCAMPOSbd1x.Item(i)
Else
MisCampos = MisCampos & “, ” & ListCAMPOSbd1x.Item(i)
End If
Next
For i = 0 To ListCAMPOSbd1y.Count – 1
If i = 0 Then
MisCamposVAL = ListCAMPOSbd1y.Item(i)
Else
MisCamposVAL = MisCamposVAL & “‘, ‘” & ListCAMPOSbd1y.Item(i)
End If
Next
sqlStr = “INSERT INTO EtiquetasP (” & MisCampos & “) VALUES (‘” & MisCamposVAL & “‘);”
bCon.ejecutaSql(sqlStr)
dt = bCon.ejecutaSql(“SELECT * FROM EtiquetasP”)
Data.DataSource = dt
End Sub
Sub ModificarDatos()
Dim ListCAMPOSbd1x As New ArrayList
Dim ListCAMPOSbd1y As New ArrayList
Dim ListCAMPOSbd1xy As New ArrayList
ListCAMPOSbd1x.Add(“ETIQUETA”) ’1
ListCAMPOSbd1x.Add(“TITULO”) ’2
ListCAMPOSbd1x.Add(“ESTRUCTURA”) ’3
ListCAMPOSbd1x.Add(“SERVICIO”) ’4
ListCAMPOSbd1x.Add(“MUESTRA”) ’5
ListCAMPOSbd1x.Add(“NUMERACIÓN”) ’6
ListCAMPOSbd1x.Add(“REVISIÓN”) ’7
ListCAMPOSbd1x.Add(“FECHA”) ’8
ListCAMPOSbd1x.Add(“HOJA”) ’9
ListCAMPOSbd1x.Add(“ELABORADO”) ’10
ListCAMPOSbd1x.Add(“ELABORADO”) ’11
ListCAMPOSbd1x.Add(“APROBADO”) ’12
ListCAMPOSbd1y.Add(“NombreETrv”) ’1
ListCAMPOSbd1y.Add(“TITULOrv”) ’2
ListCAMPOSbd1y.Add(“ESTRUCTURArv”) ’3
ListCAMPOSbd1y.Add(“SERVICIOrv”) ’4
ListCAMPOSbd1y.Add(“MUESTRArv”) ’5
ListCAMPOSbd1y.Add(“NUMERACIÓNrv”) ’6
ListCAMPOSbd1y.Add(“REVISIÓNrv”) ’7
ListCAMPOSbd1y.Add(“FECHArv”) ’8
ListCAMPOSbd1y.Add(“HOJArv”) ’9
ListCAMPOSbd1y.Add(“ELABORADOrv”) ’10
ListCAMPOSbd1y.Add(“ELABORADOrv”) ’11
ListCAMPOSbd1y.Add(“APROBADOrv”) ’12
Dim MisCampos As String
Dim MisCamposXY As String
For i = 0 To ListCAMPOSbd1y.Count – 1
ListCAMPOSbd1xy.Add(ListCAMPOSbd1x.Item(i) & “=’” & Data.Item(i + 1, Data.CurrentRow.Index).Value)
Next
For i = 0 To ListCAMPOSbd1y.Count – 1
If i = 0 Then
MisCamposXY = ListCAMPOSbd1xy.Item(i)
Else
MisCamposXY = MisCamposXY & “‘, ” & ListCAMPOSbd1xy.Item(i)
End If
Next
Dim sqlStr As String ‘ aqui pondremos la consulta
‘ SQL para editar registros
sqlStr = “UPDATE EtiquetasP SET ” & MisCamposXY & ” WHERE ID_ETIQUETA=” & Data.SelectedCells(0).Value.ToString()
bCon.ejecutaSql(sqlStr) ‘ ejecutamos la consulta directamente en la BD
‘ refrescamos el DataGridView y las cajas de texto
dt = bCon.ejecutaSql(“SELECT * FROM EtiquetasP”)
Data.DataSource = dt
End Sub
Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
ModificarDatos()
End Sub
Rodrigo
August 27, 2011 at 2:59 pm
Gracias me fue de ayuda el codigo fuente de la libreria ya que pude encontrar mi error realmente, era que habia un elemento de la base duplicado ELABORADO… y corre normalmente…. Gracias al que ha realizado el .dll… Esta muy bueno.. La verdad soy nuevo en el uso de base datos, y como dije yo no estudie a profundidad aquello de generar dll, pero veo que las clases que habia yo creado realmente todas podrian ser dll… Gracia por aquello.
Felicito a aquel profesor que comparte con los que no sabemos.. Gracias y exitos en lo que este haciendo y por hacer.
e all
September 17, 2011 at 5:55 pm
tengo un problema con q no conecta la base de datos
Miguel Angel
November 10, 2011 at 1:21 pm
hola buenas tardes estuve acoplando un poco su codigo en .net 2010 y tengo un problema al grabar, eliminar y editar me muestra el error en esta linea con.ejecutaSql(sqlStr)y me dice q no se controló la nullreference Eception me podrias ayudar un poco de antemano muchas gracias