PREENCHER COMBO COM DADOS TABELA

NETOCAZUZA 13/07/2013 19:13:37
#425986
Adicionei um objeto data no meu código, e simplesmente vinculei o mesmo a uma combo. Já está aparecendo o primeiro dado cadastrado lá na combo e você consegue avançar para os próximos registros usandos as setinhas do objeto Data.
Gostaria de saber como faço para adicionar todos os registros dessa tabela ao combo. Já tá aparecendo, porém um a um, e eu quero que a lista seja preenchida. Sei o que eu quero, mas não consigo a sintaxe. é mais ou menos isso:
Form Load
Combo1.Additem = [Ô]Campo 1 da minha tabela[Ô]
Então se eu tiver 10 registros nessa tabela, a combo vai ser preenchida pra eu escolher um deles.
Na [Ô]unha[Ô] eu faria assim:
combo1.additem = [Ô]item 1[Ô]
combo1.additem = [Ô]item 2[Ô]
.
.
.
Assim sucessivamente.
Quero fazer isso com uma coluna da minha tabela, com DAo (data1)
F001E 13/07/2013 19:33:41
#425989
Na unha ficaria assim....
Sql = [Ô][Ô]
Sql = Sql & [Ô] SELECT * FROM SUATABELA[Ô]
Set Tbl = Banco.OpenResultset(Sql, rdOpenStatic)
Do Until Tbl.EOF
cmbempresa.AddItem Tbl!Codigo
Tbl.MoveNext
Loop
Tbl.Close
NETOCAZUZA 13/07/2013 21:40:33
#425990
To colocando exatamente assim, e tá dando um erro run-time 424 Object required:
e tá parando nessa linha set tbl = banco.openresutset(sql, rdopenstatic)
Já tentei com banco, e com o nome do meu bd, e sempre dá o mesmo erro. Onde posso estar errando/?
OMAR2011 14/07/2013 11:47:01
#426000
Dao é muito antigo.Mas vamos lá.
Está com Dao e Ado

Dim oldws As Workspace
Dim db As DAO.Database
Dim Tb As DAO.Recordset
Dim tb1 As ADODB.Recordset
Dim Bd As ADODB.Connection

Private Sub Form_Load()
Set Bd = New ADODB.Connection
Set tb1 = New ADODB.Recordset

Bd.CursorLocation = adUseClient

Set oldws = DBEngine.Workspaces(0)
Set db = oldws.OpenDatabase(App.Path & [Ô]\Tabelas2.mdb[Ô], False, False)
Set Tb = db.OpenRecordset([Ô]SELECT * FROM Parcelas [Ô], dbOpenDynaset)

Do Until Tb.EOF
Cbo1.AddItem Tb!Vencimento
Tb.MoveNext
Loop
Tb.Close

Bd.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Tabelas2.mdb[Ô]
tb1.Open [Ô]SELECT * FROm Parcelas [Ô], Bd
Do While Not tb1.EOF
Cbo2.AddItem Format([Ô][Ô] & tb1!Vencimento, [Ô]MM/DD/yyyy[Ô])
tb1.MoveNext
Loop
tb1.Close
End Sub
NETOCAZUZA 14/07/2013 12:33:28
#426001
Não deu certo OMAR. Fica dando variável ou tipo não definido o tempo todo, nas declarações ou no Load do form. Uso DAO, mas até tentei declarar ADO lá nas minhas referências pra ver se funciona, mas nem assim. O problema é que é muito código pra fazer pouca coisa.
Veja bem, se com meu código enxuto, já estou lendo o primeiro registro da tabela, que já tá aparecendo no combo, na verdade eu só precisava da sintaxe:
Do until Data1.EOF
Combo.additem
data1.movenext
loop
Simples assim, avançando nos campos com o objeto data mesmo, sem workspace, nem declarações adicionais. Sei que não está funcionando porque devo estar referenciando alguma coisa que não tem no projeto, então quanto menos código melhor. O meu objeto data já tá lendo o bd, então com essa leitura mesmo, vamos jogar esses dados na combo. Será que é possível?
OMAR2011 14/07/2013 16:50:41
#426005
Não Netocazuza.Este código não entra Objeto Data.
Não precisa usar Obejto Data Control.
Basta colocar combox com os nomes do código e executar o programa.

[txt-color=#e80000]Do until Data1.EOF
Combo.additem
data1.movenext
loop[/txt-color] Retira isto.

Do jeito que postei.
NETOCAZUZA 14/07/2013 17:24:51
#426006
Não tem isso não. Postei exatamente como tú colocou e não rodou, deu um monte de erro, que eu acertei, mas mesmo assim não rodou. Esse código é só um exemplo de como eu gostaria que fosse. Sei que o teu código deve funcionar, em outras situações, mas pra mim, com o projeto pronto, não roda, é isso que to falando. Esse código que eu postei foi a forma como eu gostaria que fosse, mas não encontro a sintaxe exata.
Não quero fazer esse monte de declarações pra uma coisa pequena.
O form tá pronto, com um objeto data lendo o banco de dados. Lê, mas fica parado no primeiro registro do código, e quando eu quero avançar para o próximo, clico na setinha (MOVENEXT), simples assim, e o novo registro aparece no combo.
O que eu queria era uma forma de fazer esse loop e carregar todas as opções de uma vez. Com esse loop que usei de exemplo, queria que o código fizesse o trabalho da setinha avançando para o próximo registro, indo do começo até o fim do arquivo, e a cada registro encontrado, seria acrescentado na lista do combo (combo1.additem) um simples código como esse do until que eu tentei mostrar com exemplo.
CHEGOU NO FINAL DO ARQUIVO?
Vá se movendo pelos registros, e adicionando cada registro encontrado ao combo...
LOOPING
MARCELO.TREZE 16/07/2013 19:26:43
#426161
Resposta escolhida
bom codigo final, se está usando uma data control é só fazer assim

Data1.Recordset.MoveFirst
Do While Not Data1.Recordset.EOF
Combo1.AddItem Data1.Recordset.Fields([Ô]author[Ô])
Data1.Recordset.MoveNext
Loop

NETOCAZUZA 23/07/2013 16:52:25
#426428
Exatamente isso MARCELO-TREZE!
Tópico encerrado , respostas não são mais permitidas