Pessoal,
A base de ceps esta meio bagunçada, vira e mexe pegamos algum problema. O ultimo que peguei é que a tabela de cidades só tinha 800 cidades, enquanto a base de ceps tem algo próximo a 5.600 cidades.

Bom, fiz um job que alimenta a tabela de cidades baseado na base de ceps:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static void createAddressCityFromZipCodes(Args _args)
{
    AddressZipCode                  addressZipCode;
    AddressCityTable_BR             addressCityTable_BR, localAaddressCityTable_BR;
    RecordInsertList                recordInsert = new RecordInsertList(tableNum(AddressCityTable_BR));
    ;
 
    while select City, State, CountryRegionId from addressZipCode group by city, State, CountryRegionId
      notexists join addressCityTable_BR
      where addressZipCode.City == addressCityTable_BR.City
    {
        localAaddressCityTable_BR.City          = addressZipCode.City;
        localAaddressCityTable_BR.CityAlias     = addressZipCode.City;
        localAaddressCityTable_BR.StateId       = addressZipCode.State;
        localAaddressCityTable_BR.CountryId     = addressZipCode.CountryRegionId;
        recordInsert.add(localAaddressCityTable_BR);
    }
    recordInsert.insertDatabase();
}

Abraços,
Pichler