In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

TDbBrowseMod No actualiza correctamente el registro

Foro de Xailer profesional en español
Responder
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

TDbBrowseMod No actualiza correctamente el registro

Mensaje 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!
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: TDbBrowseMod No actualiza correctamente el registro

Mensaje 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.)
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: TDbBrowseMod No actualiza correctamente el registro

Mensaje 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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: TDbBrowseMod No actualiza correctamente el registro

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: TDbBrowseMod No actualiza correctamente el registro

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: TDbBrowseMod No actualiza correctamente el registro

Mensaje 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)
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: TDbBrowseMod No actualiza correctamente el registro

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder