Obter a quantidade de linhas num TBrowse
Moderador: Moderadores
-
ricardo-barros
- Usuário Nível 3

- Mensagens: 104
- Registrado em: 29 Out 2009 20:12
- Localização: Fortaleza
Obter a quantidade de linhas num TBrowse
Boa noite colegas.
Como eu posso saber a quantidade das linhas após filtrar dados com TBrowse?
Como eu posso saber a quantidade das linhas após filtrar dados com TBrowse?
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Obter a quantidade de linhas num TBrowse
Explica melhor qual o objetivo, porque o browse não tem filtro e sim o arquivo
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Obter a quantidade de linhas num TBrowse
@ 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
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
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Obter a quantidade de linhas num TBrowse
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Obter a quantidade de linhas num TBrowse
O exemplo mostrado não é para TBrowse
Quantidade de linha no TBrowse é o reccount do dbf ou ordkeycount (indice) do dbf
Quantidade de linha no TBrowse é o reccount do dbf ou ordkeycount (indice) do dbf
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Obter a quantidade de linhas num TBrowse
Você pode usar COUNT TO nCount, ou usar indice temporário como filtro, o total de registros seria o ordkeycountricardo-barros escreveu:Boa noite colegas.
Como eu posso saber a quantidade das linhas após filtrar dados com TBrowse?
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() )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
ricardo-barros
- Usuário Nível 3

- Mensagens: 104
- Registrado em: 29 Out 2009 20:12
- Localização: Fortaleza
Obter a quantidade de linhas num TBrowse
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.
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
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() )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Obter a quantidade de linhas num TBrowse
O TBrowse não sabe o número de linhas que vai apresentar, ele é dinâmico e depende da fonte de dados.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.
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.
-
ricardo-barros
- Usuário Nível 3

- Mensagens: 104
- Registrado em: 29 Out 2009 20:12
- Localização: Fortaleza
Obter a quantidade de linhas num TBrowse
Neste caso eu gostaria de saber se é possível, após a exibição do TBrowse, informar se pelo menos um registro foi exibido.Quando precisar apresentar uma linha, ele requisita a fonte, se acabou, não mostra e pronto.
Obter a quantidade de linhas num TBrowse
Somente se você criar e gerenciar o Browser derivado de TBrowse. Veja por exemplo esse browser no fontes do SDBU.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.
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

