Page 1 of 1

Antonio, tu ayuda por favor

PostPosted: Fri May 26, 2023 12:55 am
by Armando
Hola Antonio:

Primero, una disculpa por molestarte.

Podrías pedir a Mr. Rao, le tire un ojo a este error?

viewtopic.php?f=3&t=43196

Saludos y muchas gracias

Re: Antonio, tu ayuda por favor

PostPosted: Fri May 26, 2023 8:35 am
by Antonio Linares
Mensaje enviado,

gracias!

Re: Antonio, tu ayuda por favor

PostPosted: Fri May 26, 2023 10:57 am
by JESUS MARIN
Buenos dias Armando

¿ puedes hacer esta pequeña prueba para comprobar si cierras la tabla ?
Code: Select all  Expand view

STATIC FUNCTION CloseTable()
    oWnd        := NIL

    IF oRsHdr <> NIL
        IF oRsHdr:State() = adStateOpen
            MsgWait("Cerrando tabla oRsHdr","Atención",2)     < --------- añade esta linea
            oRsHdr:Close()
        ENDIF
    ENDIF
RETURN(.T.)


Leyendo tu código y el error 2147352567, parace una excepción de tipo DISP_E_EXCEPTION. La función que intenta leer la estructura devuelve un error (posiblemente no controlado). Viendo el video y observando que la primera vez si funciona y la segunda no, buscaría en la creación de la tabla.
La prueba que te pido es para ver si realmente la tabla se ha cerrado correctamente.
Si se cierra, miraría en la creación de la tabla la segunda vez.
Por ejemplo, en vez de poner :
Code: Select all  Expand view
  IF oRsHdr == nil
        MsgStop("I can't open the table HDRVDA !",oApp:cAplicacion)
        FW_ShowAdoError(oApp:oCon)
      RETURN(.F.)
   ENDIF


pondria :
Code: Select all  Expand view
  IF VALTYPE(oRsHdr) <> "O"           // si no es un objeto
        MsgStop("I can't open the table HDRVDA !",oApp:cAplicacion)
        FW_ShowAdoError(oApp:oCon)
      RETURN(.F.)
   ENDIF


Es solo una idea. No estoy muy puesto en SQL

Saludos

Re: Antonio, tu ayuda por favor

PostPosted: Fri May 26, 2023 4:44 pm
by Armando
Master Antonio y Jesús Marin:

Agradezco tu interés y apoyo, pero no, ninguna de las sugerencias solucionó el problema.

Como bien analizaste, la primera vez que entro con la tabla vacía, se agregan los dos
registros, uno de entrada y el siguiente de salida, y se muestran en el browse sin problema.

Al salir y regresar a seguir aumentando más registros, el browse tira el problema, ya probé
la primera sugerencia de Jesús y sí se cierra la tabla, también probé la segunda sugerencia y el problema
persiste.

Más datos, estoy simulando movimientos en un almacén, entradas y salidas, en las salidas
se debe llenar el campo HDR_SUC que contiene el número de la sucursal destino, no es el
caso de las entradas, ahí no hay sucursal destino, por esta razón el campo es Null

Image

Lo curioso es que con solo invertir el orden en que se graban los registros, primero la salida y
después la entrada, todo funciona al 100.

Saludos y gracias nuevamente

Re: Antonio, tu ayuda por favor

PostPosted: Fri May 26, 2023 5:27 pm
by JESUS MARIN
Armando

Has probado a eliminar esta linea ?

Code: Select all  Expand view
oRsHdr:Fields("HDR_SUC"):Value   := AdoNull()   // Only out movs has value


En el movimiento de salida no grabas nada en el campo HDR_REF.
¿ qué ocurre si no grabas nada en el campo HDR_SUC ?

Saludos

Re: Antonio, tu ayuda por favor

PostPosted: Fri May 26, 2023 9:49 pm
by Armando
Jesús:

Gracias, el problema sigue igual, grabando o no el Null.

Quitando el LEFT JOIN a la tabla sucursales, el problema se soluciona, peroooo
necesito mostrar el nombre de la sucursal en el Browse.

Empiezo a pensar que puede ser un pequeño bug en la clase TXBrowse, y que solo
el experto, Mr. Rao, no puede sacar del problema.

Saludos