Página 1 de 1

TDbBrowseMod No actualiza correctamente el registro

Publicado: Mar Jun 29, 2021 10:49 pm
por gabo1
Estimando Ignacio

Estoy volviendo a retomar TbBrowseMod 7.0.11 en el metodo OnChange

Código: Seleccionar todo

//------------------------------------------------------------------------------
METHOD BrwPedidosChange( oSender, lRowChanged ) CLASS TFormDomicilioBrowseMod
   IF lRowChanged
      ::DspPedidoActual()
   ENDIF
RETURN Nil
El registro que se visualiza es el registro anterior al actual, me puede indicar cual es la forma correcta de usar este metodo para que me despliegue los datos donde esta posicionado el puntero o cursor
Saludos!

Re: TDbBrowseMod No actualiza correctamente el registro

Publicado: Mar Jun 29, 2021 11:42 pm
por gabo1
Otros detalles detectados
1.- Cuando se tiene presionada la tecla de flecha arriba o abajo el browse enloquece pierde la posicion
2.- El dataset no se actualiza.. tuve que hacer el siguiente codigo para que se actualizara el nuevo registro

Código: Seleccionar todo

        Wait_On("Grabando datos del cliente..")
        AppData:oMySQLDS:BeginTrans()
        ::oSQLPedidos:AddNew()
        ::oSQLPedidos:ID_EMPRESA:= AppData:cIdCompany
        ::oSQLPedidos:ID_TERMINAL:= AppData:cTerminalTPV
        ::oSQLPedidos:ID_SALON:= ""
        ::oSQLPedidos:FECHA_VENTA:= AppData:dFechaTPV
        ::oSQLPedidos:ID_TURNO:= AppData:cTurnoTPV
        ::oSQLPedidos:FOLIO_SIGUE:= AppData:nSigueTPV
        ::oSQLPedidos:ID_MESA:= AppData:cPhoneTPV
        ::oSQLPedidos:ID_CAJA:= ""
        ::oSQLPedidos:FOLIO_VENTA:= 0
        ::oSQLPedidos:ID_MESERO:= ""
        ::oSQLPedidos:NOMBRE_MESERO:= ""
        ::oSQLPedidos:NOMBRE_CLIENTE:= cNAME_CLIENTE
        ::oSQLPedidos:ID_CLIENTE:= cCODE_CLIENTE
        ::oSQLPedidos:HORA_ENTRADA:= Time()
        ::oSQLPedidos:NUMERO_PAX:= 1
        ::oSQLPedidos:FOLIO_VENTA:= 0
        ::oSQLPedidos:TOT_DESCUENTO:= 0
        ::oSQLPedidos:DESCUENTO:= 0
        ::oSQLPedidos:TOT_IVA:= 0
        ::oSQLPedidos:HORA_ENTRADA:= Time()
        ::oSQLPedidos:STA_VENTA:= "ACTIVA"
        ::oSQLPedidos:STA_IMPRESA:= "NO"
        ::oSQLPedidos:STA_COBRADA:= "NO"
        ::oSQLPedidos:AREA_SERVICIO:= "Domicilio"
        ::oSQLPedidos:USER_BITACORA:= GetComputerName()
        ::oSQLPedidos:DATE_BITACORA:= Date()
        ::oSQLPedidos:TIME_BITACORA:= Time()
        ::oSQLPedidos:Update()

        // ESTE CODIGO FUE NECESARIO PARA QUE DATASET SE ACTUALIZARA
        // DE LO CONTRARIO EL NUEVO REGISTRO NO APARECE
        cSQLQuery:= "SELECT * FROM mesas_abiertas WHERE "+ ;
                    "id_empresa='" + AppData:cIdCompany+"' AND "+ ;
                    "fecha_venta='"+DToS(AppData:dFechaTPV)+"' AND "+;
                    "area_servicio='Domicilio' AND "+ ;
                    "sta_venta='ACTIVA' ORDER BY id_unique"
        WITH OBJECT ::oSQLPedidos
             :Close()
             :oDataSource:= AppData:oMySQLDS
             :cSelect:= cSQLQuery
             :lOpen:= .T.
        END WITH
        ::oSQLPedidos:Refresh()
        ::oSQLPedidos:SaveState(.T.)
        ::oSQLPedidos:GoTop()
        DO WHILE !::oSQLPedidos:Eof()
           IF ::oSQLPedidos:ID_MESA==AppData:cPhoneTPV .AND. ;
              ::oSQLPedidos:ID_CLIENTE== cCODE_CLIENTE
              AppData:nSigueTPV:= ::oSQLPedidos:FOLIO_SIGUE
              AppData:cPhoneTPV:= ::oSQLPedidos:ID_MESA
              AppData:cClientePedidosTPV:= ::oSQLPedidos:ID_CLIENTE
              EXIT
           ENDIF
           ::oSQLPedidos:Skip()
        ENDDO
        ::oSQLPedidos:RestoreState(.T.)

