Ado.net y acces

Tengo una base de datos creada con access en mi ordenador, soy nuevo en visual basic.net, cuando intento conectarme a mi base de datos, uso el explorador de servidores, conectarse a una base de datos, propiedades de vínculos de datos, proveedor microsoft jet 4.0 ole db provider, conexión selecciono mi base de datos, pruebo la conexión, la prueba de conexión fue satisfactoria aceptar, hasta aquí todo esta bien, cuando intento cerrar las propiedades de vinculo de datos pulsando aceptar me sale el siguiente error : unable to connect to database the connection failed. Check your usename and password and try again. Y por lo tanto no logro conectarme a mi base de datos, no tengo username ni password en mi base de datos, no tengo servidor solo es mi ordenador, otra cosa por default cuando intento conectarme alas propiedades de vínculos de datos se va directo a conexiones pidiéndome el nombre del servidor y de una base de datos sql server, regreso a proveedores y esta seleccionado ole db para sql server, selecciono mi proveedor para access hago todo lo anterior que ya le explique y me saca el error que ya mencione, que debo estar haciendo mal que no logro conectarme favor de ayudarme . Gracias
Mi sistema operativo es xp con sp2 . Ya desinstale e instale nuevamente visual Basic.net y siempre me marca el mismo error

3 Respuestas

