Inicio | Pedro Santana |  RSS  Mi tumblelog  Mis photos  Mi CV

 

Conectar a MS Access con VB.Net

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 :P ).

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:

clase

referencias 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:

vb.net [Show Plain Code]:
  1. 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:

vb.net [Show Plain Code]:
  1. Dim con As conexionOleDb
  2. Dim dt As DataTable

A nuestra UI vamos a agregarle los siguientes elementos:

interfaz

El DataGridView se llama Data y deben asignar el siguiente valor en sus propiedades SelectionMode = FullRowSelect

Los TextBoxes se llaman txtUsuariotxtPass, 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:

vb.net [Show Plain Code]:
  1. Dim rutaBD As String = Application.StartupPath + "\bd.mdb"
  2. con = New conexionOleDb(rutaBD)
  3. If con.conectar Then
  4.         dt = con.ejecutaSql("SELECT * FROM usuarios")
  5.         data.DataSource = dt
  6. Else
  7.         MessageBox.Show("No se pudo conectar a la BD" + vbCrLf + vbCrLf + con.error, "Error al conectar", MessageBoxButtons.OK, MessageBoxIcon.Error)
  8. 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:

vb.net [Show Plain Code]:
  1. txtUsuario.Text = data.SelectedCells(1).Value
  2. txtPass.Text = data.SelectedCells(2).Value
  3. 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.

vb.net [Show Plain Code]:
  1. Dim sqlStr As String ‘ aqui pondremos la consulta
  2. ‘ SQL para editar registros
  3. sqlStr = "UPDATE usuarios SET usuario=’" + txtUsuario.Text + "’, pass=’" + txtPass.Text + "’, nombre=’" + txtNombre.Text + "’ WHERE id_usuario=" + data.SelectedCells(0).Value.ToString()
  4. con.ejecutaSql(sqlStr) ‘ ejecutamos la consulta directamente en la BD
  5. ‘ refrescamos el DataGridView y las cajas de texto
  6. dt = con.ejecutaSql("SELECT * FROM usuarios")
  7. data.DataSource = dt
  8. txtUsuario.Text = ""
  9. txtPass.Text = ""
  10. txtNombre.Text = ""

Por último a nuestro botón salir en el evento btnSalir_Click le agregamos:

vb.net [Show Plain Code]:
  1. con.cerrarConexion()
  2. 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.

vb.net [Show Plain Code]:
  1. Dim sqlStr As String
  2. sqlStr = "INSERT INTO usuarios (usuario, pass, nombre) VALUES (‘" + txtUsuario.Text + "’, ‘" + txtPass.Text + "’, ‘" + txtNombre.Text + "’);"
  3. con.ejecutaSql(sqlStr)
  4. dt = con.ejecutaSql("SELECT * FROM usuarios")
  5. data.DataSource = dt
  6. txtUsuario.Text = ""
  7. txtPass.Text = ""
  8. txtNombre.Text = ""

A nuestro botón editar le ponemos en el evento btnEliminar_Click el siguiente código para eliminar registros.

vb.net [Show Plain Code]:
  1. Dim sqlStr As String
  2. sqlStr = "DELETE FROM usuarios WHERE id_usuario=" + data.SelectedCells(0).Value.ToString()
  3. con.ejecutaSql(sqlStr)
  4. dt = con.ejecutaSql("SELECT * FROM usuarios")
  5. data.DataSource = dt
  6. txtUsuario.Text = ""
  7. txtPass.Text = ""
  8. 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.

102 comentarios en “Conectar a MS Access con VB.Net”

 

Reyes

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

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

Hola quisiera saber como conectar una base de datos mysql con vb.net 2005

Pablo

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

Muchas gracias, fue de gran ayuda!

Nano

No consigo contar los registros de una tabla (SELECT Count…), con tu DLL.

Matias Seguel Miranda

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

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

Me gustaria conocer un ejemplo para realizar la conexion vb 2005 y access con la restriccion de password en la base de datos

Jose

Cual es el link de descarga del proyecto Conectar a MS Access con VB.Net ya que no lo consigo.

Gracias

Jose

Donde puedo conseguir el link paraajar este proyecto, si me lo facilita sera mucho mejor.

Eduardo

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

Saludos desde Barranquilla, Colombia.
Muy util el codigo me sirvió bastante. Ahora usaré esto y lo afinaré con Crystal Report.
:)

Nevardo Jaramillo Sánchez

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

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

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

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

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

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

Hola, hoy descubri su blog. Necesito aprender VB.Net , tendra algun manual ó tutorial que me pueda servir????

Lucia

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

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

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

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

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

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 :D

Cristian

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

me ayudó bastante*

GABRIELA

Hola! necesito saber como puedo conectar una BD con VB, que no sea con el database

Jesus

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

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

A una pregunta para cristian o usted profe donde aplico el codigo que mostro cristian

fernando

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

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

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

Muy bueno me ayudaste :)
Gracias !

P4k0_90n_k

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

crearé un proyecto open source para liberar el código de la librería, esten atentos

P4k0_90n_k

Muchas gracias profe :) :). Creame que si lo hace le estaré muy agradecido. Ojala sea pronto jejeje. Un saludo

Francisco Enrique Domínguez

Hola buenas tardes profesor:). Me pregunto cuando va a liberar el codigo de su libreria de gran utilidad para muchos. Un saludo

pecesama

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

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

Lina escribeme a mleon98@gmail.com yo te puedo ayudar con eso

Miguel Leon

Abraham Rosales

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

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

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

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

tengo un problema con q no conecta la base de datos

Miguel Angel

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

 

Deja un comentario