Dos Browses en ARRAYS...TXBrowse

Dos Browses en ARRAYS...TXBrowse

Postby ACC69 » Sat Mar 22, 2014 7:52 pm

ACC69 wrote:Hola amigos buenas tardes ,esperando que se encuentren bien les envio cordial saludos.

He estado batallando mucho y navegue por casi todo el foro pero no vi nada parecido a una rutina de dos browses en ARRAY, solo veo uno, de eso no tengo ningun problema, pero...en segundo browse oBrw2, no me muestra nada ....solo la primera columna de datos y tampoco me refresca datos cada que selecciono con la flecha de cada cuenta,y no se que estare haciendo mal, pero hice la prueba con el primer browse obrw1 que al dejar unicamente la variable aDato1 := {}, no me muestra todos los encabezados del Header, solo la cuenta y si le pongo la funcion aDato1 := CargaDatos() , si me los carga todos, entonces como le hare cuando una array es vacio me muestre los encabezados,esa pregunta es para el segundo browse oBr2,para que cuando seleccione equis linea,me muestre los detalles el segundo browses, pero no consigo hacerlo, solo muestra la primera columna pero sin refrescarme los detalles,que me va agregando toda la fila de la columna datos, adjunto imagen y codigo...no quiero tirar la toalla, pero ya batalle mucho por el array que son arreglos que quiero cargar en el browse,en dbfs no tengo problemas ,pero en ARRAYS es donde batallo mucho

Cualquier ayuda o ejemplo les estare agradecido amigos.

Code: Select all  Expand view
#Include "FiveWin.ch"
#Include "xBrowse.ch"

STATIC oDlg
Static S08, S09, S10,S12, S13 // Alias de base de datos
STATIC nTCarg,nTCred
STATIC lSelSeg,NivBal
STATIC SdoMesAnt,SdoIni,Cta1,Cta2,Cta3,Cta4,nReg,nCol,aSum, aTot // Reportes
STATIC aDato1,aDato2,aClrRowBack
STATIC nMA_Ini, nMA_Fin

MemVar oWnd, oMOpc, nNumEmp, cDescrEmp, Mes_Per, Ano_Per, nStation,EjeMAIn

//------------------------------------------------------------------------------
FUNCTION MOD_PBAS()
 LOCAL oItem:=oMOpc,oBrw1,oBrw2,oBrw3

 lSelSeg:= .F.
 NivBal := 4
 aTot   := {{0,0,0,0}}
 nReg   := 0
 aDato1 := {}
 aDato2 := {}
 aDato1 := CargaDatos() // Aqui si lo quito NO ME MUESTRA TODOS LOS HEADERS, aunque le ponga oBrw1:lColDividerComplete := .T.

 DEFINE DIALOG oDlg RESOURCE "CONSBALANZ" TITLE 'Listado de Pólizas y Movimientos'
  // Consulta Balanza cuentas acumulados \\
  REDEFINE XBROWSE oBrw1 ID 101 ;
           HEADERS 'Cuentas','Descripción','Sdo Ant','Cargo','Abono','Sdo Act' ;
           COLSIZES 112,260,85,85,85,85;
           PICTURES "@!","@!","999,999,999.99","999,999,999.99","999,999,999.99","999,999,999.99";
           OF oDlg ARRAY aDato1 FOOTERS AUTOCOLS LINES CELL

  oBrw1:lColDividerComplete := .F.
  oBrw1:bChange             := { || MovEdoCta(oBrw1,@aDato2),oBrw2:Refresh() } [b]// Aqui llamo segundo browse y refresh()[/b]


  // Consulta Estados de cuentas a detalle \\   Aqui solo muestra primera columna pero sin refrescar datos que selecciono con la flecha
  REDEFINE XBROWSE oBrw2 ID 102 ;
           HEADERS 'Tipo','Num','Fecha','Referencia','Concepto','Cargo','Abono','Sdo Act' ;
           COLSIZES 28,30,50,80,180,85,85,85;
           PICTURES "@!","@9999","@D","@!","@!","999,999,999.99","999,999,999.99","999,999,999.99" ;
           OF oDlg ARRAY aDato2 FOOTERS AUTOCOLS LINES CELL

  oBrw2:lColDividerComplete := .T.
 * oBrw2:bChange             := { || MovDetFact(oBrw2),oBrw2:Refresh() } // Despues....para futuro tercer browse ...

 ACTIVATE DIALOG oDlg CENTERED // ON INIT Refresca(oBrw,oBrw2)

 oItem:Enable() // Cerramos
RETURN NIL

//------------------------------------------------------------------------------
STATIC FUNCTION NivCol(nCol)
 DO CASE
    CASE (S08)->NIVSUM = 1
          nCol := ""

    CASE (S08)->NIVSUM = 2
          nCol = " "

    CASE (S08)->NIVSUM = 3
          nCol = "  "

    CASE (S08)->NIVSUM = 4
          nCol = "   "
 ENDCASE
RETURN(nCol)

//------------------------------------------------------------------------------
STATIC FUNCTION MovEdoCta(oBrw1,aDato2)
 LOCAL xEmp,S91,Ind1Tmp1,cCta,cCtaIni,PasaCta := .T.

 cCta    := aDato1[oBrw1:nArrayAt, 1 ]

 IF !cCta == Nil
     cCtaIni := SUBS(cCta,1,4)+SUBS(cCta,6,4)+SUBS(cCta,11,4)+SUBS(cCta,16,4)

     xEmp    := nNumEmp
     S91     := "EMP"+TSTR(xEmp)+TRIM("\R_INTS"+nStation)+".DBF"
     Ind1Tmp1:= "R_INTS"+nStation

     (S08)->( DbSeek(cCtaIni) )

     IF (S08)->TIPONAT = 'D'
         USE (S91) ALIAS S91 EXCLUSIVE // NEW SHARED

         S91->(DbSetIndex(Ind1Tmp1))
         S91->(OrdSetFocus(1))

         S91->(DbGoTop())

         S91->( DbSeek(cCtaIni) )

         xEmp    := nNumEmp
         S91     := "EMP"+TSTR(xEmp)+TRIM("\R_INTS"+nStation)+".DBF"
         Ind1Tmp1:= "R_INTS"+nStation

         USE (S91) ALIAS S91 EXCLUSIVE // NEW SHARED

         S91->(DbSetIndex(Ind1Tmp1))
         S91->(OrdSetFocus(1))

         S91->(DbGoTop())

         S91->( DbSeek(cCtaIni) )

         aSum := {{0,0,0,0,0,0,0}}
         aTot := {{0,0,0,0,0,0,0}}

         DO WHILE S91->(!EOF())
             IF S91->SALDOS <> 0 .AND. aSum[1,3] <> 0
                 IF S91->CUENTAS > cCtaIni
                     EXIT
                 ENDIF
             ENDIF

             IF S91->SALDOS <> 0
                 aSum[1,1] := aSum[1,1] + S91->SALCARG // Suma Cargos
                 aSum[1,2] := aSum[1,2] + S91->SALCRED // Suma Abonos
                 aSum[1,3] := aSum[1,3] + S91->SALDOS  // Suma Dif de saldos
                 aSum[1,4] += (S91->SALCARG - S91->SALCRED)

                 aTot[1,1] := aTot[1,1] + S91->SALCARG // Totaliza Cargos
                 aTot[1,2] := aTot[1,2] + S91->SALCRED // Totaliza Abonos
                 aTot[1,3] := aTot[1,3] + S91->SALDOS  // Totaliza Dif Sdos
                 aTot[1,4] += (S91->SALCARG - S91->SALCRED)

                 AADD( aDato2, { S91->TIPO   , ;  [b]// Este es el Arreglo que no muestra nada en segundo browse oBrw2[/b]
                                 S91->NUMPOL , ;
                                 S91->FHAMOV , ;
                                 S91->REFERE , ;
                                 S91->CONCEP , ;
                                 S91->SALCARG, ;
                                 S91->SALCRED, ;
                                 S91->SALDOS , ;
                                 aSum[1,4]       } )

             ENDIF

             S91->(DbSkip())
         ENDDO

         S91->(DbCloseArea())
     ENDIF
 ENDIF
RETURN (aDato2)


Image
https://imageshack.com/i/n753r9j
Image

Saludos de antemano.
Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Dos Browses en ARRAYS...TXBrowse

Postby cnavarro » Sat Mar 22, 2014 9:15 pm

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6504
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 75 guests