26 noviembre 2007

Access y Visual Basic 2005

En este mensaje, voy a explicar la manera de usar bases de datos de Access desde Visual Basic 2005. Algo que no tiene que ver con la programación en sí, pero es muy importante de todos modos porque nos puede ahorrar tiempo, es poder ver los datos desde VB 2005. Para explicar esto, hice este pequeño video que muestra como está la movida:





Si quieres, tengo una versión muy nítida hecha en Flash. El archivo SWF lo puedes bajar aquí.

Muy bien, puedo ver los datos. Sin embargo, eso no ayuda de mucho en un programa. En este video voy a explicar la manera de conectarse a una base de datos de Access. Abajo del video voy a poner el código por si no lo alcanzas a ver bien. De la misma manera, si quieres bajar el video en formato SWF, bájalo aquí.



Aquí está el código de lo que se ha hecho hasta ahora:


Ahora hace falta la parte que se encarga de buscar los datos: cambiar de registro. Aquí pongo el video (puedes bajar la versión SWF aquí) y abajo pongo el código completo.





¡Hasta la próxima!

120 comentarios:

Anónimo dijo...

excelente artículo, enhorabuena.
muy buenos los vídeos.

Anónimo dijo...

Excelente aporte Tony, pero los 2 ultimos videos en swf, nose pueden descargar y por youtube la calidad no es muy buena, podrias arreglar los links porfavor?

Gracias!!

Saludos

Tony Valderrama dijo...

Ya estuvo. Arreglé los videos y ahora se deberían poder bajar sin problemas.

¡Saludos!

Anónimo dijo...

Buena profe, m ayudo un montón.

Anónimo dijo...

Sus articulos son excelentes, y han sido de mucha ayuda, pero tengo un inconveniente, tengo que hacer una especie de sistema de inventarios usando access y visual 2005, en clase realizamos un ejercicio parecido pero para ver la tabla usabamos el FlexGrid pero el visual de mi casa no tiene para esa opcion y ya intente agregarlo como referencia y no existe, me comentaron que se podia hacer con DataGridView pero no tengo la mas minima idea de como funciona. Agradeceria mucho un poco de ayuda.

Tony Valderrama dijo...

La verdad es que no he usado el DataGridView de VB 2005. Sé para qué sirve y debería resolver tus problemas, pero no tengo la experiencia en su uso. Lo que pasa es que hace años cuando tuve que programar bases de datos remotos con VB6, la mejor solución que encontré fue por medio del ADO, cosa que todavía manejo, y evité todos los controles que podrían ser más pesados.

Sin embargo, me he encontrado con varios libros interesantes de bases de datos y VB 2005. No he tenido tiempo para ponerme a leerlos, pero se ven muy útiles.

Juan dijo...

Excelente articulo explica de una manera clara lo que todo el proceso, pero tengo una duda, yo deseo hacer la misma aplicacion pero incluyendo sin incluir la base de datos en la carpeta debug, que referencia se debe agregar para realizar este proceso ?, muchas gracias.

Juan dijo...

Perdon, no me explico porque el comentario anterior salio de esa manera, lo que pretendo hacer es desarrollar la misma aplicacion, pero sin incluir la base de datos en la carpeta debug, que referencia debo agregar ? pues he intentado con varias pero no me ha funcionado. Muchas gracias.

Tony Valderrama dijo...

En este momento no tengo el código para probarlo (no estoy en casa), pero me supongo que puedes usar My.Application.Info.DirectoryPath a la hora de definir el Data Source en la función frmBiblioteca_Load().

Yo comenzaría sustituyendo esta línea:
Dim strConexion As String = "Microsoft.Jet.OLEDB.4.0;Data Source=bd1.mdb"

Por algo así:
Dim strConexion As String = "Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\bd1.mdb"

De esta manera usarías la base de datos en la carpeta donde está el ejecutable.

Espero que te sirva. Luego lo intentaré a ver si funciona. Si lo pruebas, avísame si funcionó o no y vemos a ver cómo lo hacemos funcionar.

¡Saludos!

RUNNYx dijo...

Hola, hace poco que estoy en visual 2005, 2 mese mas o menos, estoy haciendo el projecto de final de carrera de electronica y como me gusta esto de la informatica ( hobby, por que he aprendido al antigua metodo de prueva y error) decidi hacer un programa que calcula soportes electricos! hay mi pregunta, se que soy un poco cara dura pero es que se me hecha el tiempo encima y no encuentro nada claro de lo que busco pr internet, resulta es que trabajo con un monton de datos algunos de los cuales los tendria que guardar en la base de datos. la verdad es que me ha sorprendido lo bien que has explicado como trabajar con las base de datos por eso queria pedir haber si me podrias ayudar para poder insertar, modificar, borrar datos de dicha base! antetodo gracias!!!

Tony Valderrama dijo...

Yo hago las cosas "a la antigüita", pero funciona bastante bien.

Yo uso instrucciones SQL para hacer acceso a mis bases de datos por medio del ADO (algo que ya viene incorporado al VB .net, pero se podía agregar al VB6). Tengo en este blog abundantes ejemplos sobre el uso del ADO (fíjate en el tema ADO) y un par de cosas de SQL (principalmente consultas).

En VB2005, puedes ver un ejemplo en el mensaje "Otra nota: Visual Basic 2005, ADO .NET y Access" que escribí el 5/Dic/07 donde estoy insertando datos a una tabla hecha en Access.

Espero que esto te sirva. Si tienes dudas, no dudes (valga la redundancia) en hacer otro comentario.

¡Saludos!

Anónimo dijo...

oye tony tengo un pequeño problema con mi base de datos en access al poner valores nulos
porque no pones tu base de datos en los videos y poder checar cual es mi problema
al conectar tipo string

