Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Não Arquivar o registro se já existe na outra tabela


Flecha

Pergunta

Olá,

Tenho uma Tabela de material em uso e outra de Material fora de uso.

Em um form tenho como origem a tabela de material em uso e um botão que executa a rotina de arquivar o Item selecionado (Numero) indexado e não autoiza duplicação nas duas tabelas Quando o item ficar fora de Uso (morto)

Coloquei, no click do botão a rotina abaixo:

Private Sub Bt_foradeUso_Click()
On Error GoTo Err_Bt_foradeUso_Click
'-------------------------------------------------------------
'Verifica se o Registro existe no Morto caso exista não executa o Arquivo, pois dará Duplicidade
Dim IDsEncontrados As Recordset
Dim strSQL As String
   If Not IsNull(Me.Numero) Then
      strSQL = " SELECT NUMERO FROM Material BX WHERE NUMERO = " & Me.Numero & ""
      Set IDsEncontrados = CurrentDb.OpenRecordset(strSQL)
   End If
      
   If IDsEncontrados.RecordCount <> 0 Then ' Encontrou NUMERO no Morto
         MsgBox "Esse Registro já existe no morto, vou abrir o formulário Fora de Uso!!" & Chr(13) & "E nele você deverá excluir o registro desse RG" & Chr(13) & " e depois repetir a operação de Arquivar no Morto, OK ?", vbInformation, "Aviso já existe no Morto"
          DoCmd.OpenForm "FrmMorto", acNormal, , "numero = " & IDsEncontrados("numero")
          Exit Sub
      Else
      MsgBox "Pode arquivar em Fora de Uso que não tem duplicidade", vbInformation, " Aviso"

   End If


  


    Dim stDocName As String

    stDocName = "Cons_Inclui_ Morto"
    DoCmd.OpenQuery stDocName, acNormal, acEdit

    stDocName = "cons_exclui_vivo"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
    
   ' DoCmd.Close
   Me.Form.Requery
Exit_Bt_foradeUso_Click:
    Exit Sub

Err_Bt_foradeUso_Click:
    MsgBox Err.Description
    Resume Exit_Bt_foradeUso_Click
    
End Sub

Acontece que ela sempre informa que o Item já existe na tabela receptora e não é verdade.

Onde esta o ero que não acho

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Por que não a tabela materiais com mais um campo "Yes/No" EmUso??

Mas se a qtde de dados for muito grande e você queira dividir pra ganhar em velocidade, tenta assim:

On Error GoTo Erro

    'Verifica se já existe o número na tabela Material BX
    If DLookup("NUMERO", "Material BX", "NUMERO = " & Me.Numero) = Me.Numero Then
    
        'Se o usuário responder "SIM" exclui registro da tabela Material BX
        If MsgBox("Registro já encontrado no Arquivo Morto. Deseja substituir o arquivo existente?", _
            vbYesNo, "Dados duplicados") Then
            
            'Exclui registro da Tabela Material BX
            CurrentDb().Execute "DELETE FROM [Material BX] WHERE NUMERO = " & Me.Numero
            
        'Se o usuário responder "NÃO" sai da função
        Else
        
            GoTo Sair
            
        End If
        
    End If

    'Copia registro da tabela Material para a tabela Material BX
    CurrentDb().Execute "INSERT INTO [Material BX] SELECT * FROM Material WHERE Material.NUMERO = " _
        & Me.Numero
        
    'Exclui registro da tabela Material
    CurrentDb().Execute "DELETE FROM Material WHERE NUMERO = " & Me.Numero
    
Sair:
    Exit Sub
    
Erro:
    MsgBox Err.Description, vbCritical, "Erro"
    Resume Sair

Link para o comentário
Compartilhar em outros sites

  • 0

Iceguy,

Parece que funcionou, só coloquei um form.requery após a exclusão pois o form ficava com os campos com #erro

e ficou resolvido.

Parece que quando o usuário escolhe Não substituir ele não obedece e faz a inclusão e exclusão

preciso tentar acertar e retorno se conseguir.

Vou testar mais.

Caso eu tivesse um campo Em Uso Yes/No

que tipo de instrução faria para mandar esses registros para outro arquivo ?

Eu estou acertando um banco de dados da empresa que fornece material de segurança para os funcionários.

Quando eles saem da empres devolvem o material e pode ser ou não reutilizado, dai como estava com muitos não reutilizavel decidi

criar outra tabela para mandar esses casos para lá, deixando a outra Em uso mais leve.

Aceito mais ideias,

Obrigado

Editado por Flecha
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...