MaximoAccess

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

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
    avatar
    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 28
    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
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1697
    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)
    avatar
    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 28
    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 12 vez(es)
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1697
    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 ?


    avatar
    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 28
    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 25 vez(es)
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1697
    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.

      Data/hora atual: Qui 14 Dez 2017, 04:26