Clipper On Line • Ver Tópico - DBEDIT com filtro

DBEDIT com filtro

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

DBEDIT com filtro

Mensagempor Mano » 24 Ago 2010 22:46

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?
Mano
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 11
Data de registro: 08 Jan 2010 10:18
Cidade/Estado: parana
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: DBEDIT COM FILTRO

Mensagempor alxsts » 24 Ago 2010 23:56

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Re: DBEDIT COM FILTRO

Mensagempor fladimir » 25 Ago 2010 01:12

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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Re: DBEDIT COM FILTRO

Mensagempor Toledo » 25 Ago 2010 07:38

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

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 de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Re: DBEDIT COM FILTRO

Mensagempor fladimir » 25 Ago 2010 08:18

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.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

DBEDIT COM FILTRO

Mensagempor Mano » 25 Ago 2010 19:27

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?
Mano
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 11
Data de registro: 08 Jan 2010 10:18
Cidade/Estado: parana
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: DBEDIT COM FILTRO

Mensagempor Toledo » 26 Ago 2010 07:20

fladimir escreveu:ficaria muito mais complexo para fazer isso a medida q se digita?


Fladimir, dê uma olhada neste tópico:
http://www.pctoledo.com.br/forum/viewtopic.php?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:
  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 de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

DBEDIT com filtro

Mensagempor rogerfm » 06 Jul 2017 14:52

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 de usuário

rogerfm
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 4
Data de registro: 06 Jul 2017 14:40
Cidade/Estado: São Paulo/SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

DBEDIT com filtro

Mensagempor acelconsultoria » 07 Jul 2017 00:34

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 de usuário

acelconsultoria
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 231
Data de registro: 10 Jan 2006 16:05
Cidade/Estado: Itápolis-SP
Curtiu: 6 vezes
Mens.Curtidas: 6 vezes

DBEDIT com filtro

Mensagempor JoséQuintas » 07 Jul 2017 02:43

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:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro