PREENCHER COMBO COM ADO
Olá amigos , para aqueles que puderem me ajudar ,agradeço antecipadamente.
Vejam esta situação:
Tenho um projeto , com CONEXÃO ADO, trabalhando em módulo, usando o MDI.
Na tela CADCD (que é meu cadastro principal), quando este form carregar,
Preciso que a minha COMBOGENERO esteja carregada. Esta deve trazer os “gêneros dos Cds†que estão cadastrados em outra tabela.
Como carregar esta combo ?
A minha dificuldade é a intrução sql.
Espero ter sido o mais especÃfico possÃvel.
é que aindo sou novato nesta linguagem.
Obrigado galera!!!
(Obs “ são duas tabelas do mesmo banco de dados )
[S54]
Vejam esta situação:
Tenho um projeto , com CONEXÃO ADO, trabalhando em módulo, usando o MDI.
Na tela CADCD (que é meu cadastro principal), quando este form carregar,
Preciso que a minha COMBOGENERO esteja carregada. Esta deve trazer os “gêneros dos Cds†que estão cadastrados em outra tabela.
Como carregar esta combo ?
A minha dificuldade é a intrução sql.
Espero ter sido o mais especÃfico possÃvel.
é que aindo sou novato nesta linguagem.
Obrigado galera!!!
(Obs “ são duas tabelas do mesmo banco de dados )
[S54]
Segue instrução:
"SELECT nome_do_campo_genero FROM nome_da_tabela_genero"
Estou supondo que você tenha uma tabela de gêneros onde cada gênero está cadastrado uma única vez.
Se não for isso, avise.
"SELECT nome_do_campo_genero FROM nome_da_tabela_genero"
Estou supondo que você tenha uma tabela de gêneros onde cada gênero está cadastrado uma única vez.
Se não for isso, avise.
faça assim
adodc1.recordset.movefirst
sql = "select generos from tabela order by generos"
adodc1.recordsource = sql
do while not adodc1.recordset.eof
combobox.additem adodc1.recordset![Generos]
adodc1.recordset.movenext
loop
'se o adodc1, for uma conexao usada no form.
adodc1.recordset.movefirst
sql = "select * from tabela order by generos"
adodc1.recordsource = sql
adodc1.refresh
do while not adodc1.recordset.eof
combobox.additem adodc1.recordset![Generos]
adodc1.recordset.movenext
loop
adodc1.recordset.movefirst
AGS_Alex,
Se eu fosse vc utilizaria uma DBCombo ou DataCompo para isso... mas se vc realmente quiser utilizar ComboBox, então aà vai um exemplo com utilização de ADO 2.8
Se eu fosse vc utilizaria uma DBCombo ou DataCompo para isso... mas se vc realmente quiser utilizar ComboBox, então aà vai um exemplo com utilização de ADO 2.8
Private Sub Form_Load()
'Estou utilizando neste código ADO 2.8
Dim BD As ADODB.Connection
Dim RS As ADODB.Recordset
Set BD = New ADODB.Connection
Set RS = New ADODB.Recordset
Combo1.Clear
BD.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\NSC\GesCom\GesCom.mdb"
RS.Open "SELECT cmpCODIGO, cmpDESCRICAO FROM Generos ORDER BY cmpDESCRICAO ASC", BD, adOpenKeyset, adLockBatchOptimistic
If RS.RecordCount <> 0 Then
RS.MoveFirst
Do While Not RS.EOF
Combo1.AddItem RS("cmpDESCRICAO")
RS.MoveNext
Loop
End If
End Sub
obrigado pela ajuda pessoal!!!
Só crescemos profissionalmente, compartilhando esperiências e principalmente, perguntar sempre !!
Valeu!!!!
Só crescemos profissionalmente, compartilhando esperiências e principalmente, perguntar sempre !!
Valeu!!!!
Deu tudo certo amigo?
Se sim, por favor encerre o tópico.
Se sim, por favor encerre o tópico.
AGS_Alex
Você pode declarar uma rotina Genérica no Módulo, assim qualquer preenchimento de Combo ou ListBox ficaria acessÃvel.
Em um Módulo:
O Conexão1 é o Connection, que deve estar ativo no momento da inclusão, altere para o nome que você tiver no seu Projeto
O cursor adOpenForwardOnly e adLockReadyOnly são os mais rápidos, já que o adOpenForwardOnly é o mais rápido mas não suporta que se retorne, Previous, só que para preenchimento de ListBox e ComboBox isto não é necessário.
Os parà ¢metros pCampoChave, pCampoTexto e pTabela são os Campos e a Tabela que deverá ser a Fonte dos Dados.
Teste e veja se resolve a sua dúvida.
[s95]
Você pode declarar uma rotina Genérica no Módulo, assim qualquer preenchimento de Combo ou ListBox ficaria acessÃvel.
Em um Módulo:
Public Sub PreencherLista(ByRef pLista As Control, pTabela As String, pCampoChave As String, pCampoTexto As String)
' Declaração do RecordSet e Instanciamento
Dim plRecordset As ADODB.Recordset
Set plRecordset = New ADODB.Recordset
On Error GoTo errLista
gSQL = "Select " & pCampoChave & ", " & pCampoTexto & " from " & pTabela & " order by " & pCampoTexto
plRecordset.Open gSQL, Conexão1, adOpenForwardOnly, adLockReadyOnly
With pLista
.Clear
Do While Not plRecordset.EOF
.AddItem plRecordset(1).Value
.ItemData(.NewIndex) = plRecordset(0).Value
plRecordset.MoveNext
Loop
End With
'Fechamento e Destruição do RecordSet
plRecordset.Close
Set plRecordset = Nothing
Exit Sub
errLista:
Erro "preenchimento da lista"
Exit Sub
End Sub
O Conexão1 é o Connection, que deve estar ativo no momento da inclusão, altere para o nome que você tiver no seu Projeto
O cursor adOpenForwardOnly e adLockReadyOnly são os mais rápidos, já que o adOpenForwardOnly é o mais rápido mas não suporta que se retorne, Previous, só que para preenchimento de ListBox e ComboBox isto não é necessário.
Os parà ¢metros pCampoChave, pCampoTexto e pTabela são os Campos e a Tabela que deverá ser a Fonte dos Dados.
Teste e veja se resolve a sua dúvida.
[s95]
Tópico encerrado , respostas não são mais permitidas