Clipper On Line • Ver Tópico - 2 Ordens em um Mesmo Indice

2 Ordens em um Mesmo Indice

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

2 Ordens em um Mesmo Indice

Mensagempor guanabara » 29 Mar 2013 11:47

La vai eu de novo com minhas dúvidas, tenho o código abaixo que faz uma pesquisa no banco de dados e retorna os valores em uma grid, funciona perfeitamente, só que quando faço uma busca por Estado (UF), gostaria que as cidades desta UF ficassem em ordem alfabética, alguém pode me ajudar...

FUNCTION Busqueda

Public RetVal := .F. , nRecCountB := 0, cIndex := "", nVal := 0
Public cProcura:=GetProperty("WIN_1","text_1","Value")     // DECLARA A VARIAVEL E GRAVA O VALOR NA VARIAVEL  //

nVal:=GetProperty("Win_1","ComboMudaPesq","Value")

   If Empty ( Win_1.Text_1.Value )
      Return
   EndIf

   Win_1.Grid_1.DeleteAllItems
   Win_1.StatusBar.Item(1) := ' Aguarde...... Localizando Registros... Podendo Demorar... '
   WAIT WINDOW "Aguarde..... Localizando Registros... Podendo Demorar..."  NOWAIT


   Do Case
   
      Case nVal = 1
     
       cIndex := "DBF->MUN"
       dbf->( OrdSetFocus(1) )       
           
     
      Case nVal = 2

       cIndex := "DBF->UF"
        OrdSetFocus(2)   
         
   Endcase
   
   
DBSEEK(AllTrim(cProcura)) 

If FOUND()     
   
Do While &cIndex = cProcura

       nRecCountB++
       
      If NrecCountB < 1000
         Win_1.Grid_1.AddItem ( { DBF->NB , DBF->NOME, DBF->MUN, DBF->UF, DBF->CPF, DBF->DDD, DBF->TEL, DBF->DTIND, DBF->NASC } )         
         Endif
     
    Skip
   
       
  EndDo

       WAIT CLEAR
         
         Win_1.StatusBar.Item(1) := AllTrim(Str(nRecCountB)) + ' - Registros Localizados com Sucesso !!! Para Gravar em Arquivo, Clique no Botão Exportar.'
      MsgInfo( AllTrim(Str(nRecCountB)) + ' - Registros   Localizados   com   Sucesso !!!   ' + Chr(13) +        ' Para Gravar em Arquivo, Clique no Botão Exportar.', [Registros Localizados])
     Win_1.BotaoExportar.Enabled:=.T.
     
Else
     
          Win_1.StatusBar.Item(1) := ' Registros não Localizados'
         WAIT CLEAR
         MsgStop( ' R e g i s t r o s   n ã o    L o c a l i z a d o s !!! ' + Chr(13) + ;
                  ' Faça uma nova pesquisa para localizar o que deseja.', [Registros não Localizados])
                 
         Win_1.BotaoExportar.Enabled     :=.F.
         Win_1.BotaoPasta.Enabled        :=.F.                              // DESABILITA O BOTAO DA PASTA    //
         
                 
EndIf

Return
guanabara
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 03 Mar 2013 17:33
Cidade/Estado: Aracatuba-SP
Curtiu: 35 vezes
Mens.Curtidas: 2 vezes

2 Ordens em um Mesmo Indice

Mensagempor Jairo Maia » 30 Mar 2013 12:28

Olá,

Não tenho certeza se é a melhor forma, mas veja se o exemplo abaixo ajuda:

aTmpDados := {}

Do While &cIndex = cProcura

  NrecCountB++

  If NrecCountB <= 1000

    AaDd( aTmpDados, { DBF->NB , DBF->NOME, DBF->MUN, DBF->UF, DBF->CPF, DBF->DDD, DBF->TEL, DBF->DTIND, DBF->NASC } )

  Endif
     
  Skip
       
EndDo

ASort( aTmpDados, Nil, Nil, { |x,y| x[3] < y[3] } )

For i = 1 To Len( aTmpDados )

  Win_1.Grid_1.AddItem ( aTmpDados[ i ] )

Next
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

2 Ordens em um Mesmo Indice

Mensagempor guanabara » 30 Mar 2013 13:14

Jairo, nem acredito, funcionou perfeitamente, antes de inserir suas mudanças eu li o código várias vezes e não entendi muita coisa e continuo não entendendo.. hehehe... Imaginava que eu havia explicado errado, sabe porque, eu pensava que para isso funcionar tinha que fazer alguma mudança aqui na criação do *.CDX

     dbf->(OrdCreate("SGF.cdx" , "UF"        , "dbf->uf"   ,{|| dbf->uf  } )) 


tipo colocando o Mun depois do uf dbf->(OrdCreate("SGF.cdx" , "UF" , "dbf->uf" ,{|| dbf->uf, mun } ))

ou assim: dbf->( OrdSetFocus(1, 2) )

pois o código que uso para visualizar uso o mesmo para exportar, como ainda não entendo de Vetor estou tendo dificuldades na exportação....
guanabara
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 03 Mar 2013 17:33
Cidade/Estado: Aracatuba-SP
Curtiu: 35 vezes
Mens.Curtidas: 2 vezes

2 Ordens em um Mesmo Indice

Mensagempor carlos_dornelas » 30 Mar 2013 23:51

Guanabara,

Eu simplesmente criaria o indice +- assim INDEX ON UF+MUN TO IND.NTX...

Antonio Carlos
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 392
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 10 vezes

2 Ordens em um Mesmo Indice

Mensagempor guanabara » 31 Mar 2013 22:15

carlos_dornelas escreveu:Guanabara,

Eu simplesmente criaria o indice +- assim INDEX ON UF+MUN TO IND.NTX...

Antonio Carlos


Funfou, deu certo, obrigado mesmo Carlos, valeu Jairo pela disposição, ficou assim o código:

 INDEX ON UF  + MUN  TAG 2 TO SGF
:))
guanabara
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 03 Mar 2013 17:33
Cidade/Estado: Aracatuba-SP
Curtiu: 35 vezes
Mens.Curtidas: 2 vezes

2 Ordens em um Mesmo Indice

Mensagempor Jairo Maia » 01 Abr 2013 08:04

carlos_dornelas escreveu:Eu simplesmente criaria o indice +- assim INDEX ON UF+MUN TO IND.NTX...
Tão simples e eu compliquei tanto... hehe.

Guanabara, isto resolve também sua dúvida para exportar os dados? Mais acima você disse estar com dificuldade, isto foi apenas em relação a minha sugestão? Agora resolveu?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

2 Ordens em um Mesmo Indice

Mensagempor guanabara » 01 Abr 2013 11:30

Resolveu sim, não precisei mudar nada no código da exportação, permaneceu o mesmo.... Fica valendo sua dica para quem precisar ordenar por coluna especifica da grid sem alterar o índice... Jairo, agradeço mesmo assim...
guanabara
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 03 Mar 2013 17:33
Cidade/Estado: Aracatuba-SP
Curtiu: 35 vezes
Mens.Curtidas: 2 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 17 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