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
#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)
https://imageshack.com/i/n753r9j
Saludos de antemano.
Atte: Adrian C. C.
Dos Browses en ARRAYS...TXBrowse
Dos Browses en ARRAYS...TXBrowse
Re: Dos Browses en ARRAYS...TXBrowse
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
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