Página 1 de 1

2 Ordens em um Mesmo Indice

Enviado: 29 Mar 2013 11:47
por guanabara
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...

Código: Selecionar todos

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

2 Ordens em um Mesmo Indice

Enviado: 30 Mar 2013 12:28
por Jairo Maia
Olá,

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

Código: Selecionar todos

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

2 Ordens em um Mesmo Indice

Enviado: 30 Mar 2013 13:14
por guanabara
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

Código: Selecionar todos

     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....

2 Ordens em um Mesmo Indice

Enviado: 30 Mar 2013 23:51
por carlos_dornelas
Guanabara,

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

Antonio Carlos

2 Ordens em um Mesmo Indice

Enviado: 31 Mar 2013 22:15
por guanabara
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:

Código: Selecionar todos

 INDEX ON UF  + MUN  TAG 2 TO SGF
:))

2 Ordens em um Mesmo Indice

Enviado: 01 Abr 2013 08:04
por Jairo Maia
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?

2 Ordens em um Mesmo Indice

Enviado: 01 Abr 2013 11:30
por guanabara
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...