Pesquisar este blog

domingo, setembro 05, 2010

Access VBA, Trabalhando com tabelas

Access VBA Banco de Dados

Várias vezes já sofri com a falta de ferramentas para manipular os dados dentro do

access, então resolvi avançar no conhecimento usando codigo VBA para manipular os

dados, então descobri como instanciar em uma variavel o banco de dados e por esta

variavel ligar uma tabela a uma variavel e atravez desta variavel com a tabela fazer

consultas inserir, apagar e corrigir informações, vou mostrar o codigo e explicar como

funciona.

1- Crie uma variavel para armazenar o Banco de Dados.

Dim BancoDados as Database

2- Crie uma variavel para armazenar a tabela.

Dim Tabela as Recordset

3- Faça a configuração da variavel BancoDados com a db atual q esta usando.

Set BancoDados = CurrentDb

4- Faça a configuração da variavel que vai receber a tabela desejada

Set Tabela = Banco.OpenRecordset("NomeDaTabela", dbOpenTable)

Agora esta tudo pronto Qualquer operação que queira fazer é so usa a varaivel Tabela

Vou dar um exemplo de consulta.

1- Faça a seleção do campo da tabela que deseja consultar algum registro

Tabela.index = "CampoDesejado"

2- Faça a procura usando a função Seek.

Tabela.Seek "=", ValorQueDesejaProcurar

3- Você pode usar a função NoMatch para ver se foi ou não encontrado algum registro.

Vou mostrar o codigo completo.

Private Sub buttonConsultar_Click()
Dim BancoDados as Database
Dim Tabela as Recordset

Set BancoDados = CurrentDb
Set Tabela = Banco.OpenRecordset("NomeDaTabela", dbOpenTable)

Tabela.index = "CampoDesejado"
Tabela.Seek "=", ValorQueDesejaProcurar

If Tabela.NoMatch = True Then
MsgBox("Registro encontrado!")
Else
MsgBox("REsgitro não encontrado!")
End If
End Sub

Em caso de duvidas eu terei o maior prazer em ajudar!

9 comentários:

  1. só uma instrução não ficou clara pra mim:
    Set Tabela = Banco.OpenRecordset("NomeDaTabela", dbOpenTable)

    Qual é esse "Banco"?

    ResponderExcluir
  2. Olá, vou fazer uma correção! na linha anterior é criada uma variavel para armazenar o banco de dados, e a mesma é usada para indicar a tabela, houve um erro de digitação na linha seguinte! o correto ficaria:
    Set Tabela = BancoDados.OpenRecordset("NomeDaTabela", dbOpenTable)

    Para configurar o caminho da tabela!

    Caso tenha mais dúvidas, pergunte e eu vou respondendo!

    ResponderExcluir
  3. Olá, é muito boa a dica! Estou fazendo um sisteminha em Access e como não tenho conhecimento em VBA, sofrendo bastante. Vc poderia dar mais dicas de quais comandos são usados para cria registro em branco, salvar, excluir e outros mais necessários a manipulação das tabalas sem depender das funções do Access.
    Grato

    ResponderExcluir
  4. Sim vou preparar uma série de posts relacionados, mais sugestões é só dizer! vlww

    ResponderExcluir
  5. Olá estou iniciando no vba para access e:
    Desejo criar um loop para preencher alguns registros em uma tabela da seguinte forma:

    Código Doc Descrição
    020203 5344 abc
    4534 abc2
    5647 abc3
    234544 2535 abc4
    4534 abc5

    etc...
    é uma tabela de + de 200 mil linhas e preciso q ela fique assim:

    Código Doc Descrição
    020203 5344 abc
    020203 4534 abc2
    020203 5647 abc3
    234544 2535 abc4
    234544 4534 abc5

    repetir os códigos da linha anterior caso seja em branco.
    Grato
    dbragion@hotmail.com

    ResponderExcluir
  6. 020203 5344 abc
    _______4534 abc2
    _______5647 abc3
    234544 2535 abc4
    _______4534 abc5

    segue novamente a tabela q foi desconfigurada

    ResponderExcluir
  7. Olá Daniel! tenho uma dúvida para poder te ajudar! quando os primeiros códigos são em branco? como vai ser preenchido?

    ResponderExcluir
  8. Fica aqui uma dica!

    Private Sub CommandButton1_Click()

    Dim cCelula As Range
    Dim sTmp As String

    For Each cCelula In Worksheets("plan1").Range("a2:a100")

    If Range("b" & cCelula.Row).Value = "" Then

    Exit For

    End If

    If cCelula.Value = "" Then

    cCelula.Value = sTmp

    Else

    sTmp = cCelula.Value

    End If

    Next cCelula

    End Sub

    ResponderExcluir
  9. Olá.
    Eu tenho uma dúvida.
    Eu usando esse esquema para trabalhar com os registros de uma tabela, como eu poderia fazer para ir próximo registro dela?
    Estou usando apenas if else.
    Obrigada.

    ResponderExcluir