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

    Erro no Update 3201, Depois de fazer relação entre tabelas

    Compartilhe

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Seg 18 Set 2017, 12:52

    Bom dia, Pessoal!

    esse código abaixo, eu uso em um botão para incluir produtos de um formulário (Compra ) no SubForms (Compra_Subforms), Ou seja tenho duas tabelas que uma é compra e a outra compra_SubForms esse subforms ele recebe todos os produtos que foi comprado, ate aqui tudo bem, o comando funcionar perfeitamente. Só que quando excluí uma compra no formulário, na tabela de compra também excluir a compra, perfeitamente, só que  não se excluir da tabela compraSubForms. Então modifique minha tabelas em Relações, Marquei as propriedades Importa, Propagar Atualização e Propagar exclusão, Então depois disso resolveu meu problema de exclusão, quando excluir no formulário compra (TabalaCompra ) ele já excluir em CompraSubFomrs (TabelaCompraSubForms), Só que encontre um Problema, Meu Botão não funciona mais, Da um erro no "Update" = erro 3201 "Não é possível adicionar ou alterar registro,pois é necessário que ele tenha um registro relacionado na tabela compra.

    esse seria meu problema, alguém poderia e ajuda ??


    'Dim db As Database
    'Dim rs As DAO.Recordset

       If IsNull(IDCompraProduto) Then
           MsgBox "Nota não foi Aberta", vbInformation, "Aviso"
           Exit Sub
       ElseIf IsNull(NºNotaFiscal) Then
           MsgBox "O preenchimento do campo Nº Nota Fiscal é obrigatória", vbInformation, "Aviso"
           Me.NºNotaFiscal.SetFocus
           Exit Sub
       ElseIf IsNull(CBO_CodigoCompra) Then
           MsgBox "A seleção do produto é obrigatória, por código ou descrição.", vbInformation, "Aviso"
           Me.CBO_CodigoCompra.SetFocus
           Exit Sub
       ElseIf IsNull(TXT_QTDCompra) Then
           MsgBox "O preenchimento do campo QTD é obrigatória", vbInformation, "Aviso"
           Me.TXT_QTDCompra.SetFocus
           Exit Sub
       ElseIf IsNull(Fornecedor) Then
           MsgBox "O preenchimento do campo Fornecedor é obrigatório", vbInformation, "Aviso"
           Me.Fornecedor.SetFocus
           Exit Sub
           Else
           
           Dim db As Database
           Dim rs As DAO.Recordset

               Set db = CurrentDb() 'abre o banco de dados
               Set rs = db.OpenRecordset("TBL_MOV_Compra_SubForms_ListaProduto") 'Abre Tabela
                         
                      rs.AddNew 'Adiciona um novo registro
                      rs("IDCompraProdutoDet") = Me.IDCompraProduto
                      rs("QTDEntrada") = Me.TXT_QTDCompra
                      rs("CodProdutoCompra") = DLookup("IDProduto", "TBL_CDS_Produto", "CodProduto='" & Me.CBO_CodigoCompra & "'")
                      rs("Desconto") = Me.TXT_DescontoCompra
                      'rs("EntradaEstoqueVenda") = Me.TXT_SeleçãoVendaOrçamento
                      'rs("ValorUnit") = Me.TXTValorUnitario
                       rs.Update ' atualiza
                         
                   
                      rs.Close
                      db.Close
                      Me.FRM_MOV_Compra_SubForms_Produto.Requery 'Atualiza o SubForm
                      Me.Recalc
                      Me.Refresh
                      CBO_DescriçãoCompra = Null
                      Me.CBO_CodigoCompra = Null
                      Me.CBO_CodigoCompra.SetFocus
                      DoCmd.Save
       End If
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Silvio em Seg 18 Set 2017, 13:05

    Bom dia, erro de relacionamento mesmo, verificar se a chave primária da tabela compras se faz presente na tabela subcompras

    Tem que estar dessa forma conforme a figura abaixo:

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


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Seg 18 Set 2017, 13:23

    Bom dia!
    sim esta dessa forma na minha relação, puxa de uma campo que é a chave primaria, o outro campo não.
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Silvio em Seg 18 Set 2017, 13:43

    Poste as entidades envolvidas para analises.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Seg 18 Set 2017, 13:52

    OK! esta no anexo.

    Trata se do Formulário FRM_MOV_Compra
    Anexos
    SISETQ- Sistema de Estoque.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (303 Kb) Baixado 1 vez(es)
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Silvio em Seg 18 Set 2017, 14:08

    "Trata se do Formulário FRM_MOV_Compra"--> não veio ou não existe !


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Seg 18 Set 2017, 14:11

    Desculpa! Mandei o sistema errado kkkkkkkk
    foi o correto
    Anexos
    Teste Update.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (2.5 Mb) Baixado 3 vez(es)
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Silvio em Seg 18 Set 2017, 15:11

    Algo parecido com isso...


    Código:
    Private Sub Comando150_Click()
    On Error GoTo fim
    Dim numRecord As Integer
    Dim UserLevel
    UserLevel = (IsNull(DLookup("[CDMCompraExcluir]", "Usuario", "[CDMCompraExcluir] =  0 " _
                & " AND [login] = '" & Form_FRM_MOV_Compra.TXT_Usuario() & "'"))) ' verifiar se o usuario logado tem autorização ao acesso ao campo
               
        'Código verifica se usuario logado tem autorização para acesso
        If UserLevel = -1 Then
            'excluir registro
                numRecord = InputBox("Informe o Id da Compra Produto....:", Me.Caption)
                If MsgBox("Deseja excluir a Compra " & numRecord & " ?" & vbCrLf & "N.Fiscal:  " & Me.NºNotaFiscal, vbQuestion + vbYesNo, Me.Caption) = vbYes Then
                CurrentDb.Execute "DELETE FROM TBL_MOV_Compra WHERE IDCompraProduto=" & Me.IDCompraProduto & "" 'deleto o pedido atual
                DoCmd.RunCommand acCmdRefresh
                DoCmd.GoToRecord , , acNewRec
                MsgBox "Exclusão realizada com sucesso!", vbInformation, Me.Caption
                Else
                MsgBox " Ação cancelada pelo usuário", vbInformation, Me.Caption
                Exit Sub
                End If
                DoCmd.RunCommand acCmdRefresh
            Else
            MsgBox "Você não esta autorizado ao acesso desse campo, procure o administrado" & _
                  " para autorizar seu acesso. ", vbCritical, "Acceso Negado"
      End If

    fim:
    If Err.Number = 13 Then
    MsgBox "Ação cancelada pelo usuário", vbInformation, Me.Caption
    End If
    End Sub


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Ter 19 Set 2017, 13:10

    Bom dia!
    meu exemplo é muito bom, mais não me ajudou muito nesse momento, fiz alguns teste aqui no meu sistema, só que não deu certo. O meu problema ta pq so excluir os dados da Tabela TBL_MOV_Compra, mais essa tabela tem o sub forms tabela TBL_MOV_Compra_SubForms_ListaProduto onde fica os produtos, então quando excluir o produto da TBL_MOV_Compra quero excluir os dados da TBL_MOV_Compra_SubForms_ListaProduto automaticamente
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Silvio em Ter 19 Set 2017, 13:42

    Acrescente isso abaixo do delete

    CurrentDb.Execute "DELETE FROM TBL_MOV_Compra_SubForms_ListaProduto WHERE IDCompraProdutoDet=" & Me.IDCompraProduto & ""


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Ter 19 Set 2017, 13:59

    Amigo!
    Ta dando certo, mais duas coisas
    1 Quando excluir ele não esta atualizando fiz algumas modificações mais não deu certo.
    2 teria como fica automático a seleção do id, sem precisa digita qual seria o id a ser excluído?

    Mais muito obrigado ate aqui, Muito bom esse seu exemplo.
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Silvio em Ter 19 Set 2017, 14:17

    Tente assim..

    Código:
    Private Sub Comando150_Click()
    On Error GoTo fim

    Dim UserLevel
    UserLevel = (IsNull(DLookup("[CDMCompraExcluir]", "Usuario", "[CDMCompraExcluir] =  0 " _
                & " AND [login] = '" & Form_FRM_MOV_Compra.TXT_Usuario() & "'"))) ' verifiar se o usuario logado tem autorização ao acesso ao campo
               
        'Código verifica se usuario logado tem autorização para acesso
        If UserLevel = -1 Then
            'excluir registro
               
                If MsgBox("Deseja excluir a Compra " & " ?" & vbCrLf & "N.Fiscal:  " & Me.NºNotaFiscal, vbQuestion + vbYesNo, Me.Caption) = vbYes Then
                CurrentDb.Execute "DELETE FROM TBL_MOV_Compra WHERE IDCompraProduto=" & Forms!Frm_mov_compra!IDCompraProduto & "" 'deleto o pedido atual
                CurrentDb.Execute "DELETE FROM TBL_MOV_Compra_SubForms_ListaProduto WHERE IDCompraProdutoDet=" & Forms!Frm_mov_compra!IDCompraProduto & "" 'deleto o pedido atual
                Me.Requery
               
                DoCmd.GoToRecord , , acNewRec
                MsgBox "Exclusão realizada com sucesso!", vbInformation, Me.Caption
                Else
                MsgBox " Ação cancelada pelo usuário", vbInformation, Me.Caption
                Exit Sub
                End If
                DoCmd.RunCommand acCmdRefresh
            Else
            MsgBox "Você não esta autorizado ao acesso desse campo, procure o administrado" & _
                  " para autorizar seu acesso. ", vbCritical, "Acceso Negado"
      End If

    fim:
    If Err.Number = 13 Then
    MsgBox "Ação cancelada pelo usuário", vbInformation, Me.Caption
    End If

    End Sub


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Ter 19 Set 2017, 14:40

    ele ainda não esta excluindo da tabela Sub. todos os produto lanchado ainda continua na tabela.

    Uma pergunta, Em relação de tabelas muda a relação de tabelas? ou selecionar os campos de atualização e exclusão?
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Silvio em Ter 19 Set 2017, 14:53

    Eis o arquivo, veja !
    Anexos
    Teste Update_new.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (2.4 Mb) Baixado 3 vez(es)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Ter 19 Set 2017, 14:59

    Mais se deixa o as tabelas liga dessa forma que esta no exemplo ele da o erro Update. é por isso não consigo excluir. meu problema todo ta nesse Update que da erro quado faço as ligações das tabelas marcando as três caixa da referencia.

    Misson Lira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 01/12/2016

    Re: Erro no Update 3201, Depois de fazer relação entre tabelas

    Mensagem  Misson Lira em Seg 02 Out 2017, 18:27

    boa tarde! alguem teria mais alguma ideia em como posso resolver esse meu problema?


      Data/hora atual: Ter 21 Nov 2017, 17:34