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

    avatar
    frankhosaka
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty [Resolvido]Lista de compra

    Mensagem  frankhosaka 10/2/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 25/2/2018, 11:18, editado 1 vez(es)
    Noobezinho
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  Noobezinho 11/2/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


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    cleverson_manaus
    cleverson_manaus
    VIP
    VIP

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  cleverson_manaus 16/2/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.



    .................................................................................
    afro

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

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  frankhosaka 24/2/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
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  Noobezinho 24/2/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!


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    frankhosaka
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  frankhosaka 25/2/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
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  Noobezinho 25/2/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


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    frankhosaka
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  frankhosaka 25/2/2018, 11:17

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

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  Noobezinho 25/2/2018, 11:28


    É essa a filosofia!!

    Boa sorte !



    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  Alexandre Neves 25/2/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
    cleverson_manaus
    cleverson_manaus
    VIP
    VIP

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Lista de compra Empty Re: [Resolvido]Lista de compra

    Mensagem  cleverson_manaus 25/2/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.



    .................................................................................
    afro

    "É 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: 13/6/2021, 00:35