Notifications
Clear all

Inserir coluna em Access com VBA

2 Posts
1 Usuários
0 Reactions
1,245 Visualizações
Trindade
(@trindade)
Posts: 278
Reputable Member
Topic starter
 

Bom dia, Srs.

Estou tentando utilizar a função abaixo inserir colunas em uma tabela do banco access do Excel, mas não estou conseguindo ...
Olhei alguns código na internet informando para fazer da seguinte forma:

Banco.Execute "ALTER TABLE ESTACAONEW ADD COLUMN LatitudeNew LONG;"

Dá erro de compilção:
Método ou membro ode dados não encontrado

Tentei desse outro modo

DoCmd.RunSQL "ALTER TABLE ESTACAONEW ADD COLUMN LatitudeNew LONG;"

Dá erro de compilção:
Variável não definida

Essa parte esta dentro de um Módulo Classe

Public Conn As New ADODB.Connection

Public Sub Conectar()

Dim nConectar As String
Dim BancoDados As String
    
    BancoDados = Plan2.Range("D6")
    
    If Val(Application.Version) < 12 Then
        nConectar = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BancoDados & ";Jet OLEDB:Database"
    Else
        nConectar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & BancoDados & ";Jet OLEDB:Database"
    End If
    
    Conn.ConnectionString = nConectar
    Conn.Open
    
End Sub

Public Sub Desconectar()
    Conn.Close
End Sub




Function VerificaCampoTabela() As Boolean

Dim Tabela As String
Dim Campos As String
Dim vCampo1 As Long
Dim vCampo2 As Long
Dim vCampo3 As Long

On Error GoTo Erro
         
    SQL = "SELECT * FROM ESTACAONEW"
         
    Set Banco = New ADODB.Recordset
         
    ConexaoBanco.Conectar
         
    ' ABRE A CONEXAO DO BANCO
    Banco.Open SQL, ConexaoBanco.Conn, adOpenForwardOnly, adLockOptimistic
         
        ' VERIFICA SE O CAMPO "LATITUDENEW" EXISTE NA TABELA
        If Not Banco.Fields("LatitudeNew") Is Nothing Then
            Campos = Campos & vbNewLine & "  LatitudeNew"
            vCampo1 = 1
        End If
        
        ' VERIFICA SE O CAMPO "LONGITUDENEW" EXISTE NA TABELA
        If Not Banco.Fields("LongitudeNew") Is Nothing Then
            Campos = Campos & vbNewLine & "  LongitudeNew"
            vCampo2 = 1
        End If
        
        ' VERIFICA SE O CAMPO "ALTITUDENEW" EXISTE NA TABELA
        If Not Banco.Fields("AltitudeNew") Is Nothing Then
            Campos = Campos & vbNewLine & "  AltitudeNew"
            vCampo3 = 1
        End If
    
        MsgBox "A tabela ESTACAO recebeu novos campos, são eles:" & vbNewLine & Campos
    
    ' LIMPA A CONEXAO DO BANCO
    Set Banco = Nothing
    
    ' ENCERA A CONEXAO DO BANCO
    ConexaoBanco.Desconectar
    
    ' FINALIZA A FUNCAO
    Exit Function

Erro:
    
    ' CASE COM A VERIFICACAO DO CAMPO
    Select Case Err
        ' O CAMPO NAO EXISTE
        Case 3265
        
            ' SQL INSERIR COLUNAS LATITUDENEW - LONGITUDENEW - ALTITUDENEW
            If vCampo1 = 0 Then
                SQL = ""
                SQL = SQL & "ALTER TABLE ESTACAONEW ADD COLUMN LatitudeNew LONG "
                MsgBox "Criado o campo LATITUDENEW "
            ElseIf vCampo2 = 0 Then
                SQL = ""
                SQL = SQL & "ALTER TABLE ESTACAONEW ADD COLUMN LongitudeNew LONG "
                MsgBox "Criado o campo LONGITUDENEW "
            ElseIf vCampo3 = 0 Then
                SQL = ""
                SQL = SQL & "ALTER TABLE ESTACAONEW ADD COLUMN AltitudeNew LONG "
                MsgBox "Criado o campo ALTITUDENEW"
            End If
            
            Resume Next
            
        ' O CAMPO EXISTE
        Case Else
            MsgBox "Outro tipo de erro"
    End Select
    
    ' LIMPA A CONEXAO DO BANCO
    Set Banco = Nothing
    
    ' ENCERA A CONEXAO DO BANCO
    ConexaoBanco.Desconectar

End Function

Gostaria de uma ajuda dos senhores ... Onde estou errando ?

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 04/11/2016 8:47 am
Trindade
(@trindade)
Posts: 278
Reputable Member
Topic starter
 

Boa noite, Srs.

Com ajuda do Mikel Silveira Fraga
Em outro fórum consegui resolver o problema, nesse link http://www.tomasvasquez.com.br/forum/viewtopic.php?f=20&t=4969 tem a resolução.

Valew por todos aqueles que olhando minha duvida.

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 05/11/2016 10:40 pm