none
Errores aleatorios aplicación VB6 con acces2003.AYUDA

    Pregunta

  • Hola! desarrolle una aplicacion en vb6 y quisiera que alguien con experiencia me diga si le ha ocurrido antes lo siguiente:  Esta aplicación es usada en red por 3 equipos con vista, se conectan a una maquina donde esta la bd central en access 2003.  Uso instrucciones SQL para manejar los datos.  Sin embargo en ocasiones, aparecen errores aleatorios como por ejemplo: "No se puede encontrar la tabla de resultados: 'Tabla1'" y luego reviso en la base de datos y si existe dicha tabla.  Cierro el sistema en ese equipo y cuando vuelvo a entrar e intento accesar, me lo permite sin problema.  Pueden pasar dias sin error y de repente aparecen.  Por favor guienme donde puedo analizar lo que ocurre... Que caracteristicas debe tener mi BD y mi aplicacion para que varios puedan accesar a ella y confíe en que no generarán errores ilógicos? Le agradeceria mucho el que lea esto y me sugiera incluso otros foros o un correo de alguien experto. Gracias de nuevo
    jueves, 17 de septiembre de 2009 18:55

Todas las respuestas

  • Hola, yo trabajo con sql server 2007 y tengo una aplicaicon que es multiusuarios, el problema puede ser en la forma que abres tu recorset intenta cambiar la forma de abrirlo, ya que puede ser que al mismo registro lo intenten leer mas de un usario y no tepermite ya que el primer usuario lo tiene atrapado. no pasa tanseguido porque son pocos suarios.

    jueves, 17 de septiembre de 2009 22:55
  • Gracias por responder.  La forma en que abro el recorset es el siguiente...
    Rs.Open "SELECT * FROM Egreso", InicStr, adOpenStatic, adLockOptimistic

    donde InicStr = "DSN=Nombredelabase"

    estara bien?
    viernes, 18 de septiembre de 2009 0:42
  • en la forma que tu esta abriendo tu recorset es en forma exclusiva de lectura

    puedes probra de esta forma:


    SELECT * FROM Egreso", InicStr, adOpenStatic, adLockReadOnly


    *** de esta forma genero una coneccion con mi base de datos

        lsCadenaCon = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & psUID & ";Password=" & psPWD
        lsCadenaCon = lsCadenaCon & ";Initial Catalog=" & psDBName & ";Data Source=" & psServer
        pcnCon.ConnectionTimeout = 0
        pcnCon.Open lsCadenaCon


    ******este codigo lo puedes utilizar y genrerar una funcion para que siempre lo utilices al abrir un recorset

      If prsRecordSet.State = adStateOpen Then
        prsRecordSet.Close
      End If
     
      prsRecordSet.Open psSql, pcnCon, adOpenStatic, adLockReadOnly
      If prsRecordSet.EOF And prsRecordSet.BOF Then     'si el resultado del Query no trae registros, no hay info
        prsRecordSet.Close
        gfnbCargaRS = False
      Else                                              'en caso contrario si tiene información
        prsRecordSet.MoveFirst
        gfnbCargaRS = True
      End If


    revisa si tu forma de conectarte a tu base de datos es similar al que te envio y la forma de cargar un recorset

    ! espero te funcione....!

    si quieres puedo armarte un modulo comun con las funciones para abrir tu conecctividad con una base de datos y un recorset.

    sábado, 19 de septiembre de 2009 17:09
  • Hola de nuevo!

    Si coloco el locktype = adLockReadOnly
    como me sugieres... eso significa que los usuarios no podran modificar los datos?? eso me causará un problema ya que necesito que cuando un usuario vea un registro, otro pueda modificarlo o crear uno nuevo,
    lei en otras paginas y me recomiendan usar lo siguiente:
    rs.CursorType = adOpenDynamic
    rs.CursorLocation = adUseClient
    rs.LockType = adLockOptimistic

    Pero como hay varios puntos de vista y quiero tambien confiar en el tuyo, por eso quise aclararte mi necesidad y como debería funcionar mi programa...
    Se que usando M Access no es la forma mas segura de manipular los datos, por eso quise trabajar con SQL server, sin embargo, en aquella oportunidad era lo mas rapido y lo que conocia... por eso quiero ver que puedo mejorar sin migrar aun.

    Ahh y el abrir y cerrar recorset lo hago igual que como me lo explicas arriba...

    GRACIAS POR TU AYUDA!
    domingo, 20 de septiembre de 2009 22:24
  • lo que te quiero explicar es que de esta forma no tienes problemas al leer un atbla ya que siempre esta liberando los registros.

    y tu puedes seguir modificando o agregando sin problemas y leer mas registros.

    y revisa si enalgun momento de los procesos no se esta quedando un recorset abierto. ya que puede ser que este abiero una conexion con un recorset.

    lunes, 21 de septiembre de 2009 20:02