Página 1 de 1

Tabela de Cidades e UF

Enviado: 18 Out 2018 18:49
por asimoes
Prezados,

Alguém teria alguma tabela de cidade + UF para popular 2 combos da hwgui, um é UF e outro Cidade, com todas as cidades referente a Uf selecionada.

Tabela de Cidades e UF

Enviado: 18 Out 2018 19:26
por alxsts
Olá!

Uma pesquisa básica no Google mostra algumas opções. A mais atualizada que encontrei foi de 20/06/2016 e contem o script SQL Server para criar e dados para popular tabelas de País, Estados e Cidades do Brasil: SQL completo de todas as cidades e estados do Brasil.

Este post deveria estar na Seção de tabelas em geral

Tabela de Cidades e UF

Enviado: 18 Out 2018 19:34
por asimoes
Alexandre,

Obrigado pela dica,

Acabei achando uma planilha excel do ibge, baixei e fiz um dbf, pode virar até uma hashtable

Tabela de Cidades e UF

Enviado: 18 Out 2018 23:01
por JoséQuintas
Não entendi.
Quer rotina ou informações?

https://github.com/JoseQuintas/sefazcla ... _cidade.ch

Tabela de Cidades e UF

Enviado: 06 Dez 2019 12:55
por malcarli
Boa tarde, estou mudando o meu sistema e irei trocar vários arquivos pelas chs da classe sefaz

Como faço por exemplo para carregar no nome do estado em um combo?

fiz assim mas não funcionou

Código: Selecionar todos

DEFINE COMBOBOX Cb_TransUf
               ROW    410
               COL    10
               WIDTH  200
               HEIGHT 110
               TOOLTIP     "Uf do Veículo"
            ITEMS   SEFAZ_UF[1]
            VALUE  1
        END COMBOBOX
obrigado

Tabela de Cidades e UF

Enviado: 07 Dez 2019 11:08
por sygecom
Post o exemplo completo para ver o que vem preenchido em: SEFAZ_UF[1]

Tabela de Cidades e UF

Enviado: 07 Dez 2019 19:43
por JoséQuintas
O CH da Sefazclass define um array com cidades/países e UFs

Código: Selecionar todos

#define SEFAZ_CIDADE { ;
   { "EX", "000132 ", "AFEGANISTAO" }, ;
A partir daí, pode usar o array como quiser.
Por exemplo:

Código: Selecionar todos

FUNCTION IBGE( UF, Cidade )

   LOCAL aList := SEFAZ_CIDADE

   nPos := AScan( aList, { | e | e[ 1 ] == UF .AND. e[ 3 ] == Cidade } )
   cIbge := iif( nPos == 0, "", aList[ nPos, 2 ] )

   RETURN cIbge

Tabela de Cidades e UF

Enviado: 10 Dez 2019 15:23
por Fernando queiroz
resolvi assim

Código: Selecionar todos

#include "SEFAZ_CIDADE.CH"
#include "SEFAZ_UF.CH"

private aPAIS     	:= {}		 
private aUF     	:= {}
private aMunicipios	:= {}
o que já tem no cadastro ou em um novo cadastro, faz pequisa e carrega o combo

Código: Selecionar todos

		FOR EACH oPAIS IN SEFAZ_CIDADE
			IF oPAIS[1] == "EX"
				AAdd(aPAIS,oPAIS[3])
			ENDIF
		NEXT
		
		FOR EACH oUF IN SEFAZ_UF
			AAdd(aUF,oUF[1])
		NEXT
		
		FOR EACH oCIDADE IN SEFAZ_CIDADE
			IF oCIDADE[1] == mUF
				AAdd(aMunicipios,oCIDADE[3])
			ENDIF
		NEXT
na tela fiz assim

Código: Selecionar todos

   @ 78,376 SAY oLabel14 CAPTION "UF"  SIZE 20,24 
   @ 105,374 GET COMBOBOX oCombo2 VAR nCombo2 ;
        ITEMS aUF  ;
        SIZE 65,24  DISPLAYCOUNT 8 ;
		ON CHANGE {|| oCombo2_onChange( aUF[nCombo2] ),oCombo3:REFRESH() }
após a carga da tela executo

Código: Selecionar todos

	oCombo4:SetItem( Ascan(aPAIS,RTRIM(mPAIS) ) )	
	oCombo2:SetItem( Ascan(aUF,RTRIM(mUF) ) )	
	oCombo3:SetItem( Ascan(aMunicipios,RTRIM(mCIDADE) ) )
quando mudar a UF executo essa rotina

Código: Selecionar todos

***************************************
STATIC FUNCTION oCombo2_onChange( mUF )
***************************************
LOCAL oCIDADE
	DO WHILE .T.
		FOR nI := 1 TO Len(aMunicipios)
			hb_ADel( aMunicipios, nI, .T. )
		NEXT
		IF Len(aMunicipios) <= 0
			EXIT
		ENDIF
	ENDDO
	FOR EACH oCIDADE IN SEFAZ_CIDADE
		IF oCIDADE[1] == mUF
			AAdd(aMunicipios,oCIDADE[3])
		ENDIF
	NEXT
	ThisCAD:oCombo3:SetItem( Ascan(aMunicipios,RTRIM(mCIDADE) ) )
//	nCombo3 := 1
 RETURN( aMunicipios )

Tabela de Cidades e UF

Enviado: 10 Dez 2019 15:56
por JoséQuintas
Cuidado com isto:

Código: Selecionar todos

 FOR nI := 1 TO Len(aMunicipios)
   hb_ADel( aMunicipios, nI, .T. )
NEXT
Poderia ser assim:

Código: Selecionar todos

FOR nCont = Len( aMunicipios ) TO 1 STEP -1
   hb_ADel( aMunicipios, nI, .T. )
NEXT
Na prática:

{ "a", 'b', "c" }

nCont = 1 exclui o A, e o B passa a ser 1
nCont = 2 exclui o C e para, restando o B sem excluir

Mas na prática, se é pra limpar tudo:

Código: Selecionar todos

aMunicipios := {}

Tabela de Cidades e UF

Enviado: 10 Dez 2019 16:14
por JoséQuintas
Esqueci de dizer uma coisa importante:

array é passado automaticamente como referência... MAS.... NÃO É BEM ASSIM.


função( array )
função( @array )

Nos dois casos, se for uma rotina que ALTERA os elementos do array, os dois funcionam
Se a rotina fizer array := {}, só funciona do segundo modo.

O que imagino:
No primeiro caso, os elementos do array são passados por referência, então array := {} não tem mais vínculo com os elementos anteriores.
No segundo caso a variável é passada por referência, então qualquer alteração na variável faz efeito.

Talvez tenha usado o hb_ADel() porque teve esse imprevisto.