** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - Asignar Recorset DAO de un Procedure Mysq
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAsignar Recorset DAO de un Procedure Mysq

 Responder Responder
Autor
Mensaje
calucasanta Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 27/Mayo/2007
Localización: Guatemala
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Tema: Asignar Recorset DAO de un Procedure Mysq
    Enviado: 09/Noviembre/2011 a las 21:00

Saludos a todos!

 
tengo problemas con access, exactamente asignar un recorset a un formulario llamando un procedure Mysql a través de DAO, así que abro este tema aquí.
 
uso access 2007 de interfas y las tablas mysql que se encuentran en un servidor de internet.
 
tengo problema de asignar el un recorset al cargar un formulario.
 
tengo el siguiente código:
 
 

 
Dim PCross_Usuario_Entrada As String
    PCross_Usuario_Entrada = "Call Crossxx()"  'llamo al procedure mysql
 
Dim MiConexion2 As String
    MiConexion2 = "ODBC;Driver=MySQL ODBC 5.1 Driver;Server=xxx.org;Database=xxx; Port=3306; User=admin;Password=xxx;;DFLT_BIGINT_BIND_STR=1"
 
Dim DB As DAO.Database

'Abro un recordset sobre la tabla
      Dim RS As DAO.Recordset
     Set DB = DBEngine.Workspaces(0).OpenDatabase("", False, False, MiConexion2)  'MiConexionProcedure)
     
      ' For SPs that return rows.       Los PE que devuelven filas.
    Set RS = DB.OpenRecordset(PCross_Usuario_Entrada, dbOpenSnapshot, dbSQLPassThrough)
    
     ' Me.IdControl = rs(0) ' Column one.
With RS
    While Not .EOF
           
            MsgBox RS!IdControl & ", " & RS!NoPersonal & ", " & RS!entrada
            .MoveNext
    Wend
    .Close
End With
 Set Me.Recordset = RS
 
 MsgBox "Terminado....."
 
RS.Close
Set RS = Nothing
DB.Close
Set DB = Nothing
 
 
 
me funciona bien la conexión, utilicé el with para visualizar los registros con un msgbox y los miro, pero cuando le asigno: Set Me.Recordset = RS
me da el siguiente error:
 
3420 el objeto no es válido o no tiene valor.
 
con el complemento de "José Bengoechea Ibaceta", realicé el siguiente código
 

 
Creado con el complemento "jbwzCodeGen 1.0 Generador de código para el manejo de recorsets"
Dim miBD As DAO.Database
Dim rstbl_Control_Accesos As DAO.Recordset

Set miBD = CurrentDb()
    Set rstbl_Control_Accesos = miBD.OpenRecordset("tbl_Control_Accesos", dbOpenDynaset)
    Set Me.Recordset = rstbl_Control_Accesos
 
 
y me funciona bien.... sin ningun inconveniente
 
 
¿Qué estoy haciendo mal?
 
espero sus comentarios.
 


Editado por calucasanta - 09/Noviembre/2011 a las 21:14
Carlos Santa Marí­a
Guatemala Centro América
Arriba
kinito11 Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 08/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 5800
Enlace directo a este mensaje Enviado: 09/Noviembre/2011 a las 21:19
hola, no tengo mucha experiencia en servidores , pero donde yo trabajo lo hay , y para hacer funcionar una de mis bd , tengo este otro parametro en la conexion, pero las tablas nuestras estan en servidor sql server
Set RS = DB.OpenRecordset(PCross_Usuario_EntradaUltimoId, dbOpenDynaset, dbSeeChanges)
 
Saludos desde Santander España
Arriba
calucasanta Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 27/Mayo/2007
Localización: Guatemala
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Enviado: 09/Noviembre/2011 a las 21:35
 
Saludos kinito11!!
 
gracias por tu respuesta.
 
me da el siguiente error:
 
3146 en tiempo de ejecución
ODBC: falló la llamada.
 
por lo que veo es "dbSeeChanges"
el que hace que falle la llamada
 
en esta página
veo que hay constantes de ese tipo
 
algo que se me olvidé decir es que la conexión la hago atraves de ODBC mysql.
 
perdón... no habia termidado de comentar....
 
me funciona bien con: dbOpenDynaset y dbOpenSnapshot en las pruebas que hice, pero con la otra constante me da ese error.
 
tienes más comentarios?
 
 


Editado por calucasanta - 09/Noviembre/2011 a las 21:45
Carlos Santa Marí­a
Guatemala Centro América
Arriba
kinito11 Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 08/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 5800
Enlace directo a este mensaje Enviado: 09/Noviembre/2011 a las 21:52
hola, lo unico que te puedo decir es que todas las bd de access de mi empresa , la conexion es a traves de odbc sql server, y no han dado nigun problema , van como un tiro
Saludos desde Santander España
Arriba
calucasanta Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 27/Mayo/2007
Localización: Guatemala
Estado: Sin conexión
Puntos: 299
Enlace directo a este mensaje Enviado: 11/Noviembre/2011 a las 17:05
saludos kinito11 y a todos!
 
despues de miles de intentos fallidos, me doy cuenta que al cerrar el recordset es el problema, detallo el código comentado:
 
 
 
 
Dim DB As DAO.Database
      Dim RS As DAO.Recordset
     Set DB = DBEngine.Workspaces(0).OpenDatabase("", False, False, MiConexion2)  'MiConexionProcedure)
     
     
      'funciona bien con dbOpenSnapshot y con dbOpenDynaset
      'Set RS = DB.OpenRecordset(PCross_Usuario_Entrada, dbOpenSnapshot, dbSQLPassThrough)
     
      Set RS = DB.OpenRecordset(PCross_Usuario_Entrada, dbOpenDynaset, dbSQLPassThrough)
 
'con dbSeeChanges no funciona... indica el error
'3146 ODBC: falló la llamada..
'por eso no lo utilizo..
'      Set RS = DB.OpenRecordset(PCross_Usuario_Entrada, dbOpenDynaset, dbSeeChanges)
 
'utilizo With y Wile para recorrer los registros
'ya que si no lo hago me carga en el formulario solo el primer registro o fila.
With RS
    While Not .EOF
           
            .MoveNext
    Wend

'Si cierro... en Set Me.Recordset = RS,  me da el error 3420
'el objeto no es válido o no tiene valor
'por eso el .Close lo comento....
'    .Close
End With
 Set Me.Recordset = RS
 
'Al cerrar el recordset y la base de datos ya no
'me carga el formulario con información
'por eso lo comento.....
'RS.Close
'Set RS = Nothing
'DB.Close
'Set DB = Nothing
 
 
aquí viene mis interrogantes:
 
1. porqué no debo de cerrar el recordset, si por lo que he leido recomiendan cerrarlo?
2. me imagino que ese recordset seguirá abierto incluso si se cierra el formulario entonces cómo cerrar el recordset?
3. igual me pasa con DB o DataBase cómo cerrarlo o cuando se va cerrar?
 
espero sus comentarios.
 
 


Editado por calucasanta - 11/Noviembre/2011 a las 17:06
Carlos Santa Marí­a
Guatemala Centro América
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable