DBEDIT com filtro

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Mano
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 08 Jan 2010 11:18
Localização: parana

DBEDIT com filtro

Mensagem por Mano »

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?
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: DBEDIT COM FILTRO

Mensagem por alxsts »

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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: DBEDIT COM FILTRO

Mensagem por fladimir »

Ola colega alxsts, vc poderia demonstrar talvez através de um código simplificado para melhor entendimento de sua explanação.

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.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: DBEDIT COM FILTRO

Mensagem por Toledo »

Segue um exemplo bem simples usando o parâmetro WHILE do INDEX ON:

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
RETU
Para teste eu criei um DBF (ARQUIVO.DBF) com a mesma estrutura e registros que está na mensagem do Mano.

Abraç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
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: DBEDIT COM FILTRO

Mensagem por fladimir »

Entendi Toledo funcionou certinho, mas por exemplo ficaria muito mais complexo para fazer isso a medida q se digita?

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.
Mano
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 08 Jan 2010 11:18
Localização: parana

DBEDIT COM FILTRO

Mensagem por Mano »

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?
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: DBEDIT COM FILTRO

Mensagem por Toledo »

fladimir escreveu:ficaria muito mais complexo para fazer isso a medida q se digita?
Fladimir, dê uma olhada neste tópico:
https://pctoledo.org/forum/viewto ... f=1&t=9295
Mano escreveu:eu consigo fazer com que ele some os valores dos codigos iguais?
Você pode usar o comando SUM para somar os valores, por exemplo:

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")
Abraç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
Avatar do usuário
rogerfm
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 06 Jul 2017 14:40
Localização: São Paulo/SP

DBEDIT com filtro

Mensagem por rogerfm »

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.
Rogério "Homer"
Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

DBEDIT com filtro

Mensagem por acelconsultoria »

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.
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DBEDIT com filtro

Mensagem por JoséQuintas »

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:

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/
Responder