Re: TDbBrowseMod No actualiza correctamente el registro

Publicado: Mié Jun 30, 2021 5:22 am
por gabo1
Siguiendo con las pruebas..
El metodo OnClick funciona bien con el parametro nIndex

Código: Seleccionar todo

//------------------------------------------------------------------------------
METHOD BrwPedidosClick( oSender, nKeyFlags, oCol, nIndex ) CLASS TFormDomicilioBrowseMod
   ::oSQLPedidos:GoTo(nIndex)
   ::DspPedidoActual()
RETURN Nil

Re: TDbBrowseMod No actualiza correctamente el registro

Publicado: Jue Jul 01, 2021 9:06 pm
por ignacio
gabo1 escribió: Mar Jun 29, 2021 10:49 pm Estimando Ignacio

Estoy volviendo a retomar TbBrowseMod 7.0.11 en el metodo OnChange

Código: Seleccionar todo

//------------------------------------------------------------------------------
METHOD BrwPedidosChange( oSender, lRowChanged ) CLASS TFormDomicilioBrowseMod
   IF lRowChanged
      ::DspPedidoActual()
   ENDIF
RETURN Nil
El registro que se visualiza es el registro anterior al actual, me puede indicar cual es la forma correcta de usar este metodo para que me despliegue los datos donde esta posicionado el puntero o cursor
Saludos!
Corregido. Muchas Gracias. Espero que en breve podamos, con su colaboración, resolver el resto de problemas que está sufriendo.

Un saludo

Re: TDbBrowseMod No actualiza correctamente el registro

Publicado: Jue Jul 01, 2021 9:08 pm
por ignacio
Otros detalles detectados
1.- Cuando se tiene presionada la tecla de flecha arriba o abajo el browse enloquece pierde la posicion
No consigo reproducir su error
2.- El dataset no se actualiza.. tuve que hacer el siguiente codigo para que se actualizara el nuevo registro
Indique como reproducirlo con los ejemplos.

Gracias

Re: TDbBrowseMod No actualiza correctamente el registro

Publicado: Lun Jul 05, 2021 3:49 pm
por gabo1
SOLO UN DETALLE DE INFORMACION LA VERSION DE XAILER QUE ESTOY USANDO ES LA 7.0.11 EN EL MENSAJE DE ERROR APARECE 7.0.9

Ese error sucede cuando se le da click a la celda "Street" del ejemplo DbBrowse

------------------------- Información del compilador --------------------------

Versión Xailer: Xailer 7.0.9 LA VERSION QUE TENGO ES LA 7.0.11
Compilador: Harbour 3.2.0dev (r1912031042)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
Plataforma: Windows 10 10.0

----------------------- Información detallada del error -----------------------

Subsistema: BASE
Código de error: 42
Estado: .F.
Descripción: Scope violation (protected)
Operación: TMEMOMOD:_LBORDER
Argumentos:
Fichero:
Código error SO: 0

Pila de llamadas:
TMEMOMOD:_LBORDER (0)
TEDITFORGRID:DROPDOWNMEMO (934)
(b)TEDITFORGRID_SHOW (669)
TEDITFORGRID:ONBTNCLICK (0)
TEDITFORGRID:WMNCLBUTTONUP (0)
RUNFORM (0)
TAPPLICATION:RUN (289)
MAIN (15)

Re: TDbBrowseMod No actualiza correctamente el registro

Publicado: Lun Jul 05, 2021 5:57 pm
por ignacio
Buenas tardes,

Corregido. Si tiene los fuentes sólo hay que cambiar la línea 934 de BrwColMod.prg por esto:

:lModBorder := .f. // Antes :lBorder := .f.

En breve publicaremos una actualización.

La última versión es la 7.1.0.

Saludos