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

    [Resolvido]Deletar registros relacionados

    avatar
    alantb
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alantb 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 : Respeito às Regras 100%

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

    [Resolvido]Deletar registros relacionados Empty Deletar registros relacionados

    Mensagem  good guy 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
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alantb 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 : Respeito às Regras 100%

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

    [Resolvido]Deletar registros relacionados Empty Deletar registros relacionados

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

    Olá Alan,

    Não veio.
    avatar
    alantb
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alantb 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 21 vez(es)
    avatar
    alantb
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alantb 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 : Respeito às Regras 100%

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

    [Resolvido]Deletar registros relacionados Empty Deletar registros relacionados

    Mensagem  good guy 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
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alantb 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
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alantb 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 : Respeito às Regras 100%

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

    [Resolvido]Deletar registros relacionados Empty Deletar registros relacionados

    Mensagem  good guy 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:
    https://www.maximoaccess.com/t32310-segundo-livro-publicado-do-good-guy-domine-o-access-vba-para-iniciantes-na-programacao

    Para usuário avançado:
    https://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)

      Data/hora atual: 12/6/2021, 23:40