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

    avatar
    roselito
    Novato
    Novato

    Respeito às Regras 100%

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

    [Resolvido]Caixa de Validação Empty [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
    [Resolvido]Caixa de Validação 110
    [Resolvido]Caixa de Validação 210
    [Resolvido]Caixa de Validação 310
    hiperjohn
    hiperjohn
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

    [Resolvido]Caixa de Validação Empty 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 : 34
    Registrado : 16/08/2011

    [Resolvido]Caixa de Validação Empty 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:

    [Resolvido]Caixa de Validação 411
    [Resolvido]Caixa de Validação 511


    Obrigado
    hiperjohn
    hiperjohn
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

    [Resolvido]Caixa de Validação Empty 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 : 97
    Registrado : 06/06/2013

    [Resolvido]Caixa de Validação Empty 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 : 34
    Registrado : 16/08/2011

    [Resolvido]Caixa de Validação Empty [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: 8/7/2020, 05:57