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, 04: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 : 1602
    Registrado : 11/11/2009

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

    Mensagem  Dilson em Qua 27 Jul 2016, 05: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 5 vez(es)

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    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 7 vez(es)

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    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: Dom 04 Dez 2016, 12:15