Página 1 de 1
Obter a quantidade de linhas num TBrowse
Enviado: 27 Set 2019 19:53
por ricardo-barros
Boa noite colegas.
Como eu posso saber a quantidade das linhas após filtrar dados com TBrowse?
Obter a quantidade de linhas num TBrowse
Enviado: 28 Set 2019 18:54
por Fernando queiroz
Explica melhor qual o objetivo, porque o browse não tem filtro e sim o arquivo
Obter a quantidade de linhas num TBrowse
Enviado: 28 Set 2019 18:58
por Fernando queiroz
@ 18,198 BROWSE oBrowse1 DATABASE SIZE 976,344;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS
neste browse que tenho no sistema cabe 14 linhas visiveis
quando ultrapasso essa quantidade utilizo o seguinte
IF MEMVAR->QTDITEM > 13
DBGOBOTTOM()
DBSKIP(-12)
ELSE
DBGOTOP()
ENDIF
no caso eu deixo 1 linha em branco no final :xau :xau
Obter a quantidade de linhas num TBrowse
Enviado: 28 Set 2019 19:02
por Fernando queiroz
Obter a quantidade de linhas num TBrowse
Enviado: 28 Set 2019 20:06
por asimoes
O exemplo mostrado não é para TBrowse
Quantidade de linha no TBrowse é o reccount do dbf ou ordkeycount (indice) do dbf
Obter a quantidade de linhas num TBrowse
Enviado: 28 Set 2019 20:12
por asimoes
ricardo-barros escreveu:Boa noite colegas.
Como eu posso saber a quantidade das linhas após filtrar dados com TBrowse?
Você pode usar COUNT TO nCount, ou usar indice temporário como filtro, o total de registros seria o ordkeycount
Indice temporário é mais rápido que set filter, você pode usar ainda OrdScope:
Código: Selecionar todos
cOrder := "CODIGO"
cQuery := "FOR ! Deleted()"
INDEX ON &cCorder. TAG A030700A FOR &cQuery. TEMPORARY ADDITIVE
APC01->( DbSetOrder(1) )
APC01->( OrdScope( 0, '01' ) )
APC01->( OrdScope( 1, '01' ) )
APC01->( DbGoTop() )
nTot := APC01->( OrdKeyCount() )
Obter a quantidade de linhas num TBrowse
Enviado: 29 Set 2019 12:21
por ricardo-barros
Deixem-me explicar melhor o que eu estou precisando.
Estou usando o TBrowse para mostrar uma grade de registros semelhante a DBedit().
Usando a função TBrowseFW eu defini os parâmetros bWhile e bFor para que apenas os registros correspondentes a uma faixa de datas (informada pelo usuário) sejam exibidos na tela.
Assim que o usuário digitar as datas e teclar Enter eu quero mostrar uma frase dizendo quantos registros correspondem ao período digitado.
Já tentei com oTbr:rowCount mas isto só mostra a quantidade de linhas reservadas para a exibição de dados no TBrowse.
Obter a quantidade de linhas num TBrowse
Enviado: 29 Set 2019 19:58
por asimoes
O indice é criado antes!
Código: Selecionar todos
cOrder := "DTOS(DATA)"
cQuery := "FOR ! Deleted()"
INDEX ON &cCorder. TAG A030700A FOR &cQuery. TEMPORARY ADDITIVE
//Depois que informar a data inicial/final
APC01->( DbSetOrder(1) )
APC01->( OrdScope( 0, dDataIni ) )
APC01->( OrdScope( 1, dDataFim ) )
APC01->( DbGoTop() )
nTot := APC01->( OrdKeyCount() )
Obter a quantidade de linhas num TBrowse
Enviado: 01 Out 2019 09:02
por Ranier
ricardo-barros escreveu:Deixem-me explicar melhor o que eu estou precisando.
Estou usando o TBrowse para mostrar uma grade de registros semelhante a DBedit().
Usando a função TBrowseFW eu defini os parâmetros bWhile e bFor para que apenas os registros correspondentes a uma faixa de datas (informada pelo usuário) sejam exibidos na tela.
Assim que o usuário digitar as datas e teclar Enter eu quero mostrar uma frase dizendo quantos registros correspondem ao período digitado.
Já tentei com oTbr:rowCount mas isto só mostra a quantidade de linhas reservadas para a exibição de dados no TBrowse.
O TBrowse não sabe o número de linhas que vai apresentar, ele é dinâmico e depende da fonte de dados.
Quando precisar apresentar uma linha, ele requisita a fonte, se acabou, não mostra e pronto.
Então você terá que "calcular" o número possíveis de linhas que poderão ser apresentadas, antes de iniciar o Browse, diretamente com a fonte dos dados.
Obter a quantidade de linhas num TBrowse
Enviado: 02 Out 2019 16:11
por ricardo-barros
Quando precisar apresentar uma linha, ele requisita a fonte, se acabou, não mostra e pronto.
Neste caso eu gostaria de saber se é possível, após a exibição do TBrowse, informar se pelo menos um registro foi exibido.
Obter a quantidade de linhas num TBrowse
Enviado: 03 Out 2019 08:56
por Ranier
ricardo-barros escreveu:Neste caso eu gostaria de saber se é possível, após a exibição do TBrowse, informar se pelo menos um registro foi exibido.
Somente se você criar e gerenciar o Browser derivado de TBrowse. Veja por exemplo esse browser no fontes do SDBU.
Código: Selecionar todos
FUNCTION BrowseTable( nTop, nLeft, nBottom, nRight, hINI, sTABLE )
Local sTELA
Local sCONN
Local lExit := .F.
Local lOpen
Local nKey
Local oTbr
hINI["TableName"] := sTABLE + ";"
sCONN := hb_iniWriteStr( hINI )
lOpen := DBUseArea( .T., "DBDRDD", sCONN, "TAB1", .T., .T. )
If !lOpen
hb_Alert( "Falha na abertura da tabela!" )
Return NIL
Endif
SetCursor(SC_NONE)
sTELA := SaveScreen( 00, 00, 24, 79 )
@ nTop, nLeft To nBottom, nRight
oTbr := BrowseTableNew( nTop + 1, nLeft + 1, nBottom - 1, nRight - 1 )
While !lExit
DispBegin()
/* IMPRIMA SEU CONTEUDO AKI */
While( nKey := Inkey() ) == 0 .and. !oTbr:stabilize()
End
DispEnd()
nKey := Inkey( 0 )
Switch( nKey )
Case K_DOWN
oTbr:down()
Exit
Case K_UP
oTbr:up()
Exit
Case K_PGDN
oTbr:pageDown()
Exit
Case K_PGUP
oTbr:pageUp()
Exit
Case K_CTRL_PGUP
oTbr:goTop()
Exit
Case K_CTRL_PGDN
oTbr:goBottom()
Exit
Case K_LEFT
oTbr:left()
Exit
Case K_RIGHT
oTbr:right()
Exit
Case K_ESC
lExit := .T.
Exit
End
End
RestScreen( 00, 00, 24, 79, sTELA )
SetCursor(SC_NORMAL)
Close TAB1
Return NIL