Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: sBio79 en Marzo 29, 2016, 04:35:22 am

Título: (ayuda) Error Recordset
Publicado por: sBio79 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
Título: Re:(ayuda) Error Recordset
Publicado por: YAcosta 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
Título: Re:(ayuda) Error Recordset
Publicado por: sBio79 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
Título: Re:(ayuda) Error Recordset
Publicado por: sBio79 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
Título: Re:(ayuda) Error Recordset
Publicado por: ale_xi 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")

Título: Re:(ayuda) Error Recordset
Publicado por: sBio79 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