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 participantes

    Consultas atualiza em VBA três tabelas desvinculados ADO

    sergiocfba
    sergiocfba
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 31/01/2012

    Consultas atualiza em VBA três tabelas desvinculados ADO Empty Consultas atualiza em VBA três tabelas desvinculados ADO

    Mensagem  sergiocfba Sáb 7 Dez - 9:12

    Bom dia,

    Estou quebrando a cabeça com a alteração do meu BD.
    Devido ao constante erro de rede, resolvi desvincular para ver se resolve.

    Bem eu usava o método DAO, o TXT_Down depois de atualizar, inserir um numero, na Tab_LiberaColetor por ex.
    e busca o numero relacionado no campo "TXT_Down " e grava [DATA ENT] a data atual e hora como mostra a de atualização, e seguida atualizar a tabela com base no campo [DATA LIB].
    se Maior ou <> de 0 ele limpava essa "Tab_LiberaColetor" e atualizava uma de TAB_HISTÓRICO.

    Código:
    Private Sub TXT_Down_AfterUpdate()
        DoCmd.SetWarnings False
        Me.Txt_down.SetFocus
                Dim BancoDados As Database
                Dim Coletor As Recordset
                Dim Talkman As Recordset
                Dim HeadSet As Recordset
                Dim Histo_Coletor As Recordset

                Set BancoDados = CurrentDb
    If Txt_down <= 1000 Then
        On Error GoTo fim
                Set Coletor = BancoDados.OpenRecordset("Tab_LiberaColetor", dbOpenTable)
                Set Histo_Coletor = BancoDados.OpenRecordset("TAB_HISTÓRICO", dbOpenTable)
            '======================================
            'Consulta atualização:
            '======================================
         
            DoCmd.RunSQL "UPDATE Tab_LiberaColetor SET Tab_LiberaColetor.[DATA ENT] = Date(), Tab_LiberaColetor.[HORA ENT] = Time(), Tab_LiberaColetor.IPModificacao = DameIpMaquina(), Tab_LiberaColetor.UserModificacao = GetUserName_TSB(), Tab_LiberaColetor.UserModificacaoLog = getUser()  " & vbCrLf & _
            "WHERE (((Tab_LiberaColetor.[DATA ENT]) Is Null) AND ((Tab_LiberaColetor.IDCALL)=[Txt_down]));"
            '======================================
            'Consulta acrecimo:
            '======================================
       
            DoCmd.RunSQL "INSERT INTO TAB_HISTÓRICO ( Cadastro, Coletor, [DATA LIB], [HORA LIB], [DATA ENT], [HORA ENT], NOME, [C/C], [Cargo Atual], Turno, Status, IDGESTOR, Gestor, UserRegisto, UserRegistoLog, IPRegisto, DataModificacao, UserModificacao, UserModificacaoLog, IPModificacao, Login_Usuario ) " & vbCrLf & _
            "SELECT Tab_LiberaColetor.CADASTRO, Tab_LiberaColetor.IDCALL, Tab_LiberaColetor.[DATA LIB], Tab_LiberaColetor.[HORA LIB], Tab_LiberaColetor.[DATA ENT], Tab_LiberaColetor.[HORA ENT], TAB_COLABORADOR.NOME, TAB_COLABORADOR.[C/C], TAB_COLABORADOR.[Cargo Atual], TAB_COLABORADOR.Turno, TAB_COLABORADOR.Status, TAB_COLABORADOR.IDGESTOR, TAB_COLABORADOR.Gestor, Tab_LiberaColetor.UserRegisto, Tab_LiberaColetor.UserRegistoLog, Tab_LiberaColetor.IPRegisto, Tab_LiberaColetor.DataModificacao, Tab_LiberaColetor.UserModificacao, Tab_LiberaColetor.UserModificacaoLog, Tab_LiberaColetor.IPModificacao, Tab_LiberaColetor.Login_Usuario " & vbCrLf & _
            "FROM TAB_COLABORADOR RIGHT JOIN Tab_LiberaColetor ON TAB_COLABORADOR.Cadastro = Tab_LiberaColetor.CADASTRO " & vbCrLf & _
            "WHERE (((Tab_LiberaColetor.[DATA ENT]) Is Not Null));"
            '======================================
            'Consulta exclusão
            '======================================
            DoCmd.RunSQL "DELETE Tab_LiberaColetor.*, Tab_LiberaColetor.[DATA ENT], Tab_LiberaColetor.[DATA ENT], Tab_LiberaColetor.IDCALL, Tab_LiberaColetor.IDCALL " & vbCrLf & _
            "FROM Tab_LiberaColetor " & vbCrLf & _
            "WHERE (((Tab_LiberaColetor.[DATA ENT]) Is Not Null) AND ((Tab_LiberaColetor.IDCALL)=[Txt_down]));"
            Txt_down.Value = Empty
         
    ElseIf Txt_down >= 70000000 And Txt_down <= 78281237 Then
    On Error GoTo fim

            Set HeadSet = BancoDados.OpenRecordset("Tab_LiberaHeadSet", dbOpenTable)
            Set Histo_Coletor = BancoDados.OpenRecordset("TAB_HISTÓRICO", dbOpenTable)
            '======================================
            'Consulta atualização:
            '======================================
            DoCmd.RunSQL "UPDATE Tab_LiberaHeadSet SET Tab_LiberaHeadSet.[DATA ENT] = Date(), Tab_LiberaHeadSet.[HORA ENT] = Time(),Tab_LiberaHeadSet.IPModificacao = DameIpMaquina(), Tab_LiberaHeadSet.UserModificacao = GetUserName_TSB(), Tab_LiberaHeadSet.UserModificacaoLog = getUser() " & vbCrLf & _
            "WHERE (((Tab_LiberaHeadSet.[DATA ENT]) Is Null) AND ((Tab_LiberaHeadSet.IDCALL)=[TXT_Down]));"
            '======================================
            'Consulta acrecimo:
            '======================================
            DoCmd.RunSQL "INSERT INTO TAB_HISTÓRICO ( Cadastro, HeadSet, [DATA LIB], [HORA LIB], [DATA ENT], [HORA ENT], NOME, [C/C], [Cargo Atual], Turno, Status, IDGESTOR, Gestor, UserRegisto, UserRegistoLog, IPRegisto, DataModificacao, UserModificacao, UserModificacaoLog, IPModificacao, Login_Usuario ) " & vbCrLf & _
            "SELECT Tab_LiberaHeadSet.CADASTRO, Tab_LiberaHeadSet.IDCALL, Tab_LiberaHeadSet.[DATA LIB], Tab_LiberaHeadSet.[HORA LIB], Tab_LiberaHeadSet.[DATA ENT], Tab_LiberaHeadSet.[HORA ENT], TAB_COLABORADOR.NOME, TAB_COLABORADOR.[C/C], TAB_COLABORADOR.[Cargo Atual], TAB_COLABORADOR.Turno, TAB_COLABORADOR.Status, TAB_COLABORADOR.IDGESTOR, TAB_COLABORADOR.Gestor, Tab_LiberaHeadSet.UserRegisto, Tab_LiberaHeadSet.UserRegistoLog, Tab_LiberaHeadSet.IPRegisto, Tab_LiberaHeadSet.DataModificacao, Tab_LiberaHeadSet.UserModificacao, Tab_LiberaHeadSet.UserModificacaoLog, Tab_LiberaHeadSet.IPModificacao, Tab_LiberaHeadSet.Login_Usuario " & vbCrLf & _
            "FROM TAB_COLABORADOR RIGHT JOIN Tab_LiberaHeadSet ON TAB_COLABORADOR.Cadastro = Tab_LiberaHeadSet.CADASTRO " & vbCrLf & _
            "WHERE (((Tab_LiberaHeadSet.[DATA ENT]) Is Not Null));"
            '======================================
            'Consulta exclusão
            '======================================
            DoCmd.RunSQL "DELETE Tab_LiberaHeadSet.[DATA ENT], Tab_LiberaHeadSet.[DATA ENT], Tab_LiberaHeadSet.*, Tab_LiberaHeadSet.IDCALL, Tab_LiberaHeadSet.IDCALL " & vbCrLf & _
            "FROM Tab_LiberaHeadSet " & vbCrLf & _
            "WHERE (((Tab_LiberaHeadSet.[DATA ENT]) Is Not Null) AND ((Tab_LiberaHeadSet.IDCALL)=[TXT_Down]));"
            Txt_down.Value = Empty
            Me.Refresh

    ElseIf Txt_down >= 200000000 And Txt_down <= 201341440 Then
    On Error GoTo fim
     
            Set Talkman = BancoDados.OpenRecordset("Tab_LiberaTalkman", dbOpenTable)
            Set Histo_Coletor = BancoDados.OpenRecordset("TAB_HISTÓRICO", dbOpenTable)
            '======================================
            'Consulta atualização:
            '======================================
            DoCmd.RunSQL "UPDATE Tab_LiberaTalkman SET Tab_LiberaTalkman.[DATA ENT] = Date(), Tab_LiberaTalkman.[HORA ENT] = Time(), Tab_LiberaTalkman.IDCALL = Txt_down ,Tab_LiberaTalkman.IPModificacao = DameIpMaquina(), Tab_LiberaTalkman.UserModificacao = GetUserName_TSB(), Tab_LiberaTalkman.UserModificacaoLog = getUser()" & vbCrLf & _
            "WHERE (((Tab_LiberaTalkman.[DATA ENT]) Is Null ));"
            '======================================
            'Consulta acrecimo:
            '======================================
            DoCmd.RunSQL "INSERT INTO TAB_HISTÓRICO ( Cadastro, Talkman, [DATA LIB], [HORA LIB], [DATA ENT], [HORA ENT], NOME, [C/C], [Cargo Atual], Turno, Status, IDGESTOR, Gestor, UserRegisto, UserRegistoLog, IPRegisto, DataModificacao, UserModificacao, UserModificacaoLog, IPModificacao, Login_Usuario ) " & vbCrLf & _
            "SELECT Tab_LiberaTalkman.CADASTRO, Tab_LiberaTalkman.IDCALL, Tab_LiberaTalkman.[DATA LIB], Tab_LiberaTalkman.[HORA LIB], Tab_LiberaTalkman.[DATA ENT], Tab_LiberaTalkman.[HORA ENT], TAB_COLABORADOR.NOME, TAB_COLABORADOR.[C/C], TAB_COLABORADOR.[Cargo Atual], TAB_COLABORADOR.Turno, TAB_COLABORADOR.Status, TAB_COLABORADOR.IDGESTOR, TAB_COLABORADOR.Gestor, Tab_LiberaTalkman.UserRegisto, Tab_LiberaTalkman.UserRegistoLog, Tab_LiberaTalkman.IPRegisto, Tab_LiberaTalkman.DataModificacao, Tab_LiberaTalkman.UserModificacao, Tab_LiberaTalkman.UserModificacaoLog, Tab_LiberaTalkman.IPModificacao, Tab_LiberaTalkman.Login_Usuario " & vbCrLf & _
            "FROM TAB_COLABORADOR RIGHT JOIN Tab_LiberaTalkman ON TAB_COLABORADOR.Cadastro = Tab_LiberaTalkman.CADASTRO " & vbCrLf & _
            "WHERE (((Tab_LiberaTalkman.[DATA ENT]) Is Not Null));"
            '======================================
            'Consulta exclusão
            '======================================
            DoCmd.RunSQL "DELETE Tab_LiberaTalkman.[DATA ENT], Tab_LiberaTalkman.[DATA ENT], Tab_LiberaTalkman.*, Tab_LiberaTalkman.IDCALL, Tab_LiberaTalkman.IDCALL " & vbCrLf & _
            "FROM Tab_LiberaTalkman " & vbCrLf & _
            "WHERE (((Tab_LiberaTalkman.[DATA ENT]) Is Not Null) AND ((Tab_LiberaTalkman.IDCALL)=[Txt_down]));"
               
            Txt_down.Value = Empty
            Me.Refresh
            DoCmd.Close
          Exit Sub
    fim:

    BancoDados.Close
    Set BancoDados = Nothing
    End If
    DoCmd.Close
    End Sub
    O problema é que no Ado desvinculado eu não estou conseguindo fazer a rotina funcionar.

    na segunda e na terceira consulta, a primeira eu consegui assim:

    Código:
    Col.Open "Select * From Tab_LiberaColetor", ADOMyConn
    Col![DATA ENT] = Date
    Col![HORA ENT] = Time()
    Algum pode me ajudar nessa questão?

    obrigado!
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Consultas atualiza em VBA três tabelas desvinculados ADO Empty Re: Consultas atualiza em VBA três tabelas desvinculados ADO

    Mensagem  criquio Sáb 7 Dez - 9:28

    Set BancoDados = CurrentDb
    Não entendi muito bem. Se está em rede, porque está usando CurrentDb? Por acaso o banco não está dividido em backend e frontend? Ou o CurrentDb é porque está usando as tabelas vinculadas do backend? Nesse caso, não desvinculou. E por que mudar de DAO para ADO? De Access para Access, o DAO é melhor. O ADO é melhor quando está conectando um Access a outro destino como Excel ou outro banco de dados diferente de Access.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    sergiocfba
    sergiocfba
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 31/01/2012

    Consultas atualiza em VBA três tabelas desvinculados ADO Empty Re: Consultas atualiza em VBA três tabelas desvinculados ADO

    Mensagem  sergiocfba Sáb 7 Dez - 11:01

    Bom dia criquio,

    esta na rede sim.

    Essa era a forma antiga eu estou tentando mudar para o ado, o backend esta na rede.

    essa é uma ideia do que eu tinha funcionava no CurrentDb. Mas esta na rede e ta dando muito trabalha travando como postei no tópico anterior e corrompendo constante por isso to tentando migrar para o ado na tentativa de solucionar ou amenizar.

    Vc acha que o dao é mais eficiente?

    Como eu faria essa conexão em dao backend...?

    Esse bd esta compartilhado na rede e é aberto em 6 micros com um fluxo constante de entradas e baixas.

    Eu preciso de eficiência e segurança, o que o mestre me aconselha?

    Um abraço


    Conteúdo patrocinado


    Consultas atualiza em VBA três tabelas desvinculados ADO Empty Re: Consultas atualiza em VBA três tabelas desvinculados ADO

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Sex 22 Nov - 10:34