sábado, 18 de julho de 2015

Anexando arquivos em campos de tabelas no Access

Um recurso muito interessante do Access é a possibilidade de gravar arquivos em campos.
Alguém já deve estar se perguntando qual a utilidade disto, mas imagine por exemplo, poder catalogar e guardar fotos ou imagens.
Obviamente o recurso deve ser utilizado com moderação para não aumentar o tamanho do mdb.
Bem, como sempre, pensando em automação para tornar simples as tarefas rotineiras, segue abaixo um código VBA para executar a operação de anexar arquivos.

;-)

 
 
Option Compare Database
Option Explicit

Sub AnexaArquivo()

    Dim rs          As DAO.Recordset
    Dim rsAnexo     As DAO.Recordset
    Dim db          As DAO.Database    

    Set db = CurrentDb()   

    db.Execute "DELETE FROM tabela1"    

    Set rs = db.OpenRecordset("tabela1")       

    rs.AddNew
    Set rsAnexo = rs.Fields("CampoAnexo").Value
    rsAnexo.AddNew
    rsAnexo.Fields("FileData").LoadFromFile "c:\teste.txt"
    rsAnexo.Update
    rs.Update

    rs.Close
    Set rs = Nothing    

    Set db = Nothing

End Sub

terça-feira, 14 de julho de 2015

Código para apagar tabelas no Access

A fim de evitar mensagens de erro, é conveniente sempre verificar se a tabela existe antes de comandar um DROP.
Segue abaixo um exemplo.

Obs.: marcar a referência no VBA – ActiveX Data Objects


Sub ApagaTabela()
On Error GoTo Erro

    Dim rst As New ADODB.Recordset
   
    rst.Open "SELECT name FROM MSysObjects where type = 1 AND name = 'Tabela3'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    'type 6 = tabela vinculada

    If rst.RecordCount > 0 Then
        CurrentProject.Connection.Execute "DROP TABLE Tabela3"
    End If

Saida:
    rst.Close
    Set rst = Nothing
    Exit Sub

Erro:
    MsgBox Err.Description, vbOKOnly
    Resume Saida

End Sub

Pesquisar este blog

Arquivo do blog

Quem sou eu

Minha foto
Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.