F-DX dijo...

oye tony tengo un pequeño problema con mi base de datos en access al poner valores nulos
porque no pones tu base de datos en los videos y poder checar cual es mi problema
al conectar tipo string o mandame la base no seas mala onda
felipe_cruz_azul@hotmail.com

Anónimo dijo...

que tal tony
oye creo que te faltaron botones muy importantes como son
nuevo registro
borrar
y modificar
estan en tus planes estos botones????????

Anónimo dijo...

que tal tony
oye creo que te faltaron botones muy importantes como son
nuevo registro
borrar
y modificar
estan en tus planes estos botones????????

Tony Valderrama dijo...

En efecto faltan esos botones, pero la intención de este mensaje no era plantear una aplicación terminada y completa, sino la de ilustrar una parte.

Espero que con lo que hay aquí tengas la idea de hacer tu propia aplicación.

Luego les paso la dirección del código fuente y bases de datos, como lo solicitó F-DX.

¡Saludos!

Gaby dijo...

Hola!
Sinceramente, me parecen excelentes vídeos (incluyendo el fondo musical :) )!!
He comenzado con esto de la programación, no están fácil como creí :S, así que muchas gracias por esos vídeos! Me ha ayudado mucho a comprender mejor las cosas!

Gracias!

Anónimo dijo...

Hermano!!!! Gracias...Excelente

Anónimo dijo...

Hola Tony, muchas gracias por este aporte, los videos se ven muy bien y tus explicaciones son claras y sencillas de seguir. Yo utilizo Visual Basic 2008 y aún siguiendo al pie de la letra tus instrucciones los TextBox me aparecen en blanco al finalizar. ¿Es debido a la versión de VB que utilizo?

Otra cosa, yo quería que los registros de la tabla se mostrasen dependiendo del contenido de un ComboBox, así eligiendo un nombre de un libro de la lista me aparciesen el año, la editorial y los demás datos. ¿Es esto posible o requiere otro tipo de programación?

Gracias por tu atención y un saludo.

Anónimo dijo...

Parece ser que mi problema no es que utilice el Visual Basic 2008, sino que tengo la versión de 64 bits de Windows Vista. Parece ser que necesito compilar en 32 bits para poder utilizar el Microsoft.Jet.OLEB.4.0. He mirado por todas partes pero no se como hacerlo, parece que esta opción no está disponible en VB2008.

Cyberprogramador dijo...

sinceramente tony excelente tu aporte pero si no serai mucha molestia seria cosa que ya pongas los botones nuevo registro,
borrar,y modificar...
dale tío hazlo por la gente que esta empezando en este mundo de la programación que necesita alguna ayudita ..lo mas pronto posible como io

Anónimo dijo...

oye no tienes el archivo del ejercicio es que los videos se ven muy borrosos, te agradeceria

elverin13@hotmail.com

CRISTIAN dijo...

muchas gracias, muy buen aporte, pero como hago para modificar el boton que busque por una letra de un campo nombre o por parte de un nombre por si es nombre compuesto, y tambien el boton guardar, para agregar un registro nuevo.

denuevo muchas gracias

Anónimo dijo...

Hola, me gusto mucho tu tutorial, espero que no sea indiscreción, pero con que programa haces tus tutoriales, con adobe captive?

Anónimo dijo...

Hola Tony quisiera he seguido tus pasos en el tutorial y me aparece el siguente error -2147467259 "No se pudo encontrar el archivo ISAM instalable" en OLEDBEXCEPTION. He estado buscando información en internet y nada me ha solucionado el problema, tienes alguna sugerencia?

Tony Valderrama dijo...

Creo que a unos alumnos les pasó lo mismo, les marcó el mismo error.

No me recuerdo exactamente cómo le hicimos (fue hace ya un rato), pero creo que tiene algo que ver con la instalación de VB 2005.

Y de la pregunta sobre el programa que usé para capturar la pantalla, usé el BBFlashBack.

¡Saludos!

Pepe dijo...

¡Tony un articulo genial!
pero... ¿podrías incluir el código de los botones insertar actualizar y eliminar?
No creo que te suponga mucho esfuerzo y así tendríamos un artículo que engloba todas las instrucciones que se le puede ejecutar a una BD Access desde VB.
Ya me dices.
Saludos!!!

Tony Valderrama dijo...

En cuanto tenga tiempo, me pondré a hacerlo.

¡Saludos!

Leonardo dijo...

Hola tony, el tutorial ha sido excelente, pero tengo un problema con respecto a la visualización de la base de datos.

Estoy tratando de controlar la base de datos Access a traves del visual basic 2005, y necesito filtrar las búsquedas que hago (p.ej. al consultar una referencia o un nombre); y crear una base de datos temporal con los datos filtrados para poder trabajar con ellos.

Es que por más que lo intento siempre me enlista la base de datos completa, y no solo los datos que le estoy pidiendo.

Es decir, le doy a buscar determinada referencia, y me la encuentra, por ejemplo en el puesto 31 de la base de datos de access, y la muestra, pero luego si le doy siguiente (para ver la siguiente coincidencia, ya que dicha referencia se encuentra en varias partes de la base de datos) y lo que hace es seguir viendo la lista (32..33..), ignorando la condición que le dí de que solo me mostrara los que coincidieran con lo que mandé a buscar.

Otra cosa que se me ha presentado es que no realiza las búsquedas cuando en la celda (que contiene el dato que busco) hay varios datos diferentes, (es decir, que el que busco está entre ellos).
Aparece el mensaje de que no encontró coincidencias.

¿Podrías ayudarme?