Respuesta
1
Yo en tu lugar, no haría las conexiones mediante los "asistentes" y las haría directamente a través de los objetos de acceso a datos y mediante código. Yo las pruebas que he hecho de esta manera me han ido bien.
Pues no puedo darte código explicito porque no dispongo de .net en estos momentos pero puedes encontrar diversos ejemplos en www.microsoft.com, dentro de esto busca "Universidad .net" veras que salen muchos link. En alguno de ellos encontraras un tutorial sobre ADo.net que es lo que necesitas.
Respuesta
1
Yo no programo en VB.NET pero puedo deducir que el problema que tienes esta muy relacionado con la forma en que intentas acceder a los datos.
Intenta la antigua conexión a la base de datos por código, o sea creando una variable Objeto para la base de datos y otra para un Recordset.
También puedes intentar guardando la base de datos con una version anterior de access y siempre verificando que no este protegida.
Prueba con eso y si sigues con problemas me dices por me voy a poner a ver detallamente el problema.
Nuevamente gracias por tu ayuda, pero hago todos loa pasos que me describes, hago la prueba de conexión me dice que la conexión fue exitosa, ¿pero cuándo cierro las propiedades para ya terminar me vuelve a salir el mismo error?: unable to connect to database the connection failed. check your usename and password and try again. Y por lo tanto no logro conectarme a mi base de dato,
Como seria la conexión sin usar los asistentes, podría ser usando puro código, me podrías mostrar como seria con código te lo agradecería mucho espero tu respuesta. También intente usando la base de datos de access neptuno, pensando que la mía este mal diseñada pero siempre hace el mismo error
Seguramente es mejor por puro código, así te aseguras compatibilidad.
Podes usar las siguientes sentencias:
Dim Base As Database
Dim RS As Recordset
'luego configuramos los objetos
Set Base = OpenDatabase(OrigenDatos)
'donde OrigenDatos es una
'varible Stringque contiene
'la ruta de tu base de datos
Set RS = Base.OpenRecordset("Tabla1")
'despues podes usar el RS
'para editar, añadir o borrar
'Registros
'Añadir
RS.AddNew
RS(1)="Algo"
RS(2)="Otra cosa"
RS.Update
'este secillo ejemplo crea
'un registro nuevo
'y en la columna 1 coloca
'la cadena "Algo" y en la
'Columna 2 la cadena "Otra
'Cosa"
Lo mismo sería para editar un registro, ahora te paso otro ejemplo en que se busca en base de datos y se elimina un registro con determinado criterio.
Dim dbBuscar As Database
Dim rsBuscar As Recordset
Set dbBuscar = OpenDatabase(OrigenDatos)
Set rsBuscar = dbBuscar.OpenRecordset("SELECT * FROM [Personas] WHERE [Nombre] like 'Daniel'")
rsBuscar.Delete
'el ejemplo va a buscar en
'la tabla "Personas" en el
'Campo "Nombre" al Primer
'"Daniel" y despues lo borra
En ambos casos Visual basic selecciona el Driver más apropiado para abrir la Base de datos creo que por defecto es "Microsoft Access Driver 1.XX". No es tu caso pero si tienes una base de datos con contraseña deberías configurar el Recordset de otra forma usando una denominada ConnectionString, en ella usar el Driver adecuado que puede ser el "MS Jet 4.X xxx".
Resumidamente, si utilizas las sentencias que te explique no debería haber problemas.
Gracias por tu respuesta, pero como seria usando código en visual basic.net usando los objetos ado.net(oledbconnection, dataadapter, dataset)y en base de datos access 2003, gracias espero tu pronta respuesta
Te mando un Link en donde puedes investigar sobre el tema, ya que yo no programo en .NET, lo revise, la teoría es la misma, cambian algunas sentencias, espero que te sirva.
http://www.elguille.info/NET/ADONET/ejemploAccess.htm
Respuesta
1
A ver, tu problema al parecer no tiene que ver con visual basic.net debido a que trabajar con bases de datos access es muy complicado debido a que las tablas se hacen a la pinta de la microsoft yo preferiría trabajar con oracle u otra basada en sql pero bueno, a mi me aparecía un error similar en visualbasic6.0 y era por un error de indices es decir: cuando tu llamas a un campo de una base de datos access desde visual, no llamas al nombre del campo, sino al nombre del indice, por esto cuando el buscador de visual va a la base de datos access, busca el indice, y este no se encuentra, access no tiene alguna conexión para decir por pantalla de visual basic que hay un error en la base de datos, es por esto que todo tipo de conexión falla y te da el error de user-password.
Usualmente cuando uno crea una "principal-key" en un campo de access el indice del campo por defecto queda como principal-key así que tienes que cambiarlo por el nombre del campo y ademas verificar si el campo que no es clave este indexado y sin duplicados...
El codigo que yo empleaba en visual basic6.0 para poder llamar aa una bas e de datos era:
//declaraciones
dim base as database.
dim tabla as recordset.
dim tabla1 as recordset.
//asignaciones
set base=OpenDatabase("ubicacion de la base de datos").
set tabla = base.openrecordset("nombre de la tabla").
set tabla1= base.openrecordset("nombre de la tabla").
// llamado de los campos
por su indice es decir un busqueda.
tabla.index = "codigo"
//si es que los textbox son por indices.
tabla.seek "=", text1(i).text
if tabla.nomatch then
msgbox "no se encuentra el codigo".
else
//llenado de campos o mostrado de campos..
//para llenar.
tabla.codigo = text1.text.
//asi sucesivamente con el resto de los datos..
// Llenar por indices, para poder llenar por indice hay que coincidir los textbox con los campos de las tablas por que de lo contrario el nombre te puede quedar en la dirección la forma es esta:
for i=0.
for i = 0 to n.
tabla.fields(i)= text1(i).
next.
tabla.update.
tabla.close.
msgbox "datos guardados",vbinformation.
No te olvides de cerrar las tablas cuando están abiertas y ademas no te olvides de actualizar las tablas antes de cerrarlas.
Para mostrar solo debes invertir osea
text1.text = tabla.codigo.
Las cosas pero es igual.
Nuevamente gracias por tu ayuda, pero realizo la conexión que me detallas, hago todos loa pasos que me describes, hago la prueba de conexión me dice que la conexión fue exitosa, ¿pero cuándo cierro las propiedades para ya terminar me vuelve a salir el mismo error?: unable to connect to database the connection failed. check your usename and password and try again. Y por lo tanto no logro conectarme a mi base de dato,
Como seria la conexión sin usar los asistentes, podría ser usando puro código, me podrías mostrar como seria con código te lo agradecería mucho espero tu respuesta. También intente usando la base de datos de access neptuno, pensando que la mía este mal diseñada pero siempre hace el mismo error
Te recuerdo que tienes una respuesta mía(javaadicto) espero que te haya servido, pero en el caso que sea por favor evaluala para que salga de mi portal y así poder responder a otras personas que necesita tanta ayuda o más que tu así que

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas