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]Delete baseado em 2 criterios e Insert com novos criterios

    Compartilhe

    janiomjunior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 19/07/2017

    [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  janiomjunior em Sex 15 Set 2017, 19:54

    Pessoal,

    quero deletar um registro da minha tabela baseada em um formulário. Os critérios para DELETAR são as duas chaves primarias da minha tabela ao qual são selecionadas no formulário. Anteriormente quando eu não havia definido chave primaria eu apenas atualizava o registro mas agora eu tenho que deletar e inserir um novo registro, no entanto quando dou o comando de deletar, funciona....quando dou o comando de inserir ele roda só que o formulário mostra como se houvessem duplicatas de chave primaria. Se eu apertar esc ele faz o que eu quero e não reclama mais.

    Código:
    Private Sub cboCodFerr_BeforeUpdate(Cancel As Integer)
    '--adaptacao
    ' Dim intx As Integer
    '--adaptacao

    'programa original
    Dim Busca As String
    Dim stlinkcriteria As String

    Dim UpCodcx As String
    Dim UpDesc As String
    Dim UpOd As String
           
    Dim rsc As DAO.Recordset
    Set rsc = Me.RecordsetClone
    Busca = Me.cboCodFerr.Value
    stlinkcriteria = "codferr= '" & Busca & "'"
    If DCount("codferr", "Tbl_SformFrm", stlinkcriteria) > 0 Then
    'Identifica que caixa de ferramentas se encontra a ferramenta
    Dim caixa$
    caixa = DLookup("Codcx", "Tbl_SFormFrm", "CodFerr= '" & Busca & "'")
    '-----
    'Se a caixa é a mesma selecionada, avisa que a ferramenta ja esta na caixa.
    If caixa = Me.CodCx.Value Then
    MsgBox ("A ferramenta ja esta na caixa.")
    Cancel = True
    Me.Undo
    'Senao, pergunta se deseja mover da caixa anterior para a caixa atual.
    Else
    If caixa <> "OFICINA DO SE" Then
        Dim flag As Integer
            flag = 1
     End If
     If flag = 1 Then
      If MsgBox("Atenção, registo " & Busca & " já esta na caixa: " & caixa & vbCr & vbCr & " Deseja mover?", vbYesNo, "Aviso") = vbYes Then
           
            UpCodcx = Me.CodCx.Value
            UpDesc = Me.cboCodFerr.Column(1)
            UpOd = Me.cboCodFerr.Column(3)
           
            CurrentDb.Execute ("DELETE * from Tbl_SFormFrm WHERE codcx= '" & caixa & "' And codferr= '" & Busca & "' ")
            CurrentDb.Execute "INSERT INTO Tbl_SFormFrm(Codcx, Codferr, Descricao, Od) VALUES ('" & UpCodcx & "', '" & Busca & "', '" & UpDesc & "', '" & UpOd & "')"
            'Me.Requery
            'Me.Undo
            DoCmd.RunCommand acCmdRefresh
            'Me.Form_SFormFrm_.Requery
      Else
            Cancel = True
            Me.Undo
      End If
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  JPaulo em Sex 15 Set 2017, 22:10

    Use o Me.Form_SFormFrm_.Requery logo após o comando delete.
    Só depois faz o insert.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    janiomjunior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 19/07/2017

    Re: [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  janiomjunior em Seg 18 Set 2017, 14:08

    JPaulo,

    eu já tentei tb mas o compilador dá um erro justamente nessa linha de comando.

    Deixa te explicar.....Eu tenho um sub formulário com uma caixa de combinação e nessa cbo eu seleciono ferramentas. Na hora que escolho a ferramenta no cbo o banco de dados faz uma busca para saber se esta ferramenta não está em outra caixa e se estiver avisa que está e pergunta se quer mudar de caixa. Quando escolho para mudar, o database apaga o registro antigo e insere um novo registro com a nova caixa que a ferramenta se encontra.

    NA tabela que esse sub formulário é ligada possui duas chaves primarias que é caixa e código de ferramenta.

    Ja tentei:

    Me.Form_SFormFrm_.Requery

    Mostra o erro:

    Objeto requerido (Erro 424)

    o objeto é obrigatório

    tentei tb:

    Form_SFormFrm_.Requery

    mostra o erro:

    Objeto requerido (Erro 424)

    o objeto é obrigatório

    Já tentei atribuir o caminho do formulário a uma variável de controle e pedir o Requery nessa variável mas ele continua dando o erro:

    Objeto requerido (Erro 424)

    o objeto é obrigatório

    Eu tentei as sub before update e after update mas continua apresentando o mesmo problema de registro duplicado.


    Código:
    Private Sub cboCodFerr_BeforeUpdate(Cancel As Integer)
    '--adaptacao
    ' Dim intx As Integer
    '--adaptacao

    'programa original
    Dim Busca As String
    Dim stlinkcriteria As String

    Dim UpCodcx As String
    Dim UpDesc As String
    Dim UpOd As String
           
    Dim rsc As DAO.Recordset
    Set rsc = Me.RecordsetClone
    Busca = Me.cboCodFerr.Value
    stlinkcriteria = "codferr= '" & Busca & "'"
    If DCount("codferr", "Tbl_SformFrm", stlinkcriteria) > 0 Then
    'Identifica que caixa de ferramentas se encontra a ferramenta
    Dim caixa$
    caixa = DLookup("Codcx", "Tbl_SFormFrm", "CodFerr= '" & Busca & "'")
    '-----
    'Se a caixa é a mesma selecionada, avisa que a ferramenta ja esta na caixa.
    If caixa = Me.CodCx.Value Then
    MsgBox ("A ferramenta ja esta na caixa.")
    Cancel = True
    Me.Undo
    'Senao, pergunta se deseja mover da caixa anterior para a caixa atual.
    Else
    If caixa <> "OFICINA DO SE" Then
        Dim flag As Integer
            flag = 1
     End If
     If flag = 1 Then
      If MsgBox("Atenção, registo " & Busca & " já esta na caixa: " & caixa & vbCr & vbCr & " Deseja mover?", vbYesNo, "Aviso") = vbYes Then
           
           
           
            UpCodcx = Me.CodCx.Value
            UpDesc = Me.cboCodFerr.Column(1)
            UpOd = Me.cboCodFerr.Column(3)
           
           
            CurrentDb.Execute ("DELETE * from Tbl_SFormFrm WHERE codcx= '" & caixa & "' And codferr= '" & Busca & "' ")
            Form_SFormFrm_.Requery
            CurrentDb.Execute "INSERT INTO Tbl_SFormFrm(Codcx, Codferr, Descricao, Od) VALUES ('" & UpCodcx & "', '" & Busca & "', '" & UpDesc & "', '" & UpOd & "')"
            'Me.Requery
            'Me.Undo
            'DoCmd.RunCommand acCmdRefresh
           
      Else
            Cancel = True
            Me.Undo
      End If
     Else

            UpCodcx = Me.CodCx.Value
            UpDesc = Me.cboCodFerr.Column(1)
            UpOd = Me.cboCodFerr.Column(3)
           
            CurrentDb.Execute ("DELETE * from Tbl_SFormFrm WHERE codcx= '" & caixa & "' And codferr= '" & Busca & "' ")
            Form_SFormFrm_.Requery
            CurrentDb.Execute "INSERT INTO Tbl_SFormFrm(Codcx, Codferr, Descricao, Od) VALUES ('" & UpCodcx & "', '" & Busca & "', '" & UpDesc & "', '" & UpOd & "')"
            'Me.Refresh
            'Me.Undo
            DoCmd.RunCommand acCmdRefresh
           
            flag = 0

    End If
    End If
    End If
    flag = 0
    rsc.Close
    'Set db = Nothing
    Set rsc = Nothing
    End Sub
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  JPaulo em Seg 18 Set 2017, 14:21

    Qual é o nome correto do formulario e o do subformulario ?


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    janiomjunior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 19/07/2017

    Re: [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  janiomjunior em Seg 18 Set 2017, 15:33

    JPAULO,

    eu estou confuso justamente com isso.

    Qual o nome que devo considerar na programação? é o nome do formulário que aparece em todos os objetos do access?

    se sim:

    Formulario: Form_NCxFrm

    Sub Form: Form_SFormFrm

    janiomjunior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 19/07/2017

    Re: [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  janiomjunior em Seg 18 Set 2017, 15:35

    Eu ja tentei o comando requery com esses nomes.

    Form_NCxFrm.requery

    Form_SFormFrm.requery

    ou

    me.Form_SFormFrm.requery

    me.Form_NCxFrm.requery
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  JPaulo em Seg 18 Set 2017, 15:40

    Você quando olha para os objectos do seu banco, os seus formularios têm os nomes a começar por Form_ ????

    Veja bem, que não acredito muito, a menos se você os denominou assim mesmo.

    Se tiverem será;
    Código:
    Forms!Form_NCxFrm!Form_SFormFrm.Form.Requery

    Se não tiverem será;
    Código:
    Forms!NCxFrm!SFormFrm.Form.Requery


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    janiomjunior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 19/07/2017

    Re: [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  janiomjunior em Ter 19 Set 2017, 14:22

    JPAULO,

    deu certo atualizando apenas o Form Principal:
    Código:
    Forms!Form_NCxFrm.Requery
    na sub after update.

    Muito obrigado. bounce
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: [Resolvido]Delete baseado em 2 criterios e Insert com novos criterios

    Mensagem  JPaulo em Ter 19 Set 2017, 14:28

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: Sab 18 Nov 2017, 01:05