MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Erro ao inserir dados via VBA

    avatar
    abessado
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 05/12/2011

    [Resolvido]Erro ao inserir dados via VBA Empty Erro ao inserir dados via VBA

    Mensagem  abessado 8/12/2011, 13:05

    Boa tarde,

    Criei uma rotina para verificar no banco o nome de todas as tabelas, e verificar em cada tabela se existe uma coluna 'x'. Caso a tabela não possua essa coluna 'x', a rotina insere a coluna na tabela e atribui um valor 'y' para todos os registros dela.

    Tudo está estruturado em loop's.

    A primeira rodada funciona perfeitamente, mas em determinado momento recebo uma mensagem de erro no seguinte trecho do código:

    If CampoExiste = False Then
    With NovoCampo
    .Name = "RESSEGURADOR"
    .Type = 10
    .Size = 50
    End With
    Set tb = DB.TableDefs(nomeTabela)
    tb.Fields.Append NovoCampo
    CurrentDb.Execute "UPDATE [" & nomeTabela & "] SET [" & [nomeTabela] & "].RESSEGURADOR = '1 - IRB RE';"
    MsgBox ("REGISTROS inseridos na tabela " & nomeTabela)
    End If


    Mensagem:
    "Erro em tempo de execução '3219'
    Operação inválida"


    Será que alguém consegue me dar uma força?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8489
    Registrado : 05/11/2009

    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  Alexandre Neves 8/12/2011, 15:30

    Boa tarde, abesado, e bem-vindo ao fórum
    Coloque o código todo do procedimento
    avatar
    abessado
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 05/12/2011

    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  abessado 8/12/2011, 16:26

    Olá Alexandre! Obrigado pelas boas-vindas!

    Sou novato em VBA, mas consultando aqui e ali, consegui chegar nesta rotina...

    Public Sub Insert_campoResseg()
    Dim DB As DAO.Database
    Dim Campo As Field
    Dim rs As DAO.Recordset
    Dim CampoExiste As Boolean
    Dim NovoCampo As New DAO.Field
    Dim tb As DAO.TableDef



    BancoDados = "C:\Users\armando.bessado\Desktop\PROJETOS\RSA\RSA.accdb"
    Set DB = DBEngine.OpenDatabase(BancoDados)



    For Each tabela In DB.TableDefs
    If tabela.Attributes = 0 Then
    nomeTabela = tabela.Name
    Set rs = DB.OpenRecordset(nomeTabela)
    CampoExiste = False
    MsgBox ("Editando tabela " & nomeTabela & "!")
    For Each Campo In tabela.Fields
    If Campo.Name = "RESSEGURADOR" Then
    CampoExiste = True
    MsgBox ("Campo RESSEGURADOR já existe na tabela " & nomeTabela)
    End If
    Next

    rs.Close
    Set rs = Nothing
    If CampoExiste = False Then
    With NovoCampo
    .Name = "RESSEGURADOR"
    .Type = 10
    .Size = 50
    End With
    Set tb = DB.TableDefs(nomeTabela)
    tb.Fields.Append NovoCampo
    CurrentDb.Execute "UPDATE [" & nomeTabela & "] SET [" & [nomeTabela] & "].RESSEGURADOR = '1 - IRB RE';"
    MsgBox ("REGISTROS inseridos na tabela " & nomeTabela)
    End If
    End If
    i = i + 1
    Next

    DB.Close
    Set tb = Nothing
    Set DB = Nothing

    End Sub

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8489
    Registrado : 05/11/2009

    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  Alexandre Neves 8/12/2011, 17:43

    abessado,

    1- Em vez de
    Dim NovoCampo As New DAO.Field
    coloque
    Dim NovoCampo As DAO.Field

    2- Em vez de
    If CampoExiste = False Then
    With NovoCampo
    .Name = "RESSEGURADOR"
    .Type = 10
    .Size = 50
    End With
    Set tb = DB.TableDefs(nomeTabela)
    tb.Fields.Append NovoCampo
    coloque
    If CampoExiste = False Then
    Set tb = CurrentDb.TableDef(nomeTabela)
    tb.Fields.Append tb.CreateField("RESSEGURADOR", dbText, 50)
    currentdb.TableDefs (tb).Fields.Append novocampo

    avatar
    abessado
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 05/12/2011

    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  abessado 8/12/2011, 19:08

    Olá Alexandre,

    Fiz as alterações sugeridas. Agora está dando outro erro... '3420'

    Notei que na primeira tabela que é encontrada que ainda não possui o campo "Ressegurador", tudo funciona perfeitamente. O campo é inserido e os registros também. Me parece que o erro acontece na próxima 'passada' em que uma tabela sem o campo "Ressegurador" é encontrada.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8489
    Registrado : 05/11/2009

    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  Alexandre Neves 8/12/2011, 19:19

    Execute o código passo-a-passo (F8) para detectar onde dá erro
    avatar
    abessado
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 05/12/2011

    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  abessado 8/12/2011, 19:22

    A linha marcada como erro é essa:

    tb.Fields.Append tb.CreateField("RESSEGURADOR", dbText, 50)

    Erro em tempo de execução '3420'
    O objeto não é valido ou não está definido.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8489
    Registrado : 05/11/2009

    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  Alexandre Neves 8/12/2011, 20:18

    Veja se agora funciona


    1- Em vez de
    Dim NovoCampo As New DAO.Field
    coloque
    Dim NovoCampo As DAO.Field

    2- Em vez de
    If CampoExiste = False Then
    With NovoCampo
    .Name = "RESSEGURADOR"
    .Type = 10
    .Size = 50
    End With
    Set tb = DB.TableDefs(nomeTabela)
    tb.Fields.Append NovoCampo
    coloque
    If CampoExiste = False Then
    Set tb = db.TableDefs(nometabela)
    tb.Fields.Append tb.CreateField("RESSEGURADOR", dbText, 50)
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  vieirasoft 20/1/2012, 11:01

    Como não houve retorno, o tópico passa a resolvido. Qualquer coisa reabra, por favor.

    Conteúdo patrocinado


    [Resolvido]Erro ao inserir dados via VBA Empty Re: [Resolvido]Erro ao inserir dados via VBA

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/10/2024, 04:18