Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Fridureiks en 12 Septiembre 2006, 03:27 am



Título: Visual Basic 6, access y mis ojeras
Publicado por: Fridureiks en 12 Septiembre 2006, 03:27 am
Buenas, luego de mucho tiempo de solo leer, hoy me animo y publico mi primer post... y es un problema  ;D

Busque muchos ejemplos para vincular vb con access y entre un rejunte de cosas de aqui y de alla, logre que esto funcionara:

Código:
Option Explicit
Dim Conn As ADODB.Connection
Dim RsRecordSet As ADODB.Recordset
Dim Opcion As String

Private Sub Form_Load()
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=" & App.Path & "\base.mdb;" & "Jet OLEDB:Database Password=alguno"
Set RsRecordSet = New ADODB.Recordset
RsRecordSet.Open "personas", Conn, adOpenDynamic, adLockOptimistic
RsRecordSet.Requery
RsRecordSet.MoveFirst
MsgBox (RsRecordSet("nombre"))
End Sub

Funciono barbaro con una base de datos access que tenia de un trabajo y bueno, decidi hacer ya un formulario un poco mejor con otra base de datos, altas, bajas y modificaciones.

Hice otra base de datos(misma version, Access 2000) y con este mismo codigo me sale este error:

"Instruccion SQL no valida, se esperaba delete, insert..."

en la linea:

Código:
RsRecordSet.Open "personas", Conn, adOpenDynamic, adLockOptimistic

Edito, si aqui en vez de open "personas", pongo "SELECT * FROM personas", me aparece "No se puede leer ningun registro, no tiene permiso para READ en 'personas'" . Verifique nuevamente, y el password esta bien :(


La tabla personas existe, tiene datos y no entiendo el por que da este error. Vuelvo a usar la BD vieja y funciona... y son iguales!! con pass y todo. :-[

Hay que agregar alguna configuracion extra a las bases de datos? sinceramente ya no tengo idea de por que sucede...

Si alguien me diera una manito, le estaria eternamente agredecido.


Un saludo y gracias desde ya.


Título: Re: Visual Basic 6, access y mis ojeras
Publicado por: Zorrohack en 12 Septiembre 2006, 04:27 am
Citar
MsgBox (RsRecordSet("nombre"))

si quieres mostrar lo que hay en el campo 'nombre' deberia ser asi:MsgBox RsRecordset.Fields("nombre")



Título: Re: Visual Basic 6, access y mis ojeras
Publicado por: Fridureiks en 12 Septiembre 2006, 05:01 am
Hola, gracias por la respuesta. Eso igual funcionaba asi como lo puse, pero si es mas correcto como lo escribiste tu, lo cambio.

Igualmente el error sigue ahi  :-(


Título: Re: Visual Basic 6, access y mis ojeras
Publicado por: Impersecuto en 12 Septiembre 2006, 22:00 pm
A mi me ha pasado el mismo problema y segun entiendo tiene que ver con la version de access que se ocupa, al parecer VB 6 es feliz con access 97, pero no trabaja con access 2000.

Creo haber leido por ahi que existe un service pack para VB 6 que podria solucionar este problema, pero yo no lo he probado aun.
Mientras tanto lo que hago es crear una base de datos en Access 2003 (en realidad es en formato 2000) y como no son bases de datos demasiado complejas simplemente la convierto al formato access 97 gracias a una utilidad de conversion que se encuentra en el menu herramientas de Access.

Saludos.


Título: Re: Visual Basic 6, access y mis ojeras
Publicado por: Fridureiks en 13 Septiembre 2006, 06:28 am
Hola, ya he probado muchas cosas, entre ellas lo de convertir a access 97, pero da igual, el errorcillo sigue ahi.

Ya me doy XD, cada vez que quiera hacer una base de datos, tomare esas de ejemplo que si adan y las modificare... hasta que instale otr aversion de Access, o no se.

Saludos y muchas gracias de todos modos.


Título: Re: Visual Basic 6, access y mis ojeras
Publicado por: Castord en 16 Septiembre 2006, 00:16 am
Proba un cadena de conexion nueva y actualizada para ese motor. La Connection String siempre a mi me creo problemas usando el DAO al variar la dll de referencia para motores viejos no soportados. En propiedades del control ADO conecta manualmente y proba la conexion a tu base de datos luego copiala o guardala como variable string para modificarla en run time, no se si esta posible solucion ya la posteron pero recomiendo que lo pruebes.