DBEDIT com filtro
Moderador: Moderadores
DBEDIT com filtro
Boa Noite!!!!
Estou com dificultade de fazer o seguinte, preciso estabelecer um filtro no Dbedit Ex: tenho um banco com os seguintes campos:
periodo, lote , Dat_lanc, valor, Codigo
1006 101 xx/05/10 12,00 100
1005 100 xx/06/10 11,00 102
1006 101 xx/06/10 11,00 105
1006 101 xx/06/10 11,00 105
preciso que ele programa me mostre na Tela o todos os lancamento do lote 100,
é possivel isso fazer com o DEdit? Como? a outra maneira de fazer sem o Dbedit?
Estou com dificultade de fazer o seguinte, preciso estabelecer um filtro no Dbedit Ex: tenho um banco com os seguintes campos:
periodo, lote , Dat_lanc, valor, Codigo
1006 101 xx/05/10 12,00 100
1005 100 xx/06/10 11,00 102
1006 101 xx/06/10 11,00 105
1006 101 xx/06/10 11,00 105
preciso que ele programa me mostre na Tela o todos os lancamento do lote 100,
é possivel isso fazer com o DEdit? Como? a outra maneira de fazer sem o Dbedit?
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: DBEDIT COM FILTRO
Olá!
Creio que não será difícil fazer um filtro como o que você deseja. Só não sei se será possível usando a função DBEdit(), sem ter que usar um Set Filter, o que não vejo como boa prática.
Não sei qual versão do Clipper você utiliza. Se for a 5.3, existe a função OrdScope() que, dependendo do índice ativo, pode determinar uma faixa da tua tabela a ser manipulada pelo DBEdit() ou TBrowse().
Se for 5.2 e dependendo do índice ativo, poderá usar um TBrowse com as rotinas do Straley (use a busca do fórum) que fazem o papel do OrdScope().
Por fim, mesmo sem saber se é o teu desejo ou se existe a possibilidade, recomendo a migração da tua aplicação para o ambiente [x]Harbour.
Creio que não será difícil fazer um filtro como o que você deseja. Só não sei se será possível usando a função DBEdit(), sem ter que usar um Set Filter, o que não vejo como boa prática.
Não sei qual versão do Clipper você utiliza. Se for a 5.3, existe a função OrdScope() que, dependendo do índice ativo, pode determinar uma faixa da tua tabela a ser manipulada pelo DBEdit() ou TBrowse().
Se for 5.2 e dependendo do índice ativo, poderá usar um TBrowse com as rotinas do Straley (use a busca do fórum) que fazem o papel do OrdScope().
Por fim, mesmo sem saber se é o teu desejo ou se existe a possibilidade, recomendo a migração da tua aplicação para o ambiente [x]Harbour.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Re: DBEDIT COM FILTRO
Ola colega alxsts, vc poderia demonstrar talvez através de um código simplificado para melhor entendimento de sua explanação.
Sds..
Sds..
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: DBEDIT COM FILTRO
Segue um exemplo bem simples usando o parâmetro WHILE do INDEX ON:
Para teste eu criei um DBF (ARQUIVO.DBF) com a mesma estrutura e registros que está na mensagem do Mano.
Abraços,
Código: Selecionar todos
Clear
Set Date British
Set Century On
Use ARQUIVO New
Index on lote to Ind1
Set Index To Ind1
DO WHILE .T.
Go Top
KEYB CHR(27)
DBEdit(04,01,23,78)
cLote:=SPAC(3)
@ 02,12 Say "Entre com o Numero do Lote:" Get cLote
Read
If Lastkey()=27
Exit
Endif
@ 04,12 SAY "Criando Arquivo Temporario..."
Seek cLote
Index on lote To Ind_tmp WHILE (lote=cLote)
Set Index To Ind_tmp
Go Top
DBEdit(04,01,23,78)
Set Index To Ind1
ENDDO
CLOSE DATA
RETUAbraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Re: DBEDIT COM FILTRO
Entendi Toledo funcionou certinho, mas por exemplo ficaria muito mais complexo para fazer isso a medida q se digita?
Sds.
Sds.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
DBEDIT COM FILTRO
ok, consegui, com o codigo postado pelo Toledo, era bem isso que eu queria, muito obrigado!!!!
porem, mais uma pergunta, eu consigo fazer com que ele some os valores dos codigos iguais?
porem, mais uma pergunta, eu consigo fazer com que ele some os valores dos codigos iguais?
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: DBEDIT COM FILTRO
Fladimir, dê uma olhada neste tópico:fladimir escreveu:ficaria muito mais complexo para fazer isso a medida q se digita?
https://pctoledo.org/forum/viewto ... f=1&t=9295
Você pode usar o comando SUM para somar os valores, por exemplo:Mano escreveu:eu consigo fazer com que ele some os valores dos codigos iguais?
Coloque o código abaixo logo após a linha 20 (Set Index To Ind_tmp) do meu código da mensagem anterior:
Código: Selecionar todos
nSoma:=0
SUM ARQUIVO->valor TO nSoma WHILE (lote=cLote)
@ 24,36 SAY "Soma...: "+TRANS(nSoma,"@E 999,999.99")Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
DBEDIT com filtro
Olá Srs
Minha solicitação de ajuda também está relacionada à usar o filtro no Dbedit, por isto achei prudente não criar um novo tópico e dar continuidade neste.
O que ocorre que possuo arquivos que estão relacionados (SET RELATION).
Tenho um arquivo principal de ALUNOS e que possui um campo de STATUS, e o arquivo que visualizo no Dbedit é o MOVTO que está relacionado com ALUNOS.
O problema é que preciso visualizar este arquivo MOVTO no Dbedit, porém apenas os registros que atendem uma certa situação de STATUS do arquivo de ALUNOS.
Alguma sugestão de como fazer ?
Agradeço a ajuda.
Minha solicitação de ajuda também está relacionada à usar o filtro no Dbedit, por isto achei prudente não criar um novo tópico e dar continuidade neste.
O que ocorre que possuo arquivos que estão relacionados (SET RELATION).
Tenho um arquivo principal de ALUNOS e que possui um campo de STATUS, e o arquivo que visualizo no Dbedit é o MOVTO que está relacionado com ALUNOS.
O problema é que preciso visualizar este arquivo MOVTO no Dbedit, porém apenas os registros que atendem uma certa situação de STATUS do arquivo de ALUNOS.
Alguma sugestão de como fazer ?
Agradeço a ajuda.
Rogério "Homer"
- acelconsultoria
- Usuário Nível 3

- Mensagens: 231
- Registrado em: 10 Jan 2006 17:05
- Localização: Itápolis-SP
DBEDIT com filtro
Aí é complicado.
Se você tem um banco de dados "A" que está relacionado a "B", quer abrir um tabela (DBEDIT) do banco "B", mas filtrando uma condição que só pode ser testada em "A", eu iria sugerir você a criar um banco de dados "C", temporário, para armazenar a informação já devidamente filtrada juntando "A" e "B".
Fora isso, não sei se funciona criar um índice temporário, colocando uma condição baseada no banco de dados relacionado externamente.
Se você tem um banco de dados "A" que está relacionado a "B", quer abrir um tabela (DBEDIT) do banco "B", mas filtrando uma condição que só pode ser testada em "A", eu iria sugerir você a criar um banco de dados "C", temporário, para armazenar a informação já devidamente filtrada juntando "A" e "B".
Fora isso, não sei se funciona criar um índice temporário, colocando uma condição baseada no banco de dados relacionado externamente.
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Consultoria e Projetos
-------------------------------------------------------
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DBEDIT com filtro
DbEdit() é ruim
SET RELATION é ruim.
Filtro é ruim.
Pode acrescentar macro, que também é ruim, mas talvez não no caso de SET FILTER.
De preferência sem depender de variável, senão fica pior ainda.
Exemplo:
SET RELATION é ruim.
Filtro é ruim.
Pode acrescentar macro, que também é ruim, mas talvez não no caso de SET FILTER.
De preferência sem depender de variável, senão fica pior ainda.
Exemplo:
Código: Selecionar todos
cFiltro := [movto->Data >= Ctod(] + Dtoc( dDataInicial ) + [)]
cFiltro += [ .AND. movto->Data <= Ctod(] + Dtoc( dDataFinal ) + [)]
cFiltro += [ .AND. ]
cFiltro += [( ]
cFiltro += [ aluno->Status == "] + cStatus1 + ["]
cFiltro += [ .OR. aluno->Status == "] + cStatus2 + [" ]
cFiltro += [ )]
cFiltro += [ .AND. outro->Outro =="] + cOutro + [""]
SET FILTER TO &( cFiltro )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
