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