Autor Tema: (ayuda) Error Recordset  (Leído 2901 veces)

0 Usuarios y 1 Visitante están viendo este tema.

sBio79

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +1/-0
    • Ver Perfil
(ayuda) Error Recordset
« en: Marzo 29, 2016, 04:35:22 am »
Hola a todos tengo un aplicativo en vb6 el cual venia ocupando access como bd pero decidi migrar a mysql
el tema de mi consulta es la siguiente:
 
tengo una tabla  llamada Folios  y tengo 2 registros para controlar la numeracion

ID           FOLIOS
1              234
2              345


estos se actualizan desde dos formularios diferentes

el problema que tengo es que aveces al modificar  el reg con ID= 1 el campo FOLIOS 234 a 400 cuando lo consulto desde el otro formulario me sigue arrojando el recordeset el valor anterior  234 siendo que ya fue actualizado a 400, ahora bien he hecho una consulta desde otro form y me arroja el valor anterior de 234  porque? no lo se, he  consultado directamente mi tabla de mi base desde myphpadmin y la modificacion esta hecha  valor 400 y  desde otro form de un proyecto aparte hago la consulta y la modificacion me parece correcta igual 400 alguna idea amigos foristas

esta es mi conexion

Código: (VB) [Seleccionar]
    On Error GoTo ErrorHandler
    Set Bd_Mysql = New ADODB.Connection
    Bd_Mysql.ConnectionString = "driver={MySQL ODBC 3.51 Driver};" & _
                                "Server=" & ip_strServidor & ";" & _
                                "Port=3306;" & _
                                "Database=SOFT;" & _
                                "User=root;" & _
                                "Password=;" & _
                                "Option=3;"

    Bd_Mysql.Open
 
    Exit Sub
ErrorHandler:



como dije soy nuevo en mysql no se sime falta alguna configuracion ya que tambien batalle por que no usaba yo

Código: (VB) [Seleccionar]
rs.CursorLocation = adUseClient

y siempre me arrojaba rs.recorcount -1

mi consulta

Código: (VB) [Seleccionar]
  Dim rs As New ADODB.Recordset
   
    rs.CursorLocation = adUseClient
    rs.Open "SELECT * FROM folios WHERE id=" & val(1), Bd_Mysql, adOpenStatic, adLockOptimistic, adCmdText
    MsgBox rs.Fields("FOLIO")

alguna idea que me puedan tirar gracias

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:(ayuda) Error Recordset
« Respuesta #1 en: Marzo 29, 2016, 12:35:03 pm »
No creo que el problema sea de MySQL sino de tu recordset. Recuerda que el recordset esta en memoria, si declaraste la variable a nivel global seguirás viendo 234 en todos los formularios hasta que actualices ese recordset, o sea, vuelvas a tirar la consulta, si tiras la consulta de nuevo con el rs declarado de forma global te arrojara error, para ello antes del rs.Open deberás poner:
Código: (VB) [Seleccionar]
If rs.state Then rs.close
Si el rs lo declaraste en el procedimiento (como se ve en tu código) entonces quizá se trata de que la modificación que hiciste a 400 aun no la terminaste, o sea, no hiciste un Commit.

s.e. u o.

Saludos
Me encuentras en YAcosta.com

sBio79

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +1/-0
    • Ver Perfil
Re:(ayuda) Error Recordset
« Respuesta #2 en: Marzo 29, 2016, 01:49:57 pm »
Es un proyecto que hice hace como 3 años fuel el primero y utilizaba yo rs.AddNew, rs.Update y abri la conexion y la cerraba en cada consulta, funciona bien, ahora he decidido cambiar utilizar SQL puro abrir una sola conexion ya lo he hecho en otros proyectos con access pero ahora que estoy iniciando en mysql me he esta costando un poco, rs lo tengo declarado en el procedimiento, si utilizo transacciones de hecho si despues de la modificacion consulto directamente en mi tabla con myphpadmin veo reflejado la actualizacion, si lo hago desde otro proyecto tambien el rs. me refleja la actualizacion, pero si lo hago desde el proyecto en el cual estoy trabajando no sigoviendo el mismo

sBio79

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +1/-0
    • Ver Perfil
Re:(ayuda) Error Recordset
« Respuesta #3 en: Marzo 30, 2016, 01:36:14 pm »
Yacosta he revisado, no lo tengo declarado a nivel global, aplique lo que me sugeriste

Código: (VB) [Seleccionar]
If rs.state Then rs.close
mi error persiste  alguna otra sugerencia que me pudieran dar

ale_xi

  • Bytes
  • *
  • Mensajes: 30
  • Reputación: +3/-1
    • Ver Perfil
Re:(ayuda) Error Recordset
« Respuesta #4 en: Marzo 31, 2016, 01:01:41 am »
Colocar comando

Código: (VB) [Seleccionar]
Dim rs As New ADODB.Recordset
 rs.CursorLocation = adUseClient
   rs.Open "SELECT * FROM folios WHERE id=" & val(1), Bd_Mysql, adOpenStatic, adLockOptimistic, adCmdText
   rs.Requery
  MsgBox rs.Fields("FOLIO")

« última modificación: Marzo 31, 2016, 01:06:10 am por ale_xi »

sBio79

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +1/-0
    • Ver Perfil
Re:(ayuda) Error Recordset
« Respuesta #5 en: Marzo 31, 2016, 10:46:14 am »
Compañeros foristas, lo he solucionado no me daba cuenta que cerraba la conexion antes de realizar la consulta