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


4 participantes

    [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Silvio 21/1/2016, 17:17

    Prezados, boa tarde e boa noite !

    Preciso que ao pressionar botão salvar o mesmo salve apenas uma vez. Ou seja se apertar novamente o botão salvar o sistema irá avisar o usuário que o mesmo já fora salvo.

    Segue abaixo a rotina que eu uso e não está tendo o efeito necessário pois mesmo sem ter salvo antes, ele avisa que já foi salvo.

    If DLookup("codped", "tblpedido", "codped =" & Me!Codped) Then -> é aqui que estou encontrando dificuldade.
    '
    MsgBox ("Pedido já foi salvo..."), vbInformation, Me.Caption
    Else
    If MsgBox("O Pedido de Nº " & Me.Codped & " foi incluído. Deseja salvar?", vbQuestion + vbYesNo, Me.Caption) = vbYes Then
    DoCmd.RunCommand acCmdSaveRecord

    Apenas salientando que:

    codped é chave primária com autonumeração.
    Tblpedido é a tabela.


    Grato a todos desde já.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Alvaro Teixeira 21/1/2016, 18:16

    Olá amigo Silvio,
    Ao apertar a primeira vez, mude o foco e coloque como disable.
    Não compreendo bem porque está a fazer a verificação do pedido.
    Abraço
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Silvio 21/1/2016, 18:21

    Grande Alvaro....

    Veja como é o código por completo.

    Código:
    Private Sub bt_salvar_Click()
    Dim StrSql As String, strSQL1 As String

    If DLookup("codped", "tblpedido", "codped =" & Me!Codped) Then
      '
      MsgBox ("Pedido já foi salvo..."), vbInformation, Me.Caption
    Else
     If MsgBox("O Pedido de Nº " & Me.Codped & " foi incluído ou alterado. Deseja salvar?", vbQuestion + vbYesNo, Me.Caption) = vbYes Then
          DoCmd.RunCommand acCmdSaveRecord
                ' aqui faço a inserção na tabela pedido o valor total da ordem
          Dim DB As Database, rs As Recordset
          Set DB = CurrentDb()
          Set rs = DB.OpenRecordset("tblpedido", dbOpenDynaset)
          rs.FindFirst "Codped = " & Me!Codped
          rs.Edit
          rs("ValorTotalPed") = Me.ValorTotalPed.Value
          rs("IdVendedorOculta") = Me.IdVendedorOculta
          rs.Update
          rs.Close
          Set rs = Nothing
          Set DB = Nothing
        ' fim da inserção
         
         
         
         
          ' aqui faço a inserção dos valores para a tabela vendasfornece e na tblacertocomissao
     StrSql = "INSERT INTO tblvendasfornece (fornecedor, codped, dataped, cliente, totalpedido) Values ('" & Me.Forneoculta.Value & "','" & Me.Codped.Value & "','" & Me.Dataped.Value & "','" & Me.Cliente.Value & "','" & Me.ValorTotalPed.Value & "')"
     CurrentDb.Execute StrSql
     
     
        'aqui faço a exportação para a tabela de acerto de comissão.
        Dim db1 As Database, rs1 As DAO.Recordset
        Set db1 = CurrentDb
        Set rs1 = db1.OpenRecordset("TblAcertoComissao")
        With rs1
        ' os campos abaixo do formulário tem que ser iguais aos que estão na tabela para realizar a exportação
        .AddNew
        ' campos que estão na tabela = campos do fomulario
        ![Codped] = Me.Codped
        ![Dataped] = Me.Dataped
        ![IdVendedor] = Me.IdVendedorOculta
        ![VendedorOculta] = Me.VendedorOculta
        ![CodCliente] = Me.CodCliente
        ![Cliente] = Me.Cliente
        ![PrazoOculta] = Me.Prazoculta
        ![ValortotalPedido] = Me.ValorTotalPed
        ![Forneoculta] = Me.Forneoculta
        ![NossoPedido] = Me.NossoPedido
        .Update
        End With
        MsgBox "O Pedido Nº " & Me.Codped & vbCrLf & "Do cliente  " & Me.Cliente & vbCrLf & "Salvo com sucesso", vbOKOnly, Me.Caption
                 
        Else
            Me.Undo
              DoCmd.CancelEvent
        End If
        End If
       

     
     DoCmd.RunCommand acCmdRefresh

    End Sub

    Eu tenho que impedir que sejam acrescido valores em outras tabelas.
    Pois se o usuário pressionar duas vezes o botão salvar......vai ter duplicidade de valores em outras duas tabelas.
    avatar
    erinaldo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 27/09/2010

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  erinaldo 21/1/2016, 18:24

    antes do else  coloque EXIT SUB

    Private Sub bt_salvar_Click()
    Dim StrSql As String, strSQL1 As String

    If DLookup("codped", "tblpedido", "codped =" & Me!Codped) Then
    '
    MsgBox ("Pedido já foi salvo..."), vbInformation, Me.Caption

    exit sub
    Else
    If MsgBox("O Pedido de Nº " & Me.Codped & " foi incluído ou alterado. Deseja salvar?", vbQuestion + vbYesNo, Me.Caption) = vbYes Then
    DoCmd.RunCommand acCmdSaveRecord
    ' aqui faço a inserção na tabela pedido o valor total da ordem
    Dim DB As Database, rs As Recordset
    Set DB = CurrentDb()
    Set rs = DB.OpenRecordset("tblpedido", dbOpenDynaset)
    rs.FindFirst "Codped = " & Me!Codped
    rs.Edit
    rs("ValorTotalPed") = Me.ValorTotalPed.Value
    rs("IdVendedorOculta") = Me.IdVendedorOculta
    rs.Update
    rs.Close
    Set rs = Nothing
    Set DB = Nothing
    ' fim da inserção




    ' aqui faço a inserção dos valores para a tabela vendasfornece e na tblacertocomissao
    StrSql = "INSERT INTO tblvendasfornece (fornecedor, codped, dataped, cliente, totalpedido) Values ('" & Me.Forneoculta.Value & "','" & Me.Codped.Value & "','" & Me.Dataped.Value & "','" & Me.Cliente.Value & "','" & Me.ValorTotalPed.Value & "')"
    CurrentDb.Execute StrSql


    'aqui faço a exportação para a tabela de acerto de comissão.
    Dim db1 As Database, rs1 As DAO.Recordset
    Set db1 = CurrentDb
    Set rs1 = db1.OpenRecordset("TblAcertoComissao")
    With rs1
    ' os campos abaixo do formulário tem que ser iguais aos que estão na tabela para realizar a exportação
    .AddNew
    ' campos que estão na tabela = campos do fomulario
    ![Codped] = Me.Codped
    ![Dataped] = Me.Dataped
    ![IdVendedor] = Me.IdVendedorOculta
    ![VendedorOculta] = Me.VendedorOculta
    ![CodCliente] = Me.CodCliente
    ![Cliente] = Me.Cliente
    ![PrazoOculta] = Me.Prazoculta
    ![ValortotalPedido] = Me.ValorTotalPed
    ![Forneoculta] = Me.Forneoculta
    ![NossoPedido] = Me.NossoPedido
    .Update
    End With
    MsgBox "O Pedido Nº " & Me.Codped & vbCrLf & "Do cliente " & Me.Cliente & vbCrLf & "Salvo com sucesso", vbOKOnly, Me.Caption

    Else
    Me.Undo
    DoCmd.CancelEvent
    End If
    End If



    DoCmd.RunCommand acCmdRefresh

    End Sub
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Silvio 21/1/2016, 18:31

    erinaldo....já coloquei antes..e nada !
    avatar
    erinaldo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 27/09/2010

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  erinaldo 21/1/2016, 19:03

    tenta assim:


    Cancel = True
    Exit Sub
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Noobezinho 21/1/2016, 19:51

    Silvio

    Acredito que continua salvando porque é um formulário vinculado a tabela, certo?

    Se sim, então faça o seguinte:

    Na folha de propriedades do formulário coloque:

    Permitir Adições = Não


    If DLookup("codped", "tblpedido", "codped =" & Me!Codped) Then

    ' ==== Para verificar a existência de um registro utilizo : If DCount("*", "tblpedido", "codped =" & Me!Codped) > 0 Then

    MsgBox ("Pedido já foi salvo..."), vbInformation, Me.Caption

    exit sub ' Agora sim, ele sairá da sub sem salvar

    Else

    If MsgBox("O Pedido de Nº " & Me.Codped & " foi incluído ou alterado. Deseja salvar?", vbQuestion + vbYesNo,
    Me.Caption) = vbYes Then

    ' Entendo que está somente adicionado registro e não editando, então o alterado está de alegre

    Me.AllowAdditions = True  'Liberando o  formulário para salvar



    DoCmd.RunCommand acCmdSaveRecord
    ' aqui faço a inserção na tabela pedido o valor total da ordem
    Dim DB As Database, rs As Recordset
    Set DB = CurrentDb()
    Set rs = DB.OpenRecordset("tblpedido", dbOpenDynaset)
    rs.FindFirst "Codped = " & Me!Codped
    rs.Edit
    rs("ValorTotalPed") = Me.ValorTotalPed.Value
    rs("IdVendedorOculta") = Me.IdVendedorOculta
    rs.Update
    rs.Close
    Set rs = Nothing
    Set DB = Nothing

    ' fim da inserção

    [ ]'s


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Alvaro Teixeira 22/1/2016, 09:53

    Olá a todos, mais um pitaco.

    Na minha leitura verifico que está a efectuar:
    a) actualização na tabela tblpedido
    b) inserção na tabela vendasfornece e na tblacertocomissao

    Acho que pretende verificar para não repetir a operação b)

    A solução será pesquisar uma das tabelas (ou as duas) e verificar se já tem registo, podendo ficar incluído logo no primeiro IF

    If DLookup("codped", "tblpedido", "codped =" & Me!Codped) AND . . . Then

    Abraço
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Silvio 22/1/2016, 09:55

    Bom dia a todos...

    Alvaro é isso mesmo, a opção B.

    A tabela TblPedido é vinculada, enquanto as outras duas não o são.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Alvaro Teixeira 22/1/2016, 10:57

    Olá, então mãos à obra, veja se assim dá:

    Código:
    If DLookup("codped", "tblpedido", "codped =" & Me!Codped) And Me!Codped = Nz(DLookup("codped", "tblvendasfornece", "codped =" & Me!Codped), 0) Then

    Abraço
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Silvio 22/1/2016, 11:24

    É isso mesmo Alvaro...

    Show.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Alvaro Teixeira 22/1/2016, 11:43

    Olá Silvio, que bom que resolveu!
    Aproveito para agradecer a colaboração das dicas dos colegas Cadu e Noob.
    Abraço a todos


    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Silvio 22/1/2016, 12:15

    É vero......estou tão enrolado e envolvido com esse projeto que peço desculpas ao erinaldo e ao noob pela minha falha em não agradecer.

    Conteúdo patrocinado


    [Resolvido]Impedir de salvar duas vezes o mesmo registro. Empty Re: [Resolvido]Impedir de salvar duas vezes o mesmo registro.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 17:53