MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Excluir dados em Loop

    avatar
    juliobertoso
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 23/10/2017

    [Resolvido]Excluir dados em Loop Empty [Resolvido]Excluir dados em Loop

    Mensagem  juliobertoso em 9/1/2020, 19:53

    Boa tarde pessoal,

    estou quebrando a cabeça para excluir dados de uma tabela em Loop e preciso muito da visão e ajuda de vocês. Tenho um formulário "frmOcorrencia" e dentro dele tenho um SubFormulário  "SUB2_Ocorrencia" no formato Folha de Dados, preciso que ao clicar no botão excluir, o sistema corra a tabela e verifique se o campo "OC" do form "SUB2_Ocorrencia" é igual ao campo [_ID] do frmOcorrencia ai ele exclua todos os dados, mas meu código abaixo não esta funcionando.


    Código:

    Private Sub btoExcluir_Click()
     On Error Resume Next


    If MsgBox("Este procedimento irá excluir este registro definitivamente ? ", vbYesNo + vbQuestion, "Aviso") = vbYes Then


        Dim rs As DAO.Recordset

        'Corre a Tabela

        Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_LogFretes_AberturaOcorrencia")

        'EOF = End Of File
        Do Until rs.EOF 'faça até o fim do arquivo
        'faz a comparação
        If Form_frm_SUB2_Ocorrencia.OC = Form_frmOcorrencia.[_ID] Then
      
        rs.Fields("OC").Value = ""
        rs.Fields("TransportadoraContratada").Value = ""
        rs.Fields("FreteContratoado").Value = ""
        rs.Fields("Diferenca").Value = ""
        rs.Fields("DataOcorrencia").Value = ""
        rs.Fields("TextoOcorrencia").Value = ""
        
        
        End If
        rs.MoveNext

        Loop
        
        'fechar conexão
        rs.Clone
        
      
        'libera memória
        Set rs = Nothing
       End If
    End Sub
    alozs
    alozs
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 261
    Registrado : 07/02/2018

    [Resolvido]Excluir dados em Loop Empty Re: [Resolvido]Excluir dados em Loop

    Mensagem  alozs em 9/1/2020, 20:25

    tenta usar esse código

    Código:

    Dim strSQL As String
        strSQL = "DELETE * FROM tbl_LogFretes_AberturaOcorrencia WHERE OC = " & _ID
        CurrentDb.Execute strSQL

    caso não consiga poste parte do BD
    avatar
    juliobertoso
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 23/10/2017

    [Resolvido]Excluir dados em Loop Empty Re: [Resolvido]Excluir dados em Loop

    Mensagem  juliobertoso em 9/1/2020, 20:47

    alozs,

    não deu certo, o procedimento apaga apenas a primeira linha

    Detalhe que esqueci de informar

    OC esta na tabela tbl_LogFretes_AberturaOcorrencia (SUB2_Ocorrencia), os campos abaixo também

    rs.Fields("OC").Value = ""
    rs.Fields("TransportadoraContratada").Value = ""
    rs.Fields("FreteContratoado").Value = ""
    rs.Fields("Diferenca").Value = ""
    rs.Fields("DataOcorrencia").Value = ""
    rs.Fields("TextoOcorrencia").Value = ""


    _ID esta em outra tabela, tblFretes (frmOcorrencia)
    alozs
    alozs
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 261
    Registrado : 07/02/2018

    [Resolvido]Excluir dados em Loop Empty Re: [Resolvido]Excluir dados em Loop

    Mensagem  alozs em 9/1/2020, 21:01

    se puder postar parte do bd é melhor para analisar
    Jungli
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 676
    Registrado : 07/05/2010

    [Resolvido]Excluir dados em Loop Empty Re: [Resolvido]Excluir dados em Loop

    Mensagem  Jungli em 9/1/2020, 22:43

    Boa noite,

    Tente assim:

    Código:
    '// Desativa os avisos do sistema
       DoCmd.SetWarnings False
    '// Questiona ao usuário sobre a exclusão do registro
       If MsgBox("Este procedimento irá excluir este registro definitivamente ? ", vbYesNo + vbQuestion, "Aviso") = vbYes Then
       
       '// Abre o Recordset
           Dim rs As DAO.Recordset: Dim jSQL As String
           jSQL = "SELECT * FROM tbl_LogFretes_AberturaOcorrencia WHERE " & _
                                "tbl_LogFretes_AberturaOcorrencia.[OC]=" & Form_frmOcorrencia.[_ID].Value
           Set rs = CurrentDb.OpenRecordset(jSQL)
       '// Loop
           'EOF = End Of File
           While (Not rs.EOF)
               rs.Delete
               rs.MoveNext
           Wend
       '// Fechar conexão
           rs.Clone
       '// Libera memória
           Set rs = Nothing
       '// Formulário Principal ==========================================
       '   Deverá apagar o registro principal ou seja a venda!
           DoCmd.RunCommand acCmdSelectRecord
           DoCmd.RunCommand acCmdDeleteRecord
       '// Informa ao usuário
           MsgBox "Venda excluída com sucesso!", vbInformation, "Atenção"
       Else
           Exit Sub
       End If


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles
    avatar
    juliobertoso
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 23/10/2017

    [Resolvido]Excluir dados em Loop Empty Re: [Resolvido]Excluir dados em Loop

    Mensagem  juliobertoso em 10/1/2020, 12:58

    Jungli

    tentei como você informou e tentei mudando uma parte do código, conforme baixo
    Código:
          jSQL = ("SELECT * FROM tbl_LogFretes_AberturaOcorrencia WHERE [OC] = " & Form_frmOcorrencia.[_ID].Value)
           Set rs = CurrentDb.OpenRecordset(jSQL)

    para ambos retorna o erro "erro em tempo de execução 3464 - tipos de dados incompatível com a expressão de critério"

    tentei conforme o primeiro código, mas incluindo no Loop o rs.Delete, o comando exclui, porém exclui todos os dados da tabela, ou seja, não faz a comparação no If e exclui tudo
    Código:
    Private Sub btoExcluir_Click()
     On Error Resume Next

    If MsgBox("Este procedimento irá excluir este registro definitivamente ? ", vbYesNo + vbQuestion, "Aviso") = vbYes Then
        Dim rs As DAO.Recordset
        
    'Corre a Tabela
        Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_LogFretes_AberturaOcorrencia")

        'EOF = End Of File
        Do Until rs.EOF 'faça até o fim do arquivo
        'faz a comparação
        If Form_frm_SUB2_Ocorrencia.OC = Form_frmOcorrencia.[_ID] Then
      
        rs.Fields("OC").Value = ""
        rs.Fields("TransportadoraContratada").Value = ""
        rs.Fields("FreteContratoado").Value = ""
        rs.Fields("Diferenca").Value = ""
        rs.Fields("DataOcorrencia").Value = ""
        rs.Fields("TextoOcorrencia").Value = ""
            
        End If
        rs.MoveNext
        rs.Delete

        Loop
        
        'fechar conexão
        rs.Clone
        
        'libera memória
        Set rs = Nothing
       End If
    End Sub
    Jungli
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 676
    Registrado : 07/05/2010

    [Resolvido]Excluir dados em Loop Empty Re: [Resolvido]Excluir dados em Loop

    Mensagem  Jungli em 10/1/2020, 20:00

    Boa tarde,

    Esse erro 3464, acontece porque você tem campos com tipos de dados diferentes,

    ex.: OC integer e _ID tipo texto

    você terá que fazer essa correção na sua base de dados


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles
    avatar
    juliobertoso
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 23/10/2017

    [Resolvido]Excluir dados em Loop Empty Re: [Resolvido]Excluir dados em Loop

    Mensagem  juliobertoso em 27/1/2020, 13:07

    Obrigado a todos por ajudar, mas infelizmente não consegui resolver a exclusão em Loop, tentei todas opções mas não deu.

    resolvi da seguinte forma, deixei o SUB Formulário em "Formulário Contínuo" e inclui um botão excluir na frente

      Data/hora atual: 14/8/2020, 01:09