Me gustaría enviarte el proyecto que estoy llevando, para que pudieras checkar que está pasando, ya que soy nuevo en esto y me siento algo perdido

Gracias

Tony Valderrama dijo...

Las instrucciones SELECT generan tablas temporales en la memoria (si tienes dudas sobre el lenguaje SQL y el SELECT, en este blog tengo muchos ejemplos bajo el tema SQL).

En este ejemplo, no estoy usando SQL, pero te sugiero que veas los mensajes "Visual Basic 2005 y SQL Server Express 2005 de nuez..." (3/Dic/2007) y "Otra nota: Visual Basic 2005, ADO .NET y Access" (5/Dic/2007) donde uso SQL. Luego tengo muchos ejemplos en Visual basic 6 donde hago este tipo de consultas. Creo que con esto se puede resolver tu problema.

¡Saludos!

blur dijo...

gracias por la ayuda men pero un favor grande podrias poner el codigo para borrar y agregar porfavor es urgente si no lo fuera seguiria averiguando pero no hay mucho tiempo disponible ^^ gracias

Murray182 dijo...

Yo tambien necesitaria el codigo de agregar, borrar y modificar.

Saludos

Murray182 dijo...

wally donde estas??? =D

Amanda dijo...

Hola una pregunta estoy iniciando en Vb 2005 express, y al probar el código para ver el primer registro me envía un mensaje: "No se ha especificado un proveedor OLE DB en ConnectionString. Un ejemplo sería, 'Provider=SQLOLEDB;'."

me podrías ayudar para ver que sucede, bye....

Tony Valderrama dijo...

El problema es que este código es para conectarse a una base de datos de Access, y tiene que cambiar para usar SQL Server.

Te recomiendo que leas el artículo "Visual Basic 2005 y SQL Server Express 2005 de nuez... " de mi blog (escrito el 3/Dic/07).

Espero que el video de ese post resulva el problema.

¡Saludos!

Amanda dijo...

Hola Profesor:

Bueno es para solicitar su ayuda, tienes alguna idea de como crear un registro nuevo y modificar. Ok no te pido el código simplemente que me orientes donde encontrar algo para desarrollar. please es para mi tarea y no encuentro nada.

Visual Basic 2005 express. en las versiones anteriores se como hacerlo pero en ésta no.

Tony Valderrama dijo...

Amanda:

Sugiero que veas el tema de ADO en mi blog. Casi todos los ejemplos están hechos con Visual Basic 6.0 y Access, pero si tienes el ConnectionString de SQL Server es casi lo mismo (y VB 2005 tiene el ADO incluido, as{i que es hasta m{as sencillo integrarlo).

Espero que estos ejemplos te ayuden. ¡Saludos!

Unknown dijo...

Es un articulo excelente, me ayudo bastante en un proyecto que estoy realizando, una duda que tengo, es como crear un "login form" tengo creada una BD en access, solo contemplo usuario y contraseña... podrias ayudarme?

Tony Valderrama dijo...

Lo harías de manera muy similar a la función de btnBusca_Click, solo que en lugar de pedir el ISBN, usarías el número o nombre de usuario que me supongo que tienes en una caja de texto.

Cuando lo encuentre, que compare la contraseña que tecleó en otra caja de texto con la que tienes almacenada en la tabla. Si es igual, que pase al sistema. Si no es igual o no encuentra al usuario, que mande un mensaje y se quede en esa ventana.

Si quisieras podrías hasta tener una variable que cuente el número de intentos fallidos yu cuando llegue a 3, que finalice el programa o algo por el estilo.

¡Saludos!

cocke dijo...

Hola Tony.
Tengo la misma duda.
Estaba haciendo esta especie de form "login" de otra manera, pero no funciono, no funciono y no funciono.
Luego lei el post y segui tu consejo, he aqui el codigo

'''''''''''''''''''''''''''''''''''''
Private Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click

Dim strBuscaNombre As String
Dim strBuscaPassword As String
Dim Encontrado As Boolean = False
Dim i As Integer

txtNombre.Text = strBuscaNombre
txtPassword.Text = strBuscaPassword
For i = 0 To dt.Rows.Count - 1
If CStr(((dt.Rows(i)("nombre")) = strBuscaNombre) & (dt.Rows(i)("password")) = strBuscaPassword)) Then
Encontrado = True
intFila = i
METODOQUEHACEALGO()
End If
Next
If Not Encontrado Then
MsgBox("Nombre y/o password invalidos. Intente nuevamente")
End If
End Sub

'''''''''''''''''''''''''''''''''''

Pero me arroja un error en la parte del If en la parte del Then; Error 1 End of statement expected.

Espero que me puedas ayudar, ya que me he cabeceado bastante y no puedo todavia crear una pantalla login.
Con respecto a la BDAccess, tiene una tabla que se llama usuario y dos campos: nombre y password.

Gracias!!!

Saludos!

Unknown dijo...

muchas gracias por tu ayuda tony, ya tengo una idea um poco mas clara de realizar un login. saludos a todos

cocke dijo...

Carlos ya tengo listo el login, pero otras dudas =)
Sólo hay que modificar un poco el código de tony y VOILA!!!
La DUDA que tengo ahora es COMO SELECCIONAR UNA FILA X DE UN DATAGRID y que esto abra un FORM donde se carguen los datos. Si alguién me puede hechar una mano sería excelente.

Saludos!

Tony Valderrama dijo...

No he tenido mucho tiempo para hacer el programa, pero yo usaría la instrucción SELECT de SQL para hacer una búsqueda en la tabla y obtener solo el regsitro que quiero. Esto lo haría con ADO.

En mi blog hay muchos ejemplos de esto, pero usando Visual Basic 6. El .net (y posteriores) ya tienen el ADO integrado, por lo que ha de ser más sencillo. De esa forma te evitas un Datagrid.

Si algún día tengo un buen rato libre, me pondré a hacerlo y les platicaré como me fue.

¡Saludos!

cocke dijo...

Hola!!

He seguido con el programa de login, pero quiero eliminar un if y no dejar 2. Para ello necesito un if con 2 condiciones y segun yo el codigo esta bien 100% pero me arroja el siguiente error:

Conversion from string "" to type 'Boolean' is not valid.

El codigo es el siguiente:

For i = 0 To dt.Rows.Count - 1
If CStr(dt.Rows(i)("nombre")) = strBuscaNombre & CStr(dt.Rows(i)("password")) = strBuscaPassword Then
Encontrado1 = True
intFila = i
Label1.Text = "OK"
Form2.Show()
Me.Visible = False
End If
Next
If Not Encontrado1 Then
Label1.Text = "NO"
End If

Agradeceria ayuda, debe ser algo pequeño pero definitivamente no me funciona.

Gracias

Saludos!

Tony Valderrama dijo...

Cambia el signo "&" de tu If por "And", a ver si así funciona.

¡Saludos!

Tony Valderrama dijo...

Cambia el signo "&" de tu If por "And", a ver si así funciona.

¡Saludos!

Anónimo dijo...

Exelente articulo, yo estoy asiendo algo similar par el control de equipo pero no me guarda los registro el codigo que estoy utilizando es el siguiente
If TxtIdequipo.Text = "" Then
error1.SetError(TxtIdequipo, "Ingrese Id de Equipo")
ElseIf TxtEquipo.Text = "" Then
error1.Clear()
error2.SetError(TxtEquipo, "Ingrese Nombre de Equipo")
ElseIf CmboMarca.Text = "" Then
error2.Clear()
error3.SetError(CmboMarca, "Ingrese Marca de Equipo")
ElseIf TxtModelo.Text = "" Then
error3.Clear()
error4.SetError(TxtModelo, "Ingrese Modelo")
ElseIf TxtSerie.Text = "" Then
error4.Clear()
error5.SetError(TxtSerie, "Ingrese Serie")
ElseIf TxtObserva.Text = "" Then
error5.Clear()
error6.SetError(TxtObserva, "Ingrese alguna observacion")
Else
error1.Clear()
error2.Clear()
error3.Clear()
error4.Clear()
error5.Clear()
error6.Clear()

Try
VRegistro = VTabla.NewRow
VRegistro.Item(0) = TxtIdequipo.Text
VRegistro.Item(1) = TxtEquipo.Text
VRegistro.Item(2) = CmboMarca.Text
VRegistro.Item(3) = TxtModelo.Text
VRegistro.Item(4) = TxtSerie.Text
VRegistro.Item(5) = TxtObserva.Text
Crenglon.Add(VRegistro)
Vequi.Update(VTabla)

VFila = VTabla.Rows.Count

btnBuscar.Enabled = True
btnEliminar.Enabled = True
btnCancelar.Enabled = False
btnNuevo.Enabled = True
btnGuardarN.Enabled = False
btnModificar.Enabled = True
btnGuardarM.Enabled = False

ASIGNACION()

BLOQUEA_CAJAS()

Catch ex As Exception

MessageBox.Show("Ya existe un equipo registrado con este Id")
VRegistro.Delete()

End Try
end sub
me podria ayudar para ver donde esta mi error, gracias

Anónimo dijo...

hey amigo e seguido al pie de la letra tus videos y ahora la duda como creo un libro nuevo, modificar el contenido y eliminarlo esto si pudieras postera con otro video para calmar ansias bueno bay sigue con los tutos
##myztyko@hotmail.com##

CUARSA dijo...

HOLA me podrias ayudar sucede que tengo una aplicacion donde logre llenar los controles entre los cuales tengo: combobox y es este precisamente el que puedo llenar con los datos de mis tablas en access pero LO Que necesito es llenar la base de datos con lo que escojo en el control la cosa es con el combobox porfa ayudaaaaaaaa .. gracias bendiciones

RedZone dijo...

que tal amigo necesito ayuda urgente y tal vez me puedas ayudar, Estoy haciendo un proyecto en VB 2005, con una ventana que simula una factura pero no se como mandar a imprimirla de hecho no tengo la mas minima idea. AYUDAAAA!!! =D

Tony Valderrama dijo...

Te sugiero que veas cómo funciona el objeto Printer. Es mucho código, pero puedes hacer casi lo que quieras.

¡Saludos!

Anónimo dijo...

Hola muy buen tutorial Tony pero tengo una pregunta mira estoy haciendo una aplicaciond e windows y soy nuevo en esto como puedo hacer que al momento de que introduscan algo en la text box pueda mandarse a imprimir en la tabla de acces realmente me alludarias mucho con eso gracias

Tony Valderrama dijo...

Te recomiendo que veas estos dos posts (están en mi blog):

http://alturl.com/eru3

y

http://alturl.com/p4jt

Uno hace algo similar con SQL Server y el otro te muestra un par de modificaciones para que funcione con Visual Basic 2005.

¡Saludos!

Unknown dijo...

que Dios te bendiga tony me ha sido de mucha utilidad tu tuto, podrias ser tan magnanimo de adicionar el codigo para modificar , eliminar o agregar un nuevo registro , vamos se que estas ocupado, pero no seas malito

Juan Jose Gutierrez Aldana dijo...

Hola tony Mira tengo un problemilla :D haber yo inserto los datos en el acces y todo bien ahora necesito es lograr que en el visual yo pueda abrir informes que usa acces.. sera que puedo hacer eso?es xq tengo que insertar un formulario en una bd pero tengo que imprimrle tambien (es decir imprimir en un formato lo que e insertado) y otro boton que imprima todos los datos almacenados en la BD, Como hago eso??? Gracias de antemano

Tony Valderrama dijo...

¿Por qué no revisas la función PrintForm? Aquí está una página en español que lo explica bastante bien:

http://www.recursosvisualbasic.com.ar/htm/vb-net/45-printform-component.htm

Ojalá te sea útil

Unknown dijo...

Excelente articulo en VDD !! pero estoy de acuerdo con varios comentarios, deberias acompletarlo programando los botones de guardar insertar y eliminar.

aun asi eres muuuuyyyy bueno :) lo explicas milveces mejor que mi profesor de la escuela.

por cierto los botones de guardar los programo de la misma manera que lo hiciste con el de consultar?, en vez de "select * from MiTabla" pondria por decir inser into o update set ?? help!!

necesito ayuda con eso :S

Anónimo dijo...

buenisimo profe pero tengop un proble my archivo no carga los datos que nesecito podria ayudarme my prollect es sobre una tienda y si pongo buscar no lo ejecuta y ya esta precargado el codigo

rene dijo...

buenisimo profe pero tengo un proble my archivo no carga los datos que nesecito, podria ayudarme my prollect es sobre una tienda y si pongo buscar no lo ejecuta y ya esta precargado el codigo ademas de los comandos de nuevo editar etc. el unico q me carga es el de eliminar: respuesta a rene_ska@live.com.mx poarfa es q no le ayo muy bien toda bia

rene dijo...

grasias

Anónimo dijo...

Exelente tutorial me hace de gran ayuda.Tambien quisiera saber como se conecta un listview con una base de datos acces,se le agradece la colaboracion

Anónimo dijo...

Hola TONY felicidades por tu blog es muy interesante y ayudas a muchas personas, quisiera que me ayudaras tengo que presentar un programa de almacenamiento de libros en word y pdf usando access, algo asi como una biblioteca y es complicado par ami, si te anias a ayudarme te estaria muy agradecido necesito el codigo fuente para visaul basic.net favor responde a mi correo sendero200@hotmail.com

y suerte con tu blog

Unknown dijo...

Buenas estaba la búsqueda de este vídeo por que lo necesito para un proyecto... pero no puedo conseguir vb2005 entonces puse el vb2008... la cosa es q tengo todo el código mi base de datos y todo y no me tira ningún error de nada pero no me muestra ningún dato... y en la búsqueda no encuentra datos que si están... que podrá ser?? Gracias

Tony Valderrama dijo...

¿Solo no te devuelve valores? o ¿te marca error al intentar conectarse? ¿Usas Windows de 64 bits?

Si es bronca de Win 64 bits, yo tuve un problema y explico como solucionarlo aquí:

http://tony-valderrama.blogspot.com/2009/11/problemas-oledb-con-windows-64-bits.html

Es un poco dificil ayudarte sin ver código y base de datos, pero esto es lo primero que se me ocurre.

Espero que sea de utilidad...

Unknown dijo...

Muchas gracias el problema era que estaba trabajando en 64bits... ya lo solucione gracias

Henry Díaz dijo...

Muy bueno Tony, sigue adelante, que Dios te bendiga en este nuevo año.

Tony Valderrama dijo...

Gracias, Henry. También espero que este año sea muy bendecido para todos.

Un abrazo...

Anónimo dijo...

hola tony quisiera saber poruqe en el visual basic 2005 que tengo el el cuadro de herramientas no aprarece los objetos oledbconnection,oledbcommand,sqldataadpter,,sqlconnection,etc quisiera que me ayudaes por favor que puedo hacer ya puse SYSTEM.DATA.SQLCLIENT pero nada ...

yorks dijo...

profe cual es su correo msn..........

Unknown dijo...

Y la coneccion se cierra automaticamente o se cierra manualmente? si es la segunda opcion como es el codigo?
De antemano gracias...

Paloma dijo...

Muxisimas grax!! me ayudast muxio en la realizacion de una aplicacion q estaba creando! excelente articulo!

Daro dijo...

hola buen dia atravez de este ejercicio como se podria agregar o borrar datos.. es edecir como quedaria el codigo para un boton agregar registro y otro para borrar registro???? espero tu respuesta gracias de antemano

Ruben Castillo dijo...

Hola, tengo que realizar un Login usando una base de datos en Acces2007, ya logre integrar mi base al programa, pero ahora como comparo los datos que introdusco con los que tiene la base de datos.

Agradeceria una buena expliacación.

gracias

JORGE ARANA dijo...

tengo una base de datos en access de una escuela y quiero que se actualice automaticamente el campo semestre si ahorita estan en segundo semestre dentro de seis meses se actualice automaticamente a tercer semestre

Anónimo dijo...

TOOONNNNYYY ayudame.... necesito saber como cierro esta conexion.. por favor.... no encuentro como es... :(

Anónimo dijo...

TONY AYUDAME POR FAVOR, NECESITO COMO CERRAR ESTA CONEXION... :'(

Tony Valderrama dijo...

No entiendo... si es cerrar una conexión, ¿no está el método Close? ¿Qué quieres hacer?

Anónimo dijo...

Hola que tal, antes que nada quiero agradecer todos los aportes que has hecho con fin de apoyo a los que busacmos alguna solucion.

Viendo los videos de "Access y Visual Basic 2005" ya hice el ejemplo y funciona a la perfección, pero como soy un novato de primera no sé cómo agregar o eliminar registros de la base de datos...

Por favor, ¿Podrías ayudarme con el código o algúna explicación?

...y abusando de tu amabilidad. En caso de que me apoyes con el código si puedes enfocar el ejemplo hacia estos videos "Access y Visual Basic 2005" te vas a ir al cielo con todo y zapatos.


Gracias y saludos.

Víctor Bernal.

Tony Valderrama dijo...

Victor:

Te recomiendo que veas estos otros posts de mi blog, a lo mejor te pueden ser de utilidad:

http://tony-valderrama.blogspot.com/2007/12/entrndole-al-sql-server-express-desde.html

http://tony-valderrama.blogspot.com/2007/12/visual-basic-2005-y-sql-server-express.html

y

http://tony-valderrama.blogspot.com/2007/12/otra-nota-visual-basic-2005-ado-net-y.html

¡Ojalá te sirvan!

Anónimo dijo...

Tony:

Gracias, voy a capturar el código. Un amigo me recomendó visitar tu sitio, me ha resultado de mucha y la información expuesta es muy basta.


Gracias y saludos!

Víctor Bernal

Anónimo dijo...

Tony, soy Víctor de nuevo molestando:
(Te agradezco de antemano la atención prestada)

Ya hice el ejemplo de guardar un registro nuevo en una base de datos de access, y funciona a la perfección. Ahora lo que no sé es cómo hacer para que yo llene el formulario y al presionar el botón 'Guardar' pues guarde el registro...

Intenté pero no se me ocurre nada, traté de que en la sentencia de SQL se usaran variables:

"INSERT INTO Empleados (Nombre,Apellido) VALUES
(& variable, & variable)"

Nadamas necesito que por favor me orientes de cómo hacerlo.


Gracias y saludos.

Víctor Bernal

Tony Valderrama dijo...

Victor:

Recuerda que estás construyendo una cadena con la instrucción SQL, asi que yo escribiría tu texto así:

"INSERT INTO Empleados (Nombre,Apellido) VALUES
('" & variable & "','" & variable & "')"

Los apóstrofes (') van porque me supongo que Nombre y Apellido están definidos como texto en la base de datos y los tiene que llevar.

Si depuras el programa paso a paso y te fijas lo que tiene la propiedad CommandText cuando está a punto de ejecutarse, vas a ver comop quedó la instrucción.

¡Saludos!

Anónimo dijo...

Sí, muchas gracias Tony, ya pude, y efectivamente me faltaban los apostrofes, también me faltaba el tipo ".text" de los Textbox y el segundo ampersand.

Ahora lo que me falta es cómo hacer para eliminar un registro. Supongo que esta mas complicado por que hay que devolverle el valor NULL al registro (supongo yo).

¿Por favor podrías guiarme cómo hacer el código?

Gracias por toda la ayuda que me brindas, eres un maestro (en el amplio sentido de la palabra, no enfocado hacia profesor).


Gracias nuevamente y saludos


Víctor Bernal.
(perdon por dar tanta lata jejeje)

Tony Valderrama dijo...

Lo que necesitas es la instrucción SQL DELETE. Se escribiría algo así:

DELETE FROM tabla WHERE condición

por ejemplo

DELETE FROM Empleados WHERE Nombre='Tony'

Claro, cambiando lo necesario.

¡Saludos!

Anónimo dijo...

Muchas gracias Tony, he terminado mi práctica de (Access y VS 2005) y gracias a ti he recopilado la información necesaria para poder hacer casi cualquier cosa con Access y VS 2005. Sólo me queda darle los ultimos retoques al código, como mensajes y alguna otra funcion o formularios complementarios. En sí debo hacer un sistema experto para la escuela (Proyecto Final) y en access no sé si se puedan guardar muchos textos, lo que pienso hacer es guardar el texto por párrafos en registros y simular la creación de nuevos textos intercalando los párrafos según sea la búsqueda en el SE. Me voy a volver loco con ese proyecto. Ahora me falta agregar imágenes, pero ya no te voy a dar lata, debes tener 'mil' cosas por hacer.


Gracias y saludos.


Víctor Bernal.
¡GRACIAS POR TU AYUDA! :)

Anónimo dijo...

Muchas gracias Tony, he terminado mi práctica de (Access y VS 2005) y gracias a ti he recopilado la información necesaria para poder hacer casi cualquier cosa con Access y VS 2005. Sólo me queda darle los ultimos retoques al código, como mensajes y alguna otra funcion o formularios complementarios. En sí debo hacer un sistema experto para la escuela (Proyecto Final) y en access no sé si se puedan guardar muchos textos, lo que pienso hacer es guardar el texto por párrafos en registros y simular la creación de nuevos textos intercalando los párrafos según sea la búsqueda en el SE. Me voy a volver loco con ese proyecto. Ahora me falta agregar imágenes, pero ya no te voy a dar lata, debes tener 'mil' cosas por hacer.


Gracias y saludos.


Víctor Bernal.
¡GRACIAS POR TU AYUDA! :)

Tony Valderrama dijo...

Note preocupes, Victor. Si puedo ayudar, lo haré.

Que bueno que todo funcionó bien y aprendiste algunas cosas nuevas.

¡Saludos!

Víctor Bernal dijo...

Tony, me da pena asistir a tu ayuda nuevamente jeje, necesito actualizar la base de datos despues de eliminar o agregar un registro pero sin salir de la ejecución. También necesito modificar un registro existente. :/


Agrazedco de antemano tu ayuda.
De todos modos yo también estoy buscando soluciones, no creas que nadamas escribo para esperar la respuesta :s.

Gracias y saludos.

Víctor Bernal.

Tony Valderrama dijo...

Para eso usas la instrucción UPDATE de SQL. La sintaxis es algo asi:

UPDATE tabla SET campo=nuevo valor WHERE condición

por ejemplo

UPDATE Empleados SET sueldo=sueldo*1.15 WHERE Puesto='Gerente'

Esto actualizaría todos los registros cuyo puesto sea Gerente aumentándole el 15% a su salario.

¡Saludos!

Víctor Bernal dijo...

Hola Tony, buenos días,

Resulta que ya he terminado los botones de:
-Modificar
-Agregar nuevo
-Eliminar
A parte de los 4 que introduces en el proyectito, ahora necesito que con cada registro se muestre una imagen asi como un catálogo, ya busqué y no encontré mucho. No sé si tengas alguna referencia que me puedas dar o algo. De antemano agradezco tu respuesta.


Saludos.

Víctor Bernal

Tony Valderrama dijo...

Y que tal si guardas un campo de tipo texto que guarde la ruta donde está el archivo de la imagen que deseas mostrar. Entonces al leer el registro, lees la dirección y lo cargas en un PictureBox o algo similar.

Víctor Bernal dijo...

Tony:

Gracias, jeje. La verdad es que me hace falta mucha práctica y mañas, aún no hago el código, pero ya lo tengo y es masomenos así:

Private Sub btnVerImg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerImg.Click

pctImg.Image = New System.Drawing.Bitmap(txtRuta.Text)

End Sub


Gracias! ya nadamas me falta poner este código en el inicio del formulario y en la ActualizaTexto() jejej.


Te aviso, saludos y gracias nuevamente.

Víctor Bernal

Anónimo dijo...

HOLA, ESTOY HACIENDO UNA CONECCION CON ACCES 2007 Y VS 2005 Y ME APARESE EL SIGUIENTE ERROR. " NO SE ENCUENTRA EL ARCHIVO ISAM INSTALABLE". AYUDA

Tony Valderrama dijo...

Algo tienes mal instalado en tu Visual Basic 2005...

Aqui ha y un par de ligas que a lo mejor te ayudan:

http://support.microsoft.com/default.aspx?scid=kb;en-us;90111

http://www.mixsoftware.com/product/db/intro1.htm

¡Saludos!

Alex dijo...

He obrado con una infinidad files. Pero he casualmente chocado con - ayuda para abrir un archivo bdd access. El programa asombra gran cantidad las possibilidades. Por ejemplo el resurso ha restituido a mis .accdb ficheros corrompidos. Además el instrumento puede resolver este problema eficazmente y recuperar files.

Tony Valderrama dijo...

Alex: mil gracias por tu aportación. En efecto el programa que mencionas se ve muy interesante.

Gracias

Unknown dijo...

muy buen aporte gracias lo necesitaba :)

Anónimo dijo...

hola que tal, he realizado ejemplos con el codigo de buscar y no me lo genera, me marca error en el datatable en la linea de
reader.fill(dt) me dice que
El valor no puede ser nulo.
Nombre del parámetro: dataTable
que causa esto no entiendo gracias de antemano

Tony Valderrama dijo...

Estimado Anónimo:

No sé exactamente lo que suceda, pero me parece que en tu tabla tienes algún campo con valor nulo o la búsqueda te devuelve una tabla vacía.

Es medio difícil saber sin la base de datos y el código, pero me suena que podría ser algo así.

Anónimo dijo...

Hola Tony tengo un problema al ejecutar el projecto,lo que sucede es que no me carga ningun text, ya he echo todo al pie de la letra y a la hora de llegar a dataAdapter.Fill(dt)no sigue con dataAdapter.dispose() ni nada lo unico que me queda es terminar la ejecucion,tengo window 7 x84 pero no se si ese sea el problema?
Recien estoy aprendiendo sobre el visual studio 2005 ya que anteriormente usaba vb6 con la ayuda de ADO pero no se si haya eso en este visual.
Lo que quiero hacer es uno parecido al de tu tutorial pero solo cargando nombre y contraseña que se encuentran en el archivo de access pero como repito no termina de ejecutarse.
Y si pongo txt1.Text = CStr(dt.Rows(intFila)("ID"))
txt2.Text = CStr(dt.Rows(intFila)("CONTRASEÑA")) en un boton me sale que no hay ninguna fila en la posicion 0.
Agradesco tu comprencion y espero que me ayudes lo antes posible.

Tony Valderrama dijo...

¿Tienes algo dado de alta en la tabla? Porque si está vacía, es normal que te marque error.

Anónimo dijo...

Disculpa no haber sido especifico pero si hay datos en el access que puse en debug de donde esta el projecto pero la pregunta seria si esta cargando otro access y si fuera asi en todos los access del mismo nombre tengo datos colocados asi que no seria ese el error.
Eres una gran persona tony al ayudar con tu tutorial pero repito no puedo lograr que aparesca nada en los text.
agradesco nuevanente tu conprencion y espero me ayudes con este problema.

jose dijo...

Hey Tony buen aqui viendo tus publicaciones que me sirve mucho para lo que estoy haciendo y estoy parado en algo que por favor me gustaria que me ayudaras o me dieras por lo menos una idea como hacerlo, te cuento lo siguiente....
Tengo un formulario con varios textbox, uno de ellos se llama tbRegistro y esta conectado a una base de datos en access...
Lo que quiero es que cuando abra para generar un nuevo registro de usuario en tbRegistro me salga el numero de registro que corresponde, he leido por ahi que tengo que seleccionar la base de dato el id que quiero y seleccionar el resgistro y sumarle uno para luego mostrarlo en textRegistro... Pero no entiendo nada me gustaria que me dieras una idea de como hacerlo por favor ya que de tus videos e imagines he apredido mucho de visual...
Att Jose... Espero de tu ayuda!!!

Tony Valderrama dijo...

Perdón, José, pero ahorita tengo un montón de trabajo. Te ayudo sino te urge... es que estoy escribiendo tesis...

Alexis JAN dijo...

Tengo probleas al conectar la bd, tengo ke escribir todo el directorio no me fuka el path Dim strConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= D:\AF\Documentos usuario\Visual Studio 2010\Projects\carpeta\cert\bin\Debug\certis.mdb"

Anónimo dijo...

Hola Tony saludos antes de todo mira hice un programita que obtiene datos de las llamadas de un conmutador en VB6 y los graba en access todo bien pero tambien hice otro que permite visualizar los datos y realizar cambios del nombre de quien hizo la llamada, el destino y quien autoriza aki utilice visual studio 2005 la conexion la hice asi Public cnSalt As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=Z:\Salt.mdb;")
pero tengo un detalle que se alenta demasiado, podrias orientarme a que se debe, investigue y segun es por el objeto de conexion Oledb si es asi cual me recomiendas en usar Gracias

Tony Valderrama dijo...

Estimado Anónimo:

Algunos objetos de base de datos dan broncas de lentitud en ambientes de red. Me metí con broncas hace años con Visual Basic 6 donde hice una consulta usando el DataControl a una tabla que estaba en un servidor en Michoacán desde mi oficina en Tlaquepaque y el resultado fue desastroso. De allí que me metí a escribir más código pero con algo eficiente.

Un acceso más eficiente lo puedes lograr usando objetos ADO (en el caso de Access no queda más que OleDb...). Fíjate en la presentación que está en la liga que escribo abajo. Solo está la parte de consulta, pero creo que con eso puedes ir agarrando la onda.

¡Saludos!

Liga:
http://tony-valderrama.blogspot.com/2010/10/visual-basic-net-adonet-y-access.html

Anónimo dijo...

Gracias mi estimado Tony por tu atención estoy checando el link

Anónimo dijo...

Exelente aporte amigo, me es de gran ayuda pero me preguntaba si no tienes conocimiento de algun link en donde se muestre a cerca de la modificacion de los registros en una base de datos ( borrar, insertar)...
Te agradeceria

Anónimo dijo...

excelente artículo...

ojala me puedas ayudar estoy realizando una aplicacion, la cual la bd se encuentra en un servidor, de las siguiente forma Dim strConexion As String = "Provider =Microsoft.Jet.OLEDB.4.0;" & "Data Source= \\SERVIDOR\Public\bases de dat\COMPRAS.MDB;" & "user=Héctor password=Héctor"... corri los codigos que tu utilizaste en estos videos... y me mando el siguiente error "No se pudo encontrar el archivo ISAM instalable"


Cual podria ser la solucion... por fis ayudame!!

Anónimo dijo...

el error me lo marca en lalinea donde se encuentra el codigo




dataAdapter.Fill(dt)

porfis...espero qme puedas ayudar

Tony Valderrama dijo...

Estimado Anónimo:

No sé porque te está marcando error, pero lo primero que haría sería asegurar que estás usando una base de datos de Access 2003... ese Connectionstring solo sirve para este tipo de bases de datos. Si estás usando un archivo de Access 2007, hay que cambiar de ConnectionString. Un sitio que se especializa en connectionstrings es esta:
www.connectionstrings.com

Si ese no es el problema, yo quitaría, a forma de prueba, la parte de usuario y contraseña. Yo nunca los uso con Access y no sé si por allí estaría el problema.

Es normal que el error te lo marque en la lína del dataAdapter.Fill(dt) porque antes no verifica la sintaxis de instrucciones SQL ni de conexión.

Espero que esto sea de ayuda. Si quieres ver otra forma de accesar datos, te invito a leer este otro post que escribí hace poco:

http://tony-valderrama.blogspot.com/2010/10/visual-basic-net-adonet-y-access.html

¡Saludos!

Anónimo dijo...

aaaaaaaaaaaaaaaaaawwwww !!!
NESECITO AYUDA...
como elimino y guardo un registro de acces en visual 2008 ??? ah ? ah? ah?? juum! qiierooo saber ... :( Pliiisssss !!! <3

Anónimo dijo...

Excelente tutorial Tony.
Tienes algun video para botones de agregar y eliminar registros? te lo agradecería mucho o publicar aquí el código.

Anónimo dijo...

HOla Tony, Ecelente tutorial
a mi me surge un prblema siguendo el codigo al pie de la letra al ejecutar el prgrama no me carga ningun dato en los textbox, mis tablas si tienen registros y no me marca ningun error, Tengo Windows Seven 7 64bits, ya cambie el compilador para x86 y aun asi no me carga los datos en los textbos alguna idea de que este pasando?

Tony Valderrama dijo...

No sabría exactamente como ayudarte. A lo mejor tiene algo que ver con tu instalación de Visual Basic.

Yo lo intentaría hacer en otra computadora a ver si el problema persiste. ¿Ya buscaste con Google una respuesta posible? Seguramente alguien ha tenido el mismo error.

Anónimo dijo...

Buenas Amigo Baje los videos de la bibioteca e hice lo que tu dices. pero me da un error al ejecutarlo que no encuentra la Bd en la carpeta debug si puedes hacer el favor de decirme en que me eqivoque espero pronta respuesta si puedes escribirme al carlospernalete@hotmail.com

Erick Utrera dijo...

Excelente Tony, me ha servido de mucho tu informacion :P buen dia

Anónimo dijo...

muy bueno tu blog

Anónimo dijo...

Ok, esta muy bien, pero me gustaria saber como capturo nuevos datos en los cuadros de texto y como los almaceno despues en la base de datos a la que estoy conectado, me sria de gran utilidad que me pudieran decir como lo tendria que hacer.
Escribirme a edu_luna@hotmail.com

El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...