Prezados Desenvolvedores e Desenvolvedoras:
Em um "UserForm" tenho dois ComboBox (Estado - Município) que são "populados" com conteúdo de um banco de dados do Access.
Pretendo que o usuário ao selecionar um Estado visualize todas as cidades correspondentes no combo Município.
Estou com dificuldades na cláusula SQL.
Escrevi o seguinte código:
Private Sub PopulaMunicipio2()
'Estabelece ligação com banco de dados "QD":
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Open "Data Source=QD" 'Abertura da ligação
'Contagem dos registros:
Dim varsql As String
varsql = "SELECT Count(Municipio) FROM tblMunicipios WHERE ID_UF = 'SP'"
Dim cmd As New ADODB.Command
cmd.CommandText = varsql
cmd.ActiveConnection = con
Dim rst As ADODB.Recordset
Set rst = cmd.Execute
num_registros = rst.Fields(0)
rst.Close
'Obtenção dos valores:
varsql = "SELECT * FROM tblMunicipios WHERE ID_UF = 'SP'"
Dim cmd2 As New ADODB.Command
cmd2.CommandText = varsql
cmd2.ActiveConnection = con
Set rst = cmd2.Execute
num_campos = rst.Fields.Count
cboAmbito.ColumnCount = num_campos
Dim lista()
ReDim lista(num_registros - 1, num_campos - 1)
rst.MoveFirst
registro = 0
CAMPO = 0
While Not rst.EOF
For CAMPO = 0 To num_campos - 1
lista(registro, CAMPO) = rst.Fields(CAMPO)
Next
registro = registro + 1
rst.MoveNext
Wend
'Transferência dos valores para a cboAmbito:
cboMunicipio.List = lista()
frmFeriados.cboMunicipio.ColumnCount = 2
frmFeriados.cboMunicipio.ColumnWidths = 0
con.Close 'Fecho da ligação
End Sub
Se fosse apenas um Estado como no exemplo acima estaria tudo certo. Ocorre que são 26 + o Distrito Federal.
Poderia usar SELECT CASE. Mais ai o código não fica legal. Imagina quando tiver que usar um universo de dados maior. Todos os município, por exemplo.
Assim estou tentando mudar a instrução SQL para, no lugar do "ID_UF = 'SP', por exemplo, fazer uso de uma variável.
O valor da variável consigo obter sem problemas.
O que eu não consigo é incluir o valor da variável na instrução SQL. Aliás, até já consegui, mas o retorno da linha "num_campos = rst.Fieldos.Count" dá erro. Zero, nulo ...
Agradeço a instrução e ajuda que me enviarem.
Muito obrigado.