MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]VBA - Acessando um banco de dados e alterar dados na tabela

    Compartilhe

    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 21/06/2012

    [Resolvido]VBA - Acessando um banco de dados e alterar dados na tabela

    Mensagem  lukdogdog em Qua 27 Jul 2016 - 4:57

    Olá Senhores, tudo bem. Espero que sim
    Me deparei com mais uma grande dúvida que não consigo resolver, pesquisei e não encontrei nada a respeito e se puderem me auxiliar fico muito grato por isso. Então vamos lá;
    Estou precisando fazer com que um form pegue as informações de uma tabela num banco de dados sem vinculo nenhum com o principal.
    Beleza, até aí está tudo bem, quando abre o form ele puxa direitinho as informações, segue o código abaixo:

    Private Sub Form_Open(Cancel As Integer)
    Dim sql As String
    Dim cn As adodb.Connection
    Dim rs As adodb.Recordset
    Set cn = New adodb.Connection
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.path & "\Config\sistema.mdb"
    cn.Open
    Set rs = New adodb.Recordset
    sql = "SELECT * FROM configurasistema"
    rs.Open sql, cn
    'Me.Morada.value = removeAcentos(rs(1))
    DescMaximo = rs(0)
    RomaneioSimNao = rs(1)
    OrdemdeservicoSimNao = rs(2)
    'Entregue = rs(3)
    AtendenteSimNao = rs(4)
    DataEntregaSimNao = rs(5)
    FormaRecebimento = rs(6)
    Mecanico = rs(7)
    CFOPSimNao = rs(Cool
    PDV = rs(9)
    LoginVendas = rs(10)
    AbrePDV = rs(13)
    EstoqueZero = rs(14)
    CFOPprincipal = rs(15)
    RepeteItens = rs(16)
    Limiteitens = rs(17)
    QuantItens = rs(18)
    cn.Close
    End Sub

    O meu problema é o seguinte, quero editar essas informações no form, e alterar na mesma tabela não vinculada apertando o botão "salvar" no form, so que sempre da um erro de propriedade invalida, argumento não é opcional, etc...
    tentei diversas formas, ainda não consegui descobrir qual método usar para editar as informações na tabela, lembrando que ela não esta vinculada ao sistema. Segue a ultima tentativa que fiz e observando é mais ou menos parecida com a de cima:

    Private Sub Salvar_Click()
    Dim sql As String
    Dim cn As adodb.Connection
    Dim rs As adodb.Recordset
    Dim db As Database
    Set cn = New adodb.Connection
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.path & "\Config\sistema.mdb"
    cn.Open
    Set rs = New adodb.Recordset
    sql = "SELECT * FROM configurasistema"
    rs.Open sql, cn
    With rs
    rs.EditMode
    rs!DescMaximo = DescMaximo
    rs!RomaneioSimNao = RomaneioSimNao
    rs!OrdemdeservicoSimNao = OrdemdeservicoSimNao
    rs!AtendenteSimNao = AtendenteSimNao
    rs!DataEntregaSimNao = DataEntregaSimNao
    rs!FormaRecebimento = FormaRecebimento
    rs!MecanicoSimNao = Mecanico
    rs!CFOPSimNao = CFOPSimNao
    rs!PDV = PDV
    rs!LoginVendas = LoginVendas
    rs!AbrePDV = AbrePDV
    rs!EstoqueZero = EstoqueZero
    rs!CFOP = CFOPprincipal
    rs!RepeteItens = RepeteItens
    rs!Limiteitens = Limiteitens
    rs!QuantItens = QuantItens
    rs.Update
    End With
    cn.Close
    End Sub

    O erro que dá é que não altera os valores na tabela

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1600
    Registrado : 11/11/2009

    Re: [Resolvido]VBA - Acessando um banco de dados e alterar dados na tabela

    Mensagem  Dilson em Qua 27 Jul 2016 - 5:24

    Use rs.Edit ao invés de rs.EditMode

    Se está usando um bloco with não precisa referenciar rs

    Use assim:

    With rs
    .Edit
    !DescMaximo = DescMaximo



    NOTA: No ADO não existe o uso do método Edit, já no DAO não funciona sem ele.


    Última edição por Dilson em Qua 27 Jul 2016 - 23:37, editado 1 vez(es) (Razão : Informar sobre inexistência do método Edit no ADO)


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 21/06/2012

    Re: [Resolvido]VBA - Acessando um banco de dados e alterar dados na tabela

    Mensagem  lukdogdog em Qua 27 Jul 2016 - 14:47

    Olá Dílson, grato pelo contato. Fiz as mudanças que vc disse mas mesmo assim não vai.
    Estou postando o projeto para melhor entendimento.
    Fiz uns testes alterando a programação mesmo assim da erro.
    Anexos
    Projeto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (81 Kb) Baixado 7 vez(es)

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1600
    Registrado : 11/11/2009

    Re: [Resolvido]VBA - Acessando um banco de dados e alterar dados na tabela

    Mensagem  Dilson em Qua 27 Jul 2016 - 14:52

    Eu prefiro nesses casos montar a sql e usar o método execute.

    Qual a mensagem de erro apareceu ?




    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 21/06/2012

    Re: [Resolvido]VBA - Acessando um banco de dados e alterar dados na tabela

    Mensagem  lukdogdog em Qua 27 Jul 2016 - 18:38

    Dílson, finalmente consegui.. Nossa, só por Deus mesmo.. após ficar 6 horas direto quebrando a cabeça deu tudo certo.
    Usei o seguinte método para excluir o que tem e salvar o que esta no formulário.
    Public SQL As String
    Public rs As ADODB.Recordset
    Public mConn As ADODB.Connection
    Public Sub ConectaDB()
    Set mConn = New ADODB.Connection
    mConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & "\Config\sistema.mdb"
    mConn.Open
    Set rs = New ADODB.Recordset
    Exit Sub
    End Sub

    Public Sub DesconectaDB()
    mConn.Close
    Exit Sub
    End Sub

    Public Sub ImportaSistema()
    Call ConectaDB
    SQL = ""
    SQL = "DELETE * from ConfiguraSistema"
    mConn.Execute SQL

    SQL = "INSERT INTO ConfiguraSistema (DescMaximo, RomaneioSimNao, OrdemdeservicoSimNao, AtendenteSimNao, DataEntregaSimNao, FormaRecebimento, MecanicoSimNao, CFOPSimNao, PDV, LoginVendas, AbrePDV, EstoqueZero, CFOPprincipal, RepeteItens, LimiteItens, QuantItens)"
                                       SQL = SQL & " VALUES ("
                                       SQL = SQL & "'" & DescMaximo.Value & "', "
                                       SQL = SQL & "'" & RomaneioSimNao.Value & "', "
                                       SQL = SQL & "'" & OrdemdeservicoSimNao.Value & "', "
                                       SQL = SQL & "'" & AtendenteSimNao.Value & "', "
                                       SQL = SQL & "'" & DataEntregaSimNao.Value & "', "
                                       SQL = SQL & "'" & FormaRecebimento.Value & "', "
                                       SQL = SQL & "'" & MecanicoSimNao.Value & "', "
                                       SQL = SQL & "'" & CFOPSimNao.Value & "', "
                                       SQL = SQL & "'" & PDV.Value & "', "
                                       SQL = SQL & "'" & LoginVendas.Value & "', "
                                       SQL = SQL & "'" & AbrePDV.Value & "', "
                                       SQL = SQL & "'" & EstoqueZero.Value & "', "
                                       SQL = SQL & "'" & CFOPprincipal.Value & "', "
                                       SQL = SQL & "'" & RepeteItens.Value & "', "
                                       SQL = SQL & "'" & Limiteitens.Value & "', "
                                       SQL = SQL & "'" & QuantItens.Value & "' "
                                       SQL = SQL & ")"
    mConn.Execute SQL
    Call DesconectaDB
    Exit Sub
    End Sub

    Private Sub Savar_Click()
    Call ImportaSistema
    End Sub

    Segue o projeto para quem precisar! Lembrando que tem que usar a referencia Microsoft ActiveX Data Objects 6.1 Library do Visual Basc
    Anexos
    Projeto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (111 Kb) Baixado 11 vez(es)

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1600
    Registrado : 11/11/2009

    Re: [Resolvido]VBA - Acessando um banco de dados e alterar dados na tabela

    Mensagem  Dilson em Qua 27 Jul 2016 - 20:54

    Olá lukdogdg,

    Ótima atitude a de não desistir, nem esperar e continuar tentando até resolver e, quando resolve disponibiliza o resultado promovendo ajuda mútua na comunidade.

    O fórum agradece.


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

      Data/hora atual: Ter 21 Fev 2017 - 9:42