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]Deletar registros relacionados

    avatar
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 157
    Registrado : 25/07/2017

    [Resolvido]Deletar registros relacionados Empty [Resolvido]Deletar registros relacionados

    Mensagem  alantb em 14/9/2018, 18:29

    Olá pessoal, tenho cinco tabelas em um relacionamento. Destas cinco três são as de Cadastro e são as mais essenciais. São elas:

    1° - tbContato - cadastra o nome do contato
    2º - tbTelefone - cadastra o nº dos telefones do contato da tbContato
    3º - tbRegistro - cadastra as ligações solicitadas, registrando o nº telefone e o contato.

    Todos os relacionamentos estão marcados todas opções:

    - Impor Integridade referencial;
    - Propagar atualização dos campos relacionados;
    - Propagar exclusão dos registros relacionados.

    Se eu clicar no form de cadastro do contato, exclui tudo: das três tabelas, beleza. Da tbRegistro também, exclui normal. Entretanto quando solicito para excluir somente o nº telefone da tbTelefone não faz nada. Os forms são semelhantes e os códigos também. Segue o código de excluir e os relacionamentos.

    ALAN

    Private Sub cmdExcluir_Click()

    If MsgBox("Deseja EXCLUIR esse Contato ?", vbQuestion + vbYesNo, "Excluir Registro") = vbYes Then
         If DCount("*", "tbRegistro", "CodTelefone =" & Me.txtCodTelefone) <> 0 Then
           If MsgBox("Deseja mesmo EXCLUIR esse telefone?" & vbCrLf & "Ele faz parte de uma associação com outros registros.", vbQuestion + vbYesNo, "Exclusão de Registros") = vbYes Then
           
           CurrentDb.Execute "DELETE * FROM tbTelefone WHERE CodTelefone=" & Me.txtCodTelefone & ""
         
             MsgBox ("Exclusão realizada com sucesso!"), vbInformation + vbOKOnly, "Exclusão de Registro!"
         
              Else
              Exit Sub
            End If
           End If
    End If
       
       LimparCampos
       Forms!frmContato!ListBox1.Requery    
       cmdEditar.Enabled = False
       cmdExcluir.Enabled = False
    End Sub

    [Resolvido]Deletar registros relacionados Relaci10[/url]
    good guy
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1267
    Registrado : 05/02/2010

    [Resolvido]Deletar registros relacionados Empty Deletar registros relacionados

    Mensagem  good guy em 14/9/2018, 19:24

    Olá Alan,

    O erro no código está na sintaxe do código do telefone. Identifique este código em uma variável específica e aí vai rolar.


    CurrentDb.Execute "DELETE * FROM tbTelefone WHERE CodTelefone=" & Me.txtCodTelefone & ""
    avatar
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 157
    Registrado : 25/07/2017

    [Resolvido]Deletar registros relacionados Empty Re: [Resolvido]Deletar registros relacionados

    Mensagem  alantb em 14/9/2018, 19:38

    Segue design, para melhor analisar...

    ALAN

    [Resolvido]Deletar registros relacionados Tbsmod10[/url]
    good guy
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1267
    Registrado : 05/02/2010

    [Resolvido]Deletar registros relacionados Empty Deletar registros relacionados

    Mensagem  good guy em 14/9/2018, 19:52

    Olá Alan,

    Não veio.
    avatar
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 157
    Registrado : 25/07/2017

    [Resolvido]Deletar registros relacionados Empty Re: [Resolvido]Deletar registros relacionados

    Mensagem  alantb em 14/9/2018, 20:10

    Caro amigo good guy, agora pouco havia enviado somente o print com o design das tabelas. Portanto segue em anexo cópia bd. Para teste abrir os seguintes forms:

    - frmCadContato - onde é cadastrado os Nomes;
    - frmContato - onde é cadastrado os telefones;
    - frmLigacoes - onde é cadastrado os registros das ligações solicitadas para a telefonista.

    E também frmPrincipal executar os menus correspondentes..

    ALAN
    Anexos
    [Resolvido]Deletar registros relacionados AttachmentContato.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.1 Mb) Baixado 13 vez(es)
    avatar
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 157
    Registrado : 25/07/2017

    [Resolvido]Deletar registros relacionados Empty Re: [Resolvido]Deletar registros relacionados

    Mensagem  alantb em 14/9/2018, 20:14

    Esqueci de comentar anteriormente, a exclusão do telefone em tbTelefone com string funcionou. Está no bd em anexo. Mas agora o problema se transferiu para frmCadContato. Não exclui os cadastros de teste que inclui. Sigo tentanto.....

    ALAN
    good guy
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1267
    Registrado : 05/02/2010

    [Resolvido]Deletar registros relacionados Empty Deletar registros relacionados

    Mensagem  good guy em 14/9/2018, 20:47

    Olá Alan,

    Tente agora com este código:

    Código:
    Private Sub cmdExcluir_Click()
    On Error Resume Next
    Dim intCodContato As Integer
    Dim strSQL As String

    intCodContato = Me.txtCodContato
    strSQL = "DELETE * FROM tbContato WHERE codContato=" & intCodContato

    If MsgBox("Deseja EXCLUIR esse Contato ?", vbQuestion + vbYesNo, "Excluir Registro") = vbYes Then
          If DCount("*", "tbRegistro", "CodContato = " & intCodContato) <> 0 Then
            If MsgBox("Deseja mesmo EXCLUIR esse contato?" & vbCrLf & "Ele faz parte de uma associação com outros registros.", vbQuestion + vbYesNo, "Exclusão de Registros") = vbYes Then
           
            DoCmd.SetWarnings False
            CurrentDb.Execute strSQL
            DoCmd.SetWarnings True
           
            DoCmd.RunCommand acCmdRefresh
            Me.ListBox1.Requery
           
        MsgBox ("Exclusão realizada com sucesso!"), vbInformation + vbOKOnly, "Exclusão de Registro!"
         
            Else
            Exit Sub
      End If
      End If
      End If
     
       
        LimparCampos
        Forms!frmCadContato!ListBox1.Requery
       
        cmdEditar.Enabled = False
        cmdExcluir.Enabled = False
       
    End Sub
    avatar
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 157
    Registrado : 25/07/2017

    [Resolvido]Deletar registros relacionados Empty Re: [Resolvido]Deletar registros relacionados

    Mensagem  alantb em 14/9/2018, 21:01

    Good guy, fiz umas alterações no meu código. Alterei a ordem de algumas linhas e deu certo. Veja:

    no frmCadContato:

    If MsgBox("Deseja EXCLUIR esse Contato ?", vbQuestion + vbYesNo, "Excluir Registro") = vbYes Then
    If DCount("*", "tbRegistro", "CodContato =" & Me.txtCodContato) <> 0 Then

    MsgBox "Registro não pode ser Excluído nesse momento?" & vbCrLf & "Ele faz parte de uma associação com outros registros.", vbExclamation + vbOKOnly, "Exclusão de Registros"
    Exit Sub
    Else

    DoCmd.RunSQL "DELETE * FROM tbContato WHERE CodContato=" & Me.txtCodContato & ""

    DoCmd.SetWarnings False
    MsgBox ("Exclusão realizada com sucesso!"), vbInformation + vbOKOnly, "Exclusão de Registro!"


    End If
    End If
    '------------------------------------------------------------------------
    no frmContato

    If MsgBox("Deseja EXCLUIR esse Contato ?", vbQuestion + vbYesNo, "Excluir Registro") = vbYes Then
    If DCount("*", "tbRegistro", "CodContato =" & Me.txtCodContato) <> 0 Then

    MsgBox "Registro não pode ser Excluído nesse momento?" & vbCrLf & "Ele faz parte de uma associação com outros registros.", vbExclamation + vbOKOnly, "Exclusão de Registros"
    Exit Sub
    Else

    DoCmd.RunSQL "DELETE * FROM tbContato WHERE CodContato=" & Me.txtCodContato & ""

    DoCmd.SetWarnings False
    MsgBox ("Exclusão realizada com sucesso!"), vbInformation + vbOKOnly, "Exclusão de Registro!"


    End If
    End If
    '---------------------------------------------------------------------------------------
    no frmLigacoes

    If MsgBox("Deseja EXCLUIR esse registro ?", vbQuestion + vbYesNo, "Excluir Registro") = vbYes Then

    CurrentDb.Execute "DELETE * FROM tbRegistro WHERE CodRegistro=" & Me.txtCodRegistro & ""
    MsgBox ("Exclusão realizada com sucesso!"), vbInformation + vbOKOnly, "Exclusão de Registro!"

    Else
    Exit Sub
    End If

    Da forma apresentada acima está dando certo.Mas vou ter de fazer mais testes para ter certeza. Se aparecer algum erro tento o código que sugeriu anteriormente. Só fiquei admirado que no frmCadContato ao excluir surge uma msg do próprio Access dizendo que vou excluir a linha selecionada e não terá como desfazer. Tem como não mostrar essa msg cada vez que exclui um registro???

    ALAN

    Alan
    avatar
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 157
    Registrado : 25/07/2017

    [Resolvido]Deletar registros relacionados Empty Re: [Resolvido]Deletar registros relacionados

    Mensagem  alantb em 17/9/2018, 04:26

    Boa noite, só tive tempo de voltar ao tópico agora para poder finalizar. De acordo com as modificações que informei anteriormente e depois de fazer mais testes agora pouco, a solução deu certo. Obrigado ai Good Guy pela força e orientações. Estou encerrando aqui. Até a próxima...

    ALAN
    good guy
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1267
    Registrado : 05/02/2010

    [Resolvido]Deletar registros relacionados Empty Deletar registros relacionados

    Mensagem  good guy em 17/9/2018, 16:37

    Olá Alan,

    Estamos aí para ajudar e não necessariamente trazer soluções, pois cada um que posta já é em potencial um programador. Bola pra frente !!! O fórum todo agradece. Fé em Deus em primeiro lugar !!!

    Se quiser adquirir meus livros para ampliar seus conhecimentos:

    Para iniciante:
    http://www.maximoaccess.com/t32310-segundo-livro-publicado-do-good-guy-domine-o-access-vba-para-iniciantes-na-programacao

    Para usuário avançado:
    http://www.maximoaccess.com/t29536-livro-publicado-tecnicas-especiais-de-access-vba-da-autoria-de-good-guy

    "O temor do Senhor(respeito pela Palavra de Deus, leitura e obediência) é o princípio do conhecimento" (Prov. 1.7)
    Disse Jesus: "E conhecereis a Verdade e a Verdade vos libertará". (Jo 8.32)
    Disse Jesus: “Eu sou a luz do mundo; aquele que me segue, não andará em trevas, mas terá a luz da vida.” (Jo. 8.12)

    Conteúdo patrocinado

    [Resolvido]Deletar registros relacionados Empty Re: [Resolvido]Deletar registros relacionados

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/5/2019, 16:24