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

    Excluir do Bd os dados filtrados no subformulario

    avatar
    kadufc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 05/11/2012

    Excluir do Bd os dados filtrados no subformulario Empty Excluir do Bd os dados filtrados no subformulario

    Mensagem  kadufc 9/12/2013, 11:09

    Olá galera estou novamente precisando da ajuda de vocês.Tenho um formulário que utilizo para filtrar alguns regitros específicos dentro de um periodo e o resultado dos filtros aparece no subformulario.

    Gostaria de excluir o resultado desses filtros no Banco de dados, então criei um botão "excluir" no formulário.
    O que ocorre é que está ecluindo todos os filtros sem filtrar o periodo (data inial e data final) e eu preciso que exclua só o que estiver filtrado entre a data inicial e a data final.
    Abaixo segue o código que estou usando, ficarei grato se alguém puder dar uma olhada, ver onde estou errando e me ajudar a corrigir:

    Dim strFiltro As String

    If IsNull(Me.txtdataini) Or Me.txtdataini.value = "" Then
      MsgBox "Preencha a data de início"
      Me.txtdataini.SetFocus

    ElseIf IsNull(Me.txtdatafini) Or Me.txtdatafini.value = "" Then
      MsgBox "Preencha a data final"
      Me.txtdatafini.SetFocus

    Else

    If MsgBox("Confirma a exclusão do registro atual ?", vbQuestion + vbYesNo, "Confirmação") = vbNo Then Exit Sub

    If Not IsNull(Me.txtdataini) And Not IsNull(Me.txtdatafini) Then strFiltro = "DataMat >= #" & Format(Me.txtdataini, "mm/dd/yyyy") & "# And DataMat <= #" & Format(Me.txtdatafini, "mm/dd/yyyy") & "#"
    DoCmd.SetWarnings False
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Tipo='" & Me.Combtipo & "'"
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Classificação='" & Me.Combclass & "'"
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Situação='" & Me.Combsitu & "'"
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Escola='" & Me.Combescola & "'"
    DoCmd.SetWarnings True
    Me.subfrm_PesquisaGeral.Requery

    End If
    End Sub
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  Dilson 13/12/2013, 00:10

    Amigo não sei se colocou o código por inteiro, mas pelo que vejo a sua variável strFiltro apenas está sendo alimentada e não está sendo executada na instrução sql. O seu código não aponta exatamente o que deseja.

    O que você deseja?

    Alcançar registros que contenham 4 parâmetros em um determinado período ?

    Ou

    Registros que contenham qualquer um dos parâmetros em um determinado período ?

    Se for a primeira opção sua instrução pra deletar terá que ser apenas uma juntando no operador WHERE todos parâmetros separados por AND. Ex:

    ... WHERE Tipo= AND Escola= AND strFiltro

    Se for a segunda precisará incluir em cada instrução que já existe a variável strFiltro. Ex:

    ... WHERE Tipo= AND strFiltro
    avatar
    kadufc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 05/11/2012

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  kadufc 6/1/2014, 16:42

    Caro amigo!

    Primeiramente, obrigado pela atenção e desculpa pela demora de resposta, pois, precisei sair de viagem e só retornei esta semana. Em relação a sua sugestão apliquei o código, mas começa dando erro no "WHERE Tipo=And strFiltro". Fiz como segue abaixo, por favor, veja se ainda estou errando alguma coisa. Grato! Kadu.

    Dim strFiltro As String

    If IsNull(Me.txtdataini) Or Me.txtdataini.value = "" Then
    MsgBox "Preencha a data de início"
    Me.txtdataini.SetFocus

    ElseIf IsNull(Me.txtdatafini) Or Me.txtdatafini.value = "" Then
    MsgBox "Preencha a data final"
    Me.txtdatafini.SetFocus

    Else

    If Not IsNull(Me.txtdataini) And Not IsNull(Me.txtdatafini) Then strFiltro = "DataMat >= #" & Format(Me.txtdataini, "mm/dd/yyyy") & "# And DataMat <= #" & Format(Me.txtdatafini, "mm/dd/yyyy") & "#"

    If MsgBox("Confirma a exclusão do registro atual ?", vbQuestion + vbYesNo, "Confirmação") = vbNo Then Exit Sub

    DoCmd.SetWarnings False
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Tipo=And strFiltro
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Classificação= And strFiltro
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Situação= And strFiltro
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Escola=And strFiltro
    DoCmd.SetWarnings True
    Me!subfrm_PesquisaGeral.Form.Filter = strFiltro
    Me!subfrm_PesquisaGeral.Form.FilterOn = True
    Me.subfrm_PesquisaGeral.Requery

    End If
    End Sub
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  Dilson 7/1/2014, 09:14

    Tente Assim:
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Tipo='AlgumaCoisa' And strFiltro"
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Classificação='AlgumaCoisa' And strFiltro"
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Situação='AlgumaCoisa' And strFiltro"
    CurrentDb.Execute "DELETE * FROM [Registro de Matricula] WHERE Escola='AlgumaCoisa' And strFiltro"

    Isso aqui abaixo é desnecessário, porque no inicio do código já estás cobrando o preenchimento das textbox inicio e fim:
    If Not IsNull(Me.txtdataini) And Not IsNull(Me.txtdatafini) Then

    Qualquer coisa se desejar, coloque uma amostra do seu banco somente com a parte em questão que eu ou outro colega do fórum dá uma olhada.
    avatar
    kadufc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 05/11/2012

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  kadufc 8/1/2014, 11:43

    Olá amigo!

    Tentei sua sugestão e não tive sucesso, por isso, segue anexo uma cópia do Bd para que vc visualize e entenda melhor o que preciso.

    No Frm_PesquisaGeral utilizo tres filtros obrigatórios: A combo "situação", "Data Inicial" e "Data Final". Preencho esses campos e Lógo após, clico no botão Buscar para aparecer o resultado dos filtros no subformulario. Preciso que depois disso, ao clicar no botão excluir somente esses registros filtrados sejam apagados da tabela "Registro de Matriculas".
    Anexos
    Excluir do Bd os dados filtrados no subformulario AttachmentARQUIVO TESTE.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (359 Kb) Baixado 9 vez(es)
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  Dilson 10/1/2014, 00:29

    Substitua por este:

    Dim strFiltroDel As String
    If IsNull(Me.txtdataini) Or Me.txtdataini.Value = "" Then
       MsgBox "Preencha a data de início"
       Me.txtdataini.SetFocus
    ElseIf IsNull(Me.txtdatafini) Or Me.txtdatafini.Value = "" Then
       MsgBox "Preencha a data final"
       Me.txtdatafini.SetFocus
    Else
    strFiltroDel = " And Situação='" & Me.Combsitu & "'"
    strFiltroDel = strFiltroDel & " And DATAMAT >= #" & Format(Me.txtdataini, "mm/dd/yyyy") _
    & "# And DATAMAT <= #" & Format(Me.txtdatafini, "mm/dd/yyyy") & "#"

    If MsgBox("Confirma a exclusão desses registros ?", vbQuestion + vbYesNo, "Confirmação") = vbNo Then Exit Sub

    DoCmd.SetWarnings False
       CurrentDb.Execute _
       "DELETE * FROM [Registro de Matricula] WHERE TIPO='COMUM'" & strFiltroDel
       CurrentDb.Execute _
       "DELETE * FROM [Registro de Matricula] WHERE CLASSIFICAÇÃO='P3'" & strFiltroDel
       'Restante dos comandos ...
    DoCmd.SetWarnings True
    Me.subfrm_PesquisaGeral.Requery


    Precisei renomear a variável para outro nome para não ter duplo sentido, uma vez que ela já serve o filtro.

    Fiz apenas em dois campos o restante você continua, pois segue o mesmo modelo.

    Se tiver em mente deletar registros que tenham mais de um critério, poderia limitar este execute em apenas uma linha.

    Da forma que está você deletará vários registros de um período e de um situação contendo qualquer um dos critérios em cada execute.
    avatar
    kadufc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 05/11/2012

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  kadufc 10/1/2014, 13:36

    Olá amigo,

    Mais uma vez agradeço seu interesse em me ajudar. Seria possível vc me mostrar um exemplo que utiliza mais de um critério como mencionou, pois alguns campos funcionam dessa forma.

    ex:

    Campo "Tipo" = Critérios "BB" - "TERCEIRA IDADE" - "COMUM" - "ESCOLAR" - "GESTANTE"

    Campo "Classificação" = Critérios "P0" - "P1" - "P2" - "P3"

    Campo "Situação" = Critérios "ALTA" - "MATRICULADO"

    Grato, Kadu.
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  Dilson 10/1/2014, 18:11

    Assim:

    WHERE (TIPO='COMUM' or TIPO='BB') And (CLASSIFICAÇÃO='P2' or CLASSIFICAÇÃO='P0') " & strFiltroDel

    avatar
    kadufc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 05/11/2012

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  kadufc 15/1/2014, 16:59

    Olá Dilson!

    Tentei das duas formas que vc indicou e as duas estão excluindo todos os campos do Bd. E eu preciso que exclua somente os que estão no filtro do formulario.

    ex: Também esta excluindo o campo "nome" - "telefone" e todos os demais e não deveria.
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  Dilson 15/1/2014, 22:44

    Olá,

    Veja no exemplo que mandou que está funcionando.

    Observe os dados na 1ª e 4ª linha e compare com os parametros no código
    Experimente e coloque:
    ALTA
    01/01/2013 a 01/01/2013

    Veja no código que seleciona TIPO='COMUM' e CLASSIFICAÇÃO='P2'

    Nisso observe que se o tipo do dia 01/01/2013 não fosse = COMUM a instrução executaria a exclusão de apenas 1 registro pois não estaria satisfazendo o parametro.

    O fato de excluir dados dos outros campos como citou, é normal porque está na linha de registros (as colunas perfazem o conjunto de dados numa linha de registro).




    Anexos
    Excluir do Bd os dados filtrados no subformulario AttachmentARQUIVO TESTE_OLD.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (98 Kb) Baixado 15 vez(es)

    Conteúdo patrocinado


    Excluir do Bd os dados filtrados no subformulario Empty Re: Excluir do Bd os dados filtrados no subformulario

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 08:16