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


+2
Marco Messa
vieirasoft
6 participantes

    [Resolvido]Inserir um campo em tabela via código

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir um campo em tabela via código Empty [Resolvido]Inserir um campo em tabela via código

    Mensagem  vieirasoft 1/7/2010, 12:07

    Bom dia

    Precisava de acrescentar um ou mais campos a uma tabela a partir de um form situado em outra mdb, mas não através do método append em consulta e sim via código.

    Agradeço a ajuda
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  Marco Messa 1/7/2010, 14:08

    Para fazer isso você terá que se conectar com o outro mdb através do ADO.

    Exemplo:

    Dim objConexao

    Set objConexao = CreateObject("ADODB.Connection")

    With objConexao
    'Utilize esse caso você não tenha o Access 2007 instalado
    .Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"

    'Utilize esse provider caso você tenha o Access 2007 instalado
    .Provider = "Microsoft.ACE.OLEDB.12.0;"

    'Local onde está a base
    .ConnectionString = "Data Source=C:\Base.mdb;"

    'Abre a conexão
    .Open

    'Executa o código sql DDL
    .Execute "ALTER TABLE NomeDaTabela ADD COLUMN NomeDoCampo TipoDoCampo;"

    'Fecha a conexão
    .Close
    End With


    Flw... cheers


    .................................................................................
    Tea with me that I book your face Cool
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  vieirasoft 1/7/2010, 15:25

    Olá Amigo Messa

    Antes de pedir ajuda eu estava a tentar assim:
    Dim objectConnection
    Set objectConnection = CreateObject("ADODB.Connection")
    With objectConnection
    .Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
    .ConnectionString = "Data Source=C:\EasyAdvo2.0\Data\bd1.mdb'"
    .Open
    .INSERT "ALTER TABLE movimentos ADD COLUMN NovaPasta 50;"
    .Close
    End With

    Agora estava a tentar o seu
    Dim objConexao

    Set objConexao = CreateObject("ADODB.Connection")

    With objConexao
    .Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"

    .ConnectionString = "Data Source=C:\EasyAdvo2.0\Data\bd1.mdb'"

    'Abre a conexão
    .Open

    'Executa o código sql DDL
    .Execute "ALTER TABLE movimentos ADD COLUMN NovaPasta 50;"

    'Fecha a conexão
    .Close
    End With

    O Resultado que obtive foi o mesmo :O fornecedor não foi encontrado e faz o debug aqui:

    .Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"

    ????que estará mal?
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  Marco Messa 1/7/2010, 16:16

    Tentou com esse outro provider?:

    .Provider = "Microsoft.ACE.OLEDB.12.0;"

    Caso não funcione terá que instalar o provider no seu computador fazendo o download nessa página:
    http://www.microsoft.com/downloads/details.aspx?FamilyID=2deddec4-350e-4cd0-a12a-d7f70a153156&displaylang=pt-br


    Flw... cheers


    .................................................................................
    Tea with me that I book your face Cool
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  vieirasoft 1/7/2010, 16:21

    Estou utilizando o 2003 logo é o Microsoft.Jet.OLEDB.4.0. Fiz uma outra ligação (só por esperiência, Access a Word) a uma nova origem de dados.odc e correu tudo ok,menos esta que continua a dar erro
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  Marco Messa 1/7/2010, 16:24

    Seria interessante então você atualizar o provider.
    Faz um teste atualizando paa este que eu passei o link e dá um retorno blz?

    Flw... cheers


    .................................................................................
    Tea with me that I book your face Cool
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  vieirasoft 1/7/2010, 16:30

    Já algum tempo atrás tinha feito isso, aliás estou sempre atento ao service Pack. Mesmo assim segui o seu conselho e recebi a seguinte resposta: Não necessita actualizar. E esta hem?

    Para quem precisar este é o último WindowsXP-KB829558-x86-PTG.exe

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  vieirasoft 1/7/2010, 18:56

    Mestre JPaulo

    Tem alguma ideia do que está acontecer ou que está a ser feito de errado?

    Agradeço a ajuda
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  JPaulo 1/7/2010, 20:21

    Eu utilizo o simples, se quiserem aproveitar.....

    Dim strDB As String, strAltera As String
    Dim strBancoExterno As Access.Application
    Const strCaminho = "C:\EasyAdvo2.0\Data\bd1"
    Set strBancoExterno = CreateObject("Access.Application")
    strBancoExterno.OpenCurrentDatabase strCaminho
    strAltera = "ALTER TABLE movimentos ADD COLUMN NovaPasta TEXT (50);"
    strBancoExterno.DoCmd.RunSQL strAltera
    strBancoExterno.CloseCurrentDatabase
    Set strBancoExterno = Nothing




    Última edição por JPaulo em 1/7/2010, 20:33, editado 1 vez(es)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Inserir um campo em tabela via código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Inserir um campo em tabela via código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Inserir um campo em tabela via código Folder_announce_new Instruções SQL como utilizar...
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  Marco Messa 1/7/2010, 20:31

    Vieira, por acaso o código do erro é o 3706 ?
    Porque no meu pc deu erro ao tentar usar esse pois tenho o mais atual instalado, então fiz assim:

    .Provider = "Microsoft.ACE.OLEDB.12.0;"

    Flw... cheers


    .................................................................................
    Tea with me that I book your face Cool
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  vieirasoft 1/7/2010, 21:39

    Mestre já estava quase, mas quando clico no botão abre a bd1 e depois bloqueia dizendo que a base de dados foi aberta por outro utilizador em modo exclusivo e faz debug aqui:
    strBancoExterno.OpenCurrentDatabase strCaminho
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  JPaulo 1/7/2010, 22:12

    Testei 8 vezes e todas funfaram...

    Veja se não tens nomes iguais nos dois bancos.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Inserir um campo em tabela via código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Inserir um campo em tabela via código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Inserir um campo em tabela via código Folder_announce_new Instruções SQL como utilizar...
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  JPaulo 1/7/2010, 22:17

    Tem aí uma falha, falta o .mdb

    Dim strAltera As String
    Dim strBancoExterno As Access.Application
    Const strCaminho = "C:\EasyAdvo2.0\Data\bd1.mdb"
    Set strBancoExterno = CreateObject("Access.Application")
    strBancoExterno.OpenCurrentDatabase strCaminho
    strAltera = "ALTER TABLE movimentos ADD COLUMN NovaPasta TEXT (50);"
    strBancoExterno.DoCmd.RunSQL strAltera
    strBancoExterno.CloseCurrentDatabase
    Set strBancoExterno = Nothing


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Inserir um campo em tabela via código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Inserir um campo em tabela via código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Inserir um campo em tabela via código Folder_announce_new Instruções SQL como utilizar...
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  vieirasoft 1/7/2010, 22:29

    MESTRE

    Funfou Direitinho, só faltava mesmo o mdb. As mãos do Mestre ao teclado só encontra par em Chopin ao piano. Muito obrigado.

    Marco obrigado por todo om empenho que teve em me ajudar. Sou-lhe grato.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  JPaulo 1/7/2010, 22:38

    Valew pelo retorno e optem sempre pelo simples, o complicado só complica.



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Inserir um campo em tabela via código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Inserir um campo em tabela via código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Inserir um campo em tabela via código Folder_announce_new Instruções SQL como utilizar...
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  Marco Messa 2/7/2010, 02:18

    Pois é, o estranho é que eu sempre fiz conexão ADO e dá certo, mas o seu método é muito bom também JPaulo, inclusive já até marquei aqui, quem sabe eu precise um dia.... Very Happy
    Abraço...
    cheers


    .................................................................................
    Tea with me that I book your face Cool
    Gilberto Rocha
    Gilberto Rocha
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1027
    Registrado : 21/01/2010

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  Gilberto Rocha 6/4/2011, 22:11

    Olá amigos utilizei o código do JPaulo, somente dei uma mudada pois meu bd tem senha e usei para alterar o tipo de campo, dúvida.

    Como fazer para saber se o campo é CURRENCY (Unidade monetária)ou não? Pois preciso fazer esse processo abaixo somente se o campo não for CURRENCY.

    Dim strAltera As String, strPass
    Dim strBancoExterno As Access.Application
    Const strCaminho = "C:\Sistema IEAD\SistemaIEAD_be.accdb"
    strPass = "blabla"
    Set strBancoExterno = CreateObject("Access.Application")
    strBancoExterno.OpenCurrentDatabase strCaminho, , strPass
    strAltera = "ALTER TABLE tblCarneMissaoContribuicoes alter COLUMN teste CURRENCY;"
    strBancoExterno.DoCmd.RunSQL strAltera
    strBancoExterno.CloseCurrentDatabase
    Set strBancoExterno = Nothing
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  ton0612 3/10/2013, 00:15

    Não sei se posso, ou se poderia ser aqui mesmo.

    eu fiz o seguinte e deu certinho também.

    Código:
    Function AlteraTbl()
    Dim ws As DAO.Workspace
    Dim db As DAO.Database

    Dim C As Integer

    Dim StrSqltbl As String

    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase("C:\caminho\banco_be.accdb", False, False)

    For C = 1 To db.TableDefs("tblTeste").Fields.Count
    If db.TableDefs("tblTeste").Fields(C - 1).Name = "Sexo" Then
    MsgBox "item já existente"
    End If
    Next
    StrSqltblNPermitido = "Alter Table tblTeste Add Column Sexo TEXT (10);"
    db.Execute StrSqltbl

    Set db = Nothing

    End Function
    Eu coloquei uma rotina para verificar se o campo que esta tentando adicionar já existe, e então pode-se executar uma uma ação.

    Caso tenha outro método eu gostaria, pois se a tabela tabela for grande pode demorar um pouco.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  Alexandre Neves 3/10/2013, 17:50

    Boa tarde,
    Tente executar a alteração pretendida. Se já existir o campo dará erro X. Trate esse erro como tal


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Conteúdo patrocinado


    [Resolvido]Inserir um campo em tabela via código Empty Re: [Resolvido]Inserir um campo em tabela via código

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 00:57