• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

set#1

[RESOLVIDO] Carregar Combo box

8 mensagens neste tópico

Estou a tentar preencher uma combo box com dados de outra tabela, ou seja, ir buscar dados numa tabela e guardar num campo noutra tabela.

Este codigo encontrei e tentei implementar mas da-me

Erro # 3024 Could not find file 'o caminho'

Ja tentei ver solucoes mas nada. Podem me ajudar...e sorry, 'e urgente!!

Este codigo esta num Modulo e chamo-o depois no formulario pretendido

Public Sub CarregaControle(Controle As Object, Tabela, CodigoCampo, DescricaoCampo As String)

On Error GoTo Erro

Dim rs As Recordset                     'Declara um recorset
Dim Sql As String                       'Declara uma string para a consulta SQL
Dim db As Database                      'Declara uma base de dados
Dim cnn As New Connection        'Declara a coneccao da BD
'cnn.Open "Provider = Microsoft.Jet.OLEDB.3.51;Data Source = D:O caminho\Competencias.mdb;"

Controle.Clear
'limpa o controle
Sql = ""
'limpa a string SQL
'Define a string SQL para selecionar os registros
Sql = "SELECT " & CodigoCampo & ", " & DescricaoCampo & " FROM " & Tabela
'abre o recorddset com os dados retornados
Set db = OpenDatabase("O caminho\Competencias.mdb;")

Set rs = db.OpenRecordset(Sql, dbOpenForwardOnly, dbSQLPassThrough)

With rs
Do Until .EOF 'percorre o recordset ate o fim

  'inclui os itens correspondentes
  Controle.AddItem rs(DescricaoCampo)
  Controle.ItemData(Controle.NewIndex) = rs(CodigoCampo)
  .MoveNext

  Loop
  'fecha o recordset
  .Close
End With

Set rs = Nothing 'libera o recordset
Exit Sub

Erro: 'se houver erros faz o tratamento

If Err.Number <> 0 Then
  MsgBox ("Erro #: " & Str(Err.Number) & Err.Description)
  Exit Sub
End If

End Sub

Vao me desculpar, nao esta funcionar o "Inserir Codigo" em Visual Basic

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tal como o erro te indica, tens que alterar esta parte:

'cnn.Open "Provider = Microsoft.Jet.OLEDB.3.51;Data Source = D:O caminho\Competencias.mdb;"

para esta:

cnn.Open "Provider = Microsoft.Jet.OLEDB.3.51;Data Source =" app.path & "\Competencias.mdb;"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

cnn.Open "Provider = Microsoft.Jet.OLEDB.3.51;Data Source =" app.path & "\Competencias.mdb;"

Compile error: Expected: end of statement e aponta no app

Se deixo como estava o caminho todo da tambem erro:

Erro# -2147467259 Unrecognized database format

E agora.... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estais a utilizar qual a versão do visual basic e a base de dados está gravada em versão do access.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estais a utilizar qual a versão do visual basic e a base de dados está gravada em versão do access.

Microsoft Visual Basic 6.0

Access 2003

Se poder ter uma solucao mais simples da que estou a usar tambem pode ser util.

Acgo que deu pra perceber o que pretendo: popular uma combobox com valores doutra tabela e gravar o valor num campo doutra tabela.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Visual Basic 6 só aceita, no máximo, bases de dados feitos no Access 2000 ou anteriores a essa versão, todas as outras versões posteriores a 2000 têm que serem convertidas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na verdade eu 'e que falhei e nao tinha reparado metodo Load. Tinha posto acecodTutor em vez de codTutor que esta na tabela. Entao ficou assim:

Private Sub Form_Load()
'Evita alterar o codigo principal
    txtacetId.Enabled = False     
    'Desabilita botoes
    btCancelar.Enabled = False
    
    CarregaControle cbxacecodTutor, "tbTutor", "codTutor", "Nome"
'Alterar para os respectivos nomes dos itens do vosso projecto
End Sub

e no Modulo:

Public Sub CarregaControle(Controle As Object, Tabela, CodigoCampo, DescricaoCampo As String)

On Error GoTo Erro

Dim rs As New ADODB.Recordset               'Declara um recorset
Dim Sql As String                           'Declara uma string para a consulta SQL
Dim cnnx As New ADODB.Connection            'Declara a coneccao da BD
Dim connstr As String

connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=O caminho;Persist Security Info=False"

cnnx.ConnectionString = connstr
cnnx.Open

Controle.Clear
'limpa o controle
Sql = ""
'limpa a string SQL
'Define a string SQL para selecionar os registros
Sql = "SELECT " & CodigoCampo & ", " & DescricaoCampo & " FROM " & Tabela
'abre o recorddset com os dados retornados

rs.Open Sql, cnnx, adOpenDynamic, adLockOptimistic, -1

With rs
Do Until .EOF 'percorre o recordset ate o fim

  'inclui os itens correspondentes
  Controle.AddItem rs(DescricaoCampo)
  Controle.ItemData(Controle.NewIndex) = rs(CodigoCampo)
  .MoveNext

  Loop
  'fecha o recordset
  .Close
End With

Set rs = Nothing 'libera o recordset
cnnx.Close
Exit Sub

Erro: 'se houver erros faz o tratamento

If Err.Number <> 0 Then
  MsgBox ("Erro #: " & Str(Err.Number) & Err.Description)
  Exit Sub
End If

End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora