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


2 participantes

    Modelo de dados com atributos opcionais

    avatar
    MPC
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 27/12/2015

    Modelo de dados com atributos opcionais Empty Modelo de dados com atributos opcionais

    Mensagem  MPC 9/12/2016, 00:17

    Cumprimentos aos amigos do forum.

    Preciso de uma ajuda com modelamento de dados. Ocorre o seguinte:
    Haverá uma tabela de produtos (no caso componentes eletrônicos).
    Um dos atributos, para determinados tipos, é o tipo de encapsulamento do componente.
    No entanto há outros produtos onde esta informação não é necessária ou mesmo não existe e estes que não necessitam deste atributo serão a maioria nesta banco.
    Como modelar os dados de tal forma que este atributo seja opcional, isto é, só apareça quando o produto assim o exigir, mantendo o banco o mais enxuto possível?
    Criar uma nova tabela e relacioná-la?  Atribuir um valor tipo "sem dados" ou coisa semelhante?
    O sistema será feito em Access mas estou ainda na fase do projeto do banco.
    O sistema é muito simples pois apenas facilitará saber se há o componente em estoque (e a quantidade) ou não.
    Trata-se de um sistema que terá sua utilidade real e ao mesmo tempo será um aprendizado do Access.

    Muito obrigado.

    Obs.:Sou novato aqui neste forum, caso não seja o local adequado para estes questionamentos, por favor me informem como fazê-lo.
    Jair Martins
    Jair Martins
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 78
    Registrado : 23/03/2016

    Modelo de dados com atributos opcionais Empty Re: Modelo de dados com atributos opcionais

    Mensagem  Jair Martins 9/12/2016, 12:26

    Bom dia, MPC.

    Pelo visto, será necessária sim uma tabela para os tipos de encapsulamento que, imagino, sejam vários.
    Mas é preciso definir se um mesmo produto terá apenas um tipo de encapsulamento ou vários.
    Se houver apenas um, apenas a tabela TiposEncapsulamento será necessária e deverá haver um relacionamento um-para-um com a chave estrangeira na tabela Produtos.
    Se houver possibilidade de ter mais de um tipo de encapsulamento por produto, então há a necessidade de criar uma tabela intermediária para armazenar quais os tipos de encapsulamento para o mesmo produto, relacionada com as tabelas Produtos e TiposEncapsulamento.
    Já para exibr "Sem Dados" quando não houver a informação relativa a um produto, isso pode ser feito no objeto da interface (formulário ou relatório ou, até mesmo, em consultas).

    Abs.
    avatar
    MPC
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 27/12/2015

    Modelo de dados com atributos opcionais Empty Re: Modelo de dados com atributos opcionais

    Mensagem  MPC 9/12/2016, 15:50

    Bom dia Jair.

    Obrigado pela resposta esclarecedora.

    Um mesmo componente poderá ter vários tipos de encapsulamento.
    Mas como disse, nem todos os componentes necessitam deste tipo de informação por não serem relevantes ou por não existir mesmo.
    Estudando um pouco mais, notei que se trata do caso de especialização do modelamento de dados.
    Mas entendi a sua proposição.
    Como também sou novato em Access, se não for pedir muito, poderia criar um pequeno exemplo e postar para que eu possa estudá-lo, se possível com um formulário para consulta/cadastramento?

    Muito obrigado.

    Abç.
    Jair Martins
    Jair Martins
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 78
    Registrado : 23/03/2016

    Modelo de dados com atributos opcionais Empty Re: Modelo de dados com atributos opcionais

    Mensagem  Jair Martins 9/12/2016, 17:35

    Olá, MPC.

    Em geral, não costumo criar o aplicativo, porque isso demanda uma série de outras informações que temos que ter.  No seu caso, resolvi abrir exceção devido à simplicidade do requisito.
    Em primeiro lugar, criei as tabelas. Uma para os produtos, uma para os tipos de encapsulamento e a tabela intermediária, que vai armazenar todos os tipos para cada um dos produtos. Nesta tabela, só prá complicar um pouquinho e demonstrar prá você como é a lógica da modelagem, resolvi incluir um campo Quantidade, que não sei se aplica-se no seu caso ou não. Se não se aplicar, apague. Mas o importante é que fique claro como você pode atribuir dados complementares à relação Produtos/Tipos de Encapsulamento.
    Observe que, nesta tabela, usei uma chave primária dupla, para garantir que o mesmo Tipo de Encapsulamento não será repetido para o mesmo Produto.
    Depois, criei a consulta para unir os dados das tabelas.
    Finalmente, criei os forms: um para o cadastro de Produtos, um para o cadastro dos Tipos de Encapsulamento e o subform para abrigar as relações Produtos/Tipos de Encapsulamento.
    Este subform foi anexado ao cadastro dos Produtos, com a definição dos Campos Mestre e Filho.
    No subform, originado na consulta, inseri uma combo, que relaciona pela Descrição os Tipos de Encapsulamento disponíveis. Dessa forma, é só o usuário escolher o Tipo para aquele Produto e definir a quantidade.

    Dê uma olhada. Havendo dúvidas, estamos à disposição.
    Anexos
    Modelo de dados com atributos opcionais AttachmentProdutos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (45 Kb) Baixado 6 vez(es)
    avatar
    MPC
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 27/12/2015

    Modelo de dados com atributos opcionais Empty Re: Modelo de dados com atributos opcionais

    Mensagem  MPC 10/12/2016, 11:44

    Bom dia Jair.

    Entendo sua posição. E agradeço muito mesmo pela sua disposição em me ajudar.
    Vou estudar com cuidado suas observações e tabelas/formulários.

    Só mais uma outra dúvida: Como tenho muitos componentes para cadastrar e muitos do mesmo tipo, só mudando um atributo (por exemplo: valor), tem como manter os atributos fixos ao incluir um novo cadastro?

    Explicando melhor: tenho que cadastrar resistores de diversos valores e suas quantidade. Ok, cadastro o primeiro do zero. Para os demais, o formulário mantém todos os dados do cadastramento anterior e aí só mudo o valor e a quantidade por exemplo (ou seja, quaisquer atributos que diferenciam este cadastro do cadastro anterior). Isto é relativamente simples ou tem que ser em VBA?

    Mais uma vez, muito obrigado mesmo!

    Abçs.
    Jair Martins
    Jair Martins
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 78
    Registrado : 23/03/2016

    Modelo de dados com atributos opcionais Empty Re: Modelo de dados com atributos opcionais

    Mensagem  Jair Martins 10/12/2016, 14:34

    Olá, MPC.

    O seu requisito tem uma solução simples, mas é em VBA.
    E só para ficar mais interessante, usei também a linguagem SQL.
    A solução que estou enviando foi baseada no DB de exemplo que enviei e serve para criar uma única cópia de cada vez.  Se você precisar fazer cópias em lote, o procedimento é um pouco mais complicado.

    Vamos lá. Você pode, para testar, usar esta estratégia no próprio form frmProdutos do BD que enviei. Crie um botão de comando e, no evento Ao Clicar deste botão, coloque o seguinte código:


       Dim strSQL As String
       Dim lngNum As Long
       
       lngNum = Me.prdId
       
       strSQL = "INSERT INTO tblProdutos ( prdDescricao )" _
       & "SELECT tblProdutos.prdDescricao" _
       & " FROM tblProdutos" _
       & " WHERE (((tblProdutos.prdId)=" & lngNum & "));"
       
       DoCmd.RunSQL strSQL



    Faça o tratamento de erros e está pronto.

    IMPORTANTE: Evidentemente haverá outros campos a serem copiados. Então, não esqueça de apontá-los tanto na linha que começa com INSERT, quanto na linha SELECT da instrução SQL.

    Ficaria algo mais ou menos assim:

      strSQL = "INSERT INTO tblProdutos ( campo1, campop2, campo3, campo4 )" _
       & "SELECT tblProdutos.campo1, tblProdutos.campo2, tblProdutos.campo3, tblProdutos.campo4" _
       & " FROM tblProdutos" _
       & " WHERE (((tblProdutos.prdId)=" & lngNum & "));"

    Boa diversão.

    Abs.
    avatar
    MPC
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 27/12/2015

    Modelo de dados com atributos opcionais Empty Re: Modelo de dados com atributos opcionais

    Mensagem  MPC 10/12/2016, 16:08

    Obrigado Jair.

    Vou testar aqui.

    Valeu mesmo.

    Conteúdo patrocinado


    Modelo de dados com atributos opcionais Empty Re: Modelo de dados com atributos opcionais

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 19:22