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]Lista de compra

    Compartilhe

    frankhosaka
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 22/12/2017

    [Resolvido]Lista de compra

    Mensagem  frankhosaka em Sab 10 Fev 2018, 09:28

    A minha tblCompra é assim

    Data
    CódigoProduto
    Quantidade
    CódigoFornecedor

    Para evitar de comprar a mesma coisa, defini CódigoProduto como Indexado (sem autorização para repetição), e funciona que é uma maravilha.

    O problema é quando eu já comprei o produto, e eu quero excluir o registro, e ele não deixa porque "a tblHistoricoProduto tem registros vinculados à tblProduto", ou seja, ele entende que eu quero eliminar um registro da tblProduto, quando eu só queria eliminar o registro da tblCompra.

    Para resolver isso, eu entro no modo edição, e altero o CódigoProduto como Não Indexado na tblCompra. Salvo, e fecho a tabela. Entro no formulário da lista de compra, elimino o registro. Depois fecho o formulário, volto no modo estrutura da tabela e altero o campo CódigoProduto como Indexado sem autorização , e depois salvo a tblCompra.

    É trabalhoso.

    Tem algum jeito de eliminar um registro de uma tabela sem que afete a outra tabela que apresenta mais detalhes de um item?


    Última edição por frankhosaka em Dom 25 Fev 2018, 11:18, editado 1 vez(es)

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Lista de compra

    Mensagem  Noobezinho em Dom 11 Fev 2018, 11:12

    Frank

    Se tiver a tabela compras vinculada (relacionada) com a tabela tblHistoricoProduto  então não poderá realmente

    deletar o registro, pois iria deletar o dados pertinente ao produto  nas duas tabelas, o que seria um erro, caso quisesse

    pesquisar o histórico de compras.

    A tabela produto não precisa ser relacionada com nenhuma tabela, já que quando for comprar um produto poderá usar

    uma combobox com a relação de produtos.

    Para evitar apagar as compras utilize um novo campo de status, ( comprado = sim/não), assim vai evitar repetir a compra

    de um mesmo produto.

    [ ]'s
    avatar
    cleverson_manaus
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 880
    Registrado : 23/09/2011

    Re: [Resolvido]Lista de compra

    Mensagem  cleverson_manaus em Sex 16 Fev 2018, 23:08

    Realmente, a integridade referencial é uma segurança para a integridade dos dados, como o próprio nome já diz.

    Mas não estou conseguindo captar a sua lógica de não repetir a compra de um produto.

    Como vc vai renovar o estoque desse produto?

    Talvez seria bom vc revê os relacionamentos de suas tabelas.


    Até porque, vc tem a opção de propagação para excluir os registros filhos quando da exclusão do registro pai.



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

    "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer."(Aristóteles)
    - Dúvida resolvida!!! Marcar o tópico como resolvido!!!

    frankhosaka
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 22/12/2017

    Re: [Resolvido]Lista de compra

    Mensagem  frankhosaka em Sab 24 Fev 2018, 16:41

    Vamos ver se consigo explicar melhor:

    tblProduto
    -codProduto (Chave)

    tblHistProduto
    CodProduto

    tblListaCompra
    CodProduto

    Eu defini o relacionamento de um para muitos da tblProduto para tblHistProduto, bem como da tblProduto para tblListaCompra.

    O problema é o campo CodProduto.

    Na tblHistProduto, eu defini que o CodProduto NÃO é indexado, e assim consigo acrescentar ou eliminar o registro sem nenhum problema.

    Na tblListaCompra, eu defini que o CodProduto é Indexado sem permissão de repetição, ou seja, não posso comprar o mesmo produto mais de uma vez, isso é parte do que eu queria para essa tabela. O problema é quando eu preciso eliminar esse registro, depois que providenciar a compra. O Access não permite eliminar o registro alegando que existem registros na tblHistProduto vinculado à tblProduto - isso eu não entendo, o que queria eliminar era o registro da tblListaCompra e não o registro da tblProduto.

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Lista de compra

    Mensagem  Noobezinho em Sab 24 Fev 2018, 18:15

    Frank

    Fez o contrário.


    Assim:

    tblCompra

    CodCompra  Auto numérico (chave)
    datacompra
    outros dados


    tblDetalhesCompra

    CodCompra -número- inteiro longo
    codProduto
    descrição/Nome -- No formulário faça uma combobox dos produtos da tblProdutos.
    quantidade
    valorUnit
    Comprado Sim/não

    Na tabela tblDetalhesCompra que irá fornecer  o relatório de produtos comprados, portanto, não precisa deletar os produtos comprados.
    Ao inves de apagar, usa-se o comprado = sim/não. padrão = não

    As duas tabelas acima, terão o relacionamento de 1 para muitos. somente elas.


    tblProduto
    CodProduto - Auto numérico  (chave) -Não precisa relacionar com nenhuma tabela, já que irá usar a combobox, para escolher o que comprar
    Descrição
    ValorUnit - Esse campo que sofrerá as mudanças de valores, não influenciando nos valores da tblDetalhesCompra


    Qualquer dúvida, retorne!

    frankhosaka
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 22/12/2017

    Re: [Resolvido]Lista de compra

    Mensagem  frankhosaka em Dom 25 Fev 2018, 08:16

    Era justamente isso que eu não queria fazer.

    Imagine que eu preciso comprar 5 kg de farinha.
    No outro dia, alguém me lembra que preciso comprar 5 kg de farinha. Eu vou lá e anoto mais 5 kg de farinha.
    No outro dia, alguém me lembra que preciso comprar 5 kg de farinha. Eu vou lá e anoto mais 5 kg de farinha.
    Nessa brincadeira, temos três registros iguais, quando eu queria apenas um.

    Para evitar a multiplicidade do mesmo produto é que defini o código do produto como campo indexado sem permissão para repetir.

    O problema é que o Access não permite deletar o registro depois que montei o pedido de compra - ou, o que é pior, quando ele deleta o registro da lista de compra ele também deleta o registro da tabela de produtos - isso sim é um desastre.

    Estou vendo que preciso mudar o escopo.

    Já que eu não posso definir o campo código do produto como indexado sem permissão de repetir, como faço para alertar o usuário que o produto solicitado já foi anotado?


    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Lista de compra

    Mensagem  Noobezinho em Dom 25 Fev 2018, 11:04

    Você deve conhecer a função Dcount(), não?

    Se não veja, ela conta quantos de um determinado registro existem numa tabela assim:

    Código:

    If Dcount( "*", "tblDetalhesCompra", "[codProduto] = " & Me.codProduto & " and [Comprado] = 0") > 0 then

      msgbox "Este produto já consta na lista de compras", vbCritical, "Atenção"

    Endif

    O código acima verifica se já existe registro da compra de um determinado produto que ainda não foi comprado.

    Se existir (> 0) , ele BERRA!

    Estou tentando demonstrar que se pode conseguir o que pretende sem deletar registros, pois talvez precise deles no futuro,

    como por exemplo, fazer um levantamento da quantidade comprada de um produto em um determinado período.

    [ ]'s


    [ ]'s

    frankhosaka
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 22/12/2017

    Re: [Resolvido]Lista de compra

    Mensagem  frankhosaka em Dom 25 Fev 2018, 11:17

    Boa ideia! Ao invés de mexer na tabela eu faço o controle pelo formulário! Valeu!

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Lista de compra

    Mensagem  Noobezinho em Dom 25 Fev 2018, 11:28


    É essa a filosofia!!

    Boa sorte !

    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6723
    Registrado : 05/11/2009

    Re: [Resolvido]Lista de compra

    Mensagem  Alexandre Neves em Dom 25 Fev 2018, 12:44

    Boa tarde,
    Devia ter dados na tabela de compra para saber data da compra
    Pelo que vi, basta registar a encomenda que fica como compra
    Devia ter tabela de encomendas, com dados da data de encomenda e da data de recepção da encomenda. Podia alertar para encomendas feitas e ainda não entregues, etc


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    cleverson_manaus
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 880
    Registrado : 23/09/2011

    Re: [Resolvido]Lista de compra

    Mensagem  cleverson_manaus em Dom 25 Fev 2018, 14:01


    Com certeza se vc postasse seu bd, já teríamos verificado melhor sua situação.

    E com os dados melhor ainda, mesmo que aleatoriamente.



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

    "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer."(Aristóteles)
    - Dúvida resolvida!!! Marcar o tópico como resolvido!!!

      Data/hora atual: Dom 27 Maio 2018, 09:11