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


3 participantes

    Filtrar dados por tabela

    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Filtrar dados por tabela

    Mensagem  Jonatan 24/9/2014, 14:57

    Olá, amigos. Preciso filtrar dados por tabela no meu formulário.

    Vou explicar melhor:

    1. Tenho um form de Pedidos e um subform DetalhesPedido
    2. E 6 tabelas de Estoque que tem relação um para muitos com a tabela DetalhesPedido
    3. No meu form Pedidos há um campo chamado Loja com o nome das 6 lojas que corresponde a cada um dos estoques.

    Então, preciso que quando eu selecionar uma loja no form Pedidos, eu trabalhe apenas com os dados do estoque correspondente.

    Costumava fazer isso com apenas um formulário, usava os critérios que precisava e funcionava. Mas delas forma nunca fiz e achei complicado.

    Desde já agradeço a ajuda de todos.

    Abrços
    LiveBrain
    LiveBrain
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 15/05/2011

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  LiveBrain 24/9/2014, 16:23

    você pode usar a propriedade RecordSource do seu formulário.
    Mais ou menos como no exemplo abaixo;

    Código:
    Select Case NomedoSeuCampoDaLoja
      Case "Loja 1"
        Me.RecordSource = "Select * from TabelaEstoqueDaLoja1"
      Case "Loja 2"
        Me.RecordSource = "Select * from TabelaEstoqueDaLoja2"
      Case "Loja 3"
        Me.RecordSource = "Select * from TabelaEstoqueDaLoja3"
      Case "Loja 4"
        Me.RecordSource = "Select * from TabelaEstoqueDaLoja4"
      Case "Loja 5"
        Me.RecordSource = "Select * from TabelaEstoqueDaLoja5"
      Case "Loja 6"
        Me.RecordSource = "Select * from TabelaEstoqueDaLoja6"
    End Select

    Voce pode inserir esse código na propriedade "Após Atualizar" do seu campo Loja
    Faça as adaptações necessárias para o seu caso


    .................................................................................
    Abraços

    Live Brain Tutoriais

    "Fraca é a pessoa que não conhece a força que possui nos amigos"
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 24/9/2014, 20:26

    Olá, amigo LiveBrain. Testei, mas não funcionou.

    Quando tento escolher a loja, os dados desaparecem e aparece a seguinte informação:

    O controle não pode ser editado, está acoplado a um campo desconhecido 'Loja'.

    Alguma ideia do que seja?

    Abraço
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 25/9/2014, 18:32

    Olá, amigo. Alguma ideia?

    Abraço
    LiveBrain
    LiveBrain
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 15/05/2011

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  LiveBrain 25/9/2014, 19:41

    O que pode estar acontecendo é o seguinte:

    Como você tem 6 tabelas, é preciso que todas sejam iguais em sua Estrutura ( nome dos campos e tipos ) pois dessa forma, quando você alterar o RecordSource do formulário, os campos não irão perder a referencia.

    Se mesmo assim continuar com o erro, peço disponibilizar o seu banco para que possamos analisar o que está ocorrendo.

    Lembrando que o Forum só aceita arquivos Zipado ( *.Zip )


    .................................................................................
    Abraços

    Live Brain Tutoriais

    "Fraca é a pessoa que não conhece a força que possui nos amigos"
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 26/9/2014, 11:16

    Segue o banco, amigo.

    Abraço
    Anexos
    Filtrar dados por tabela AttachmentTeste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (155 Kb) Baixado 14 vez(es)
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 29/9/2014, 19:09

    Olá, amigo LiveBrain.

    Conseguiu?

    Abraços
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 1/10/2014, 01:44

    Pessoal, alguma ideia?
    LiveBrain
    LiveBrain
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 15/05/2011

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  LiveBrain 1/10/2014, 03:22

    Jonatan,
    O que acontece no seu formulário é o seguinte...

    Você vinculou uma tabela Pedidos e seus campos... e quando você pede pra alterar o RecordSource do Formulário através da caixa de combinação, voce pede pra selecionar entre outras 6 tabelas Estoque.

    Voce tem que definir primeiro se esse formulário é pra Estoque ou Pedidos já que os campos das Tabelas Estoque não são os mesmos da tabela Pedidos


    .................................................................................
    Abraços

    Live Brain Tutoriais

    "Fraca é a pessoa que não conhece a força que possui nos amigos"
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Dilson 1/10/2014, 04:10

    Boa noite amigos. Tenho uma ajudinha pra oferecer.

    Eu resolveria da seguinte forma:

    Criava os subforms para cada loja usando as respectivas consultas ou tabelas, assim:
    SubForm1 com a Consulta 1
    SubForm2 com a Consulta 2
    SubForm3 com a Consulta 3
    SubForm4 com a Consulta 4
    SubForm5 com a Consulta 5
    SubForm6 com a Consulta 6

    Esvaziaria somente a Fonte do registro do Sub_DetalhesPedido e no evento após atualizar do combobox loja usaria o método SourceObject assim:

    Select Case NomedoSeuCampoDaLoja
      Case "Loja 1"
        Me!Sub_DetalhesPedido.SourceObject = "SubForm1"
      Case "Loja 2"
        Me!Sub_DetalhesPedido.SourceObject = "SubForm2"
      Case "Loja 3"
        Me!Sub_DetalhesPedido.SourceObject = "SubForm3"
      Case "Loja 4"
        Me!Sub_DetalhesPedido.SourceObject = "SubForm4"
      Case "Loja 5"
        Me!Sub_DetalhesPedido.SourceObject = "SubForm5"
      Case "Loja 6"
        Me!Sub_DetalhesPedido.SourceObject = "SubForm6"
    End Select



    Com alguns ajustes aí, vai dar certinho.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 7/10/2014, 16:56

    Amigo LiveBrain, o form Pedidos é para pedidos mesmo. Nesse formulário preciso usar apenas um dos seis estoques.
    Você pode fazer os ajustes no BD que eu disponibilizei, pois não estou conseguindo. Depois estudarei as mudanças.

    Obrigado, amigo.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 7/10/2014, 16:59

    Amigo Dilson, obrigado pela ajuda.

    Como eu deveria fazer o que sugeriu? Criar 6 subformulários no form pedidos? Não entendi bem, poderia exemplificar?

    Obrigado
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Dilson 7/10/2014, 20:21

    Você vai copiar e colar o sub_DetalhesPedido por seis vezes (dê o nome que quiser a eles. Eu sugeri que fosse nome sequencial) e colocará para cada um deles a consulta correspondente na Fonte do registro, ou seja, as suas consultas estoques. Daí vai no sub_DetalhesPedido que originou os outros seis subformulários e esvazia (apaga) a fonte de registro. Com tudo isso pronto implemente o código colocando os nomes reais de seus objetos e, em algum evento da sua combobox faça executar.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 8/10/2014, 20:11

    Entendo, Dilson, mas a origem do Sub_DetalhesPedido é apenas a tabela DetalhesPedido. A partir dessa tabela, no campo CódigoProduto, é que eu usaria varias origens de dados, que seria os 6 estoques.

    Segue essa ordem:

    Tabela DetalhesPedido > Campo CódigoProduto > Relação com os 6 estoques

    Sua ideia se aplica a meu BD?

    Abraços



    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 10/10/2014, 03:39

    Amigos, alguma ideia?

    Abraços
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Dilson 10/10/2014, 14:37

    Inicialmente a partir de seus relatos, essa questão me pareceu obvia. Agora, depois que fui ver o seu banco de dados, a questão me parece outra e que você não conseguiu descrever como que as implementações devem acontecer.

    Vou sugerir que publique outro banco de dados com alguns dados (fictícios) na maneira que vinha trabalhando antes de pensar em mudar o escopo. Acredito que a partir daí poderemos começar entender de fato o que precisa.

    Aguardamos.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 13/10/2014, 13:24

    Olá, Dilson. Desculpe-me se não fui claro, tentarei explicar melhor.

    Meu formulário Frm_Pedidos é baseado na tabela Pedidos. O subformulário Sub_DetalhesPedido é baseado na tabela DetalhesPedido. Agora vêm minhas tabelas de estoque que têm relação um para muitos com a tabela DetalhesPedido a partir do campo CódigoProduto.

    Então preciso que ao escolher, no campo Loja do formulário Frm_Pedidos, o estoque relativo a loja, trabalhasse apenas com os dados daquele estoque.

    Acabou surgindo outra dúvida: ao selecionar um estoque no campo Loja, como faria para quando digitar um código de produto os outros campos relativos aquele código fossem preenchidos, mas lembrando que fosse usado dados relativos aquele estoque previamente selecionado.

    Tentei fazer isso com Dlookup:

    Me.Descrição = DLookup("Produto", Forms!Frm_Pedidos!Loja, "CódigoProduto=" & Me.CódigoProduto)

    Funcionou, mas houve um problema com as relações, diz: Não é possível adicionar ou alterar registros, pois é necessário que eles tenham um registro relacionado na tabela 'EstoqueCarpina'.

    Segue o BD.

    Obrigado pela ajuda, amigo.
    Anexos
    Filtrar dados por tabela AttachmentTeste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (162 Kb) Baixado 3 vez(es)
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Dilson 14/10/2014, 02:19

    Esse erro que dá não tem nada haver com o Dlookup que colocou. Tem haver com as relações da tabela DetalhePedidos com as tabelas de estoque, sendo que uma vez não tendo número na tabela de estoque para relacionar na DetalhePedidos, vai gerar sempre isso.

    Eu resolvi retirando todas as relações que a tabela DetalhePedidos tivesse com as tabelas de estoque e para ir buscar o código e autopreencher campos no sub_DetalhePedidos, transformei o TextBox CódigoProduto em um ComboBox e no evento ao receber foco coloquei:

    Dim qSQL As String
    qSQL = "SELECT * FROM " & Forms!Frm_Pedidos!Loja
    Me.CódigoProduto.RowSource = qSQL

    Numero de colunas = 5
    Largura das colunas = 1cm;0cm;0cm;1,501cm;3cm

    E no evento após atualizar coloquei o código para preencher automaticamente a Descrição:
    With CódigoProduto
    Me.Descrição = .Column(4)
    End With

    E assim faz o que pretende. Olhe no exemplo anexo.

    Agora, a conclusão que tenho é que seu banco está mal normalizado. Não aconselho de forma nenhuma dividir o estoque em várias tabelas, você ficará engessado e qualquer implementação que precise fazer será como um castigo.

    Sugestão:
    - Apenas uma tabela para registrar o estoque de todas as lojas;
    - Criação de uma tabela com o nome de todas as lojas;

    Implementações:
    - Em cada registro de estoque deverá estar relacionado com a chave primária vindo da tabela lojas;

    Benefícios:
    Para lançar, pesquisar, relacionar ou criar estatísticas do estoque atual em geral ou específicos usaria nas instruções SQL o código da loja (Chave primária da tabela lojas que sugeri criar).

    Analise
    Anexos
    Filtrar dados por tabela AttachmentTeste_old.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (221 Kb) Baixado 14 vez(es)
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Jonatan 14/10/2014, 03:57

    Muito obrigado, amigo Dilson. Vou analisar as alterações e lhe retorno.

    Abraços

    Conteúdo patrocinado


    Filtrar dados por tabela Empty Re: Filtrar dados por tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 07:12