Jump to content

[RESOLVIDO] Carregar Combo box


set#1

Recommended Posts

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

Link to comment
Share on other 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;"

Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Link to comment
Share on other 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

Link to comment
Share on other 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
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.