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]Caixa de Validação

    Compartilhe
    avatar
    roselito
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 16/08/2011

    [Resolvido]Caixa de Validação

    Mensagem  roselito em 27/12/2018, 13:57

    Boa Tarde
    Preciso de vossa ajuda com o seguinte código
    Duas tabelas “OrdemDetalhe” e “Devolucoes”
    Um Formulario “Ordem”
    Dois SubFormularios “OrdemDetalhe” e “Devolucoes”
    O Problema é o seguinte:
    Tenho uma caixa de verificação no subformulário “OrdemDetalhe” que quando selecionada (True) acrescenta os campos pretendidos ao Subformulario “Devolucoes”) ate aqui funciona na perfeição.
    O problema surge quando na caixa de Verificação desselecciono (False), pretendia que no subformulário o registo que já tinha sido acrescentado fosse agora apagado situação que não esta acontecendo.
    Estou usando um Código seguinte que adaptei:
    Obrigado
    Código:
    Private Sub Devolucao_Click()
    If Me.Devolucao = True Then
           CurrentDb.Execute "INSERT INTO Devolucoes (Registo, Ordem, Ano, Mes, Contribuinte, Beneficiario, Montante, FAC, OPF) VALUES ('" & Registo & "', '" & Ordem & "', '" & Ano & "', '" & Mes & "', '" & Contribuinte & "', '" & Beneficiario & "', '" & Montante.Value & "', '" & FAC & "', '" & OPF & "')"
           MsgBox ("Dados inseridos com sucesso."), vbInformation, "Dados"
           Forms!Ordem!Devolucoes.Form.Requery
    If Me.Devolucao = False Then
           DoCmd.RunCommand "acCmdDeleteRecord Devolucoes (Registo, Ordem, Ano, Mes, Contribuinte, Beneficiario, Montante, FAC, OPF) VALUES ('" & Registo & "', '" & Ordem & "', '" & Ano & "', '" & Mes & "', '" & Contribuinte & "', '" & Beneficiario & "', '" & Montante.Value & "', '" & FAC & "', '" & OPF & "')"
           MsgBox ("Dados apagado com sucesso."), vbInformation, "Dados"
           Forms!Ordem!Devolucoes.Form.Requery
    End If
    End If
    End Sub
    Código:
    Private Sub Devolucao_Click()
    If Me.Devolucao = True Then
           CurrentDb.Execute "INSERT INTO Devolucoes (Registo, Ordem, Ano, Mes, Contribuinte, Beneficiario, Montante, FAC, OPF) VALUES ('" & Registo & "', '" & Ordem & "', '" & Ano & "', '" & Mes & "', '" & Contribuinte & "', '" & Beneficiario & "', '" & Montante.Value & "', '" & FAC & "', '" & OPF & "')"
           MsgBox ("Dados inseridos com sucesso."), vbInformation, "Dados"
           Forms!Ordem!Devolucoes.Form.Requery
    Else
    If Me.Devolucao = False Then
           CurrentDb.Execute "DELETE FROM Devolucoes (Registo, Ordem, Ano, Mes, Contribuinte, Beneficiario, Montante, FAC, OPF) VALUES ('" & Registo & "', '" & Ordem & "', '" & Ano & "', '" & Mes & "', '" & Contribuinte & "', '" & Beneficiario & "', '" & Montante.Value & "', '" & FAC & "', '" & OPF & "')"
           MsgBox ("Dados apagado com sucesso."), vbInformation, "Dados"
           Forms!Ordem!Devolucoes.Form.Requery
    End If
    End Sub


    hiperjohn
    hiperjohn
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 67
    Registrado : 06/06/2013

    Re: [Resolvido]Caixa de Validação

    Mensagem  hiperjohn em 27/12/2018, 17:20

    Se o Registo for a chave primária do tipo texto, você pode fazer assim:
    Código:

    CurrentDb.Execute "DELETE * FROM Devolucoes  WHERE Registo = '" & Me.Registo & "'"

    Se o Registo for a chave primária do tipo número, você deve fazer assim:
    Código:

    CurrentDb.Execute "DELETE * FROM Devolucoes  WHERE Registo = " & Me.Registo & ""
    avatar
    roselito
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 16/08/2011

    Caixa de Validação

    Mensagem  roselito em 27/12/2018, 21:45

    Boa Noite
    Obrigado pela tua ajuda, o teu código funciona só que no subformulário “Devoluções” o campo Registo não é chave primária (não tenho chaves primarias), pelo que se uso o código

    Código:
    CurrentDb.Execute "DELETE * FROM Devolucoes  WHERE Registo = '" & Me.Registo & "'"

    Apaga todos as linhas da que contenha esse Numero de Registo

    Código:
    CurrentDb.Execute "DELETE * FROM Devolucoes  WHERE Contribuinte = '" & Me.Contribuinte & "'"

    Apaga todos os registos com o contribuinte em causa mesmo que tenha registos diferentes

    Por isso tentei utilizar mais do que um critério de seleção, utilizei o seguinte código:

    Código:
    CurrentDb.Execute "DELETE * FROM Devolucoes  WHERE (Registo, Contribuinte) = ('" & Me.Registo & "', '" & Me.Contribuinte & "')"

    Mas devolve o seguinte ERRO:





    Obrigado
    hiperjohn
    hiperjohn
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 67
    Registrado : 06/06/2013

    Re: [Resolvido]Caixa de Validação

    Mensagem  hiperjohn em 27/12/2018, 21:55

    Ficaria assim:
    CurrentDb.Execute "DELETE * FROM Devolucoes WHERE Registo= '" & Me.Registo & "' AND Contribuinte = " & Me.Contribuinte & "'"

    Lembrando que se Contribuinte for do tipo texto, referenciar assim Contribuinte = '"& Me.Contribuinte &"'
    hiperjohn
    hiperjohn
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 67
    Registrado : 06/06/2013

    Re: [Resolvido]Caixa de Validação

    Mensagem  hiperjohn em 27/12/2018, 22:26

    Esse erro 3075 se deve ao fato de o Access usar o sistema americano, que usa ponto para separar a parte inteira da parte decimal de um número (Exemplo: 2.789). Nós usamos vírgulas (2,879).

    Para contornar, você pode fazer o seguinte:
    Código:
    valor = Me.Contribuinte
    valor = Replace(valor,",",".")
    CurrentDb.Execute "DELETE * FROM Devolucoes WHERE Registo= '" & Me.Registo & "' AND Contribuinte = " & valor & "'"
    avatar
    roselito
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 16/08/2011

    [Resolvido]Caixa de Validação

    Mensagem  roselito em 27/12/2018, 23:22

    Boa Noite
    Muito obrigado pela ajuda o erro esta resolvido.
    Bom Natal e Prospero Ano Novo cheio de Paz alegria e Saúde
    Um Abraço obrigado

      Data/hora atual: 23/1/2019, 08:06