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


4 participantes

    [Resolvido]Filtrar Registos num Formulário

    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Filtrar Registos num Formulário

    Mensagem  Jitano Seg Jun 13, 2011 9:49 am

    Oi

    É o meu primeiro post no fórum, sou iniciante em Access+VB e espero aprender com a vossa ajuda!
    O meu objectivo é filtrar registos num formulário

    Estive a ler sobre as Combo Box (AfterUpdate) e Caixas de Texto (DLookup), mas o meu caso é diferente acho:

    Tenho 3 tabelas:
    - Dados Cliente (CodLoja, CodEstado, NomeCliente, NumCliente, ...)
    - Loja (CodLoja, Nome Loja)
    - Estado (CodEstado, Nome Estado)

    O meu objectivo é num formulário talvez através de uma Combo Box escolher/digital o CodLoja e só me aparecem os registos de clientes associados a essa loja.

    Qual a melhor maneira de fazer isto pois não é Um-para-Um mas sim Um-para-Muitos.


    Última edição por Jitano em Qui Jul 07, 2011 2:44 am, editado 1 vez(es)
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  criquio Seg Jun 13, 2011 9:55 am

    Olá Jorge, seja bem vindo ao forum!

    Você pode criar uma consulta pegando os campos pretendidos na tabela. No critério do campo que você quer filtrar, coloque assim:

    Como Forms!NomeDoFormulário!NomeDaCombo
    ou se for um campo texto:
    Como "*" Forms!NomeDoFormulário!NomeCampoTexto & "*"

    Por que a diferença na sintaxe? Porque uma combo já te envia o dado completo e uma caixa de texto pode faltar alguma letra antes ou depois no nome. Assim sendo, o "*" que vem antes indica que pode ter caracteres antes e assim o é tambem com o que vem depois.
    Depois desses passos, crie seu formulário com base nessa consulta ou coloque a consulta como fonte de origem do formulário. No critério acima, você irá trocar "NomeDoFormulário" pelo nome correto do mesmo e assim o é tambem com o nome do campo. No evento "Após atualizar" da combo ou campo, coloque um Me.Requery.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  vieirasoft Seg Jun 13, 2011 10:01 am

    Tem aqui exemplo no fórum

    http://maximoaccess.forumeiros.com/t1423-busca-por-cbo-e-com-funcao-dlookup
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Ter Jun 14, 2011 3:42 am

    criquio,
    obrigado pelas boas vindas e pela ajuda rápida
    tentei seguir os teus passos, mas não consegui fazer o que pretendia
    posso enviar um exemplo do que tentei fazer via email para dares uma vista de olhos rápida e ver onde falhei?

    vieirasoft,
    obrigado pelo link, compreendi os exemplos, testei e apliquei noutra situação na minha base de dados
    valeu
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Ter Jun 14, 2011 5:38 am

    Caso queira... ficarei feliz em tentar

    harysohn@hotmail.com
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Ter Jun 14, 2011 6:04 pm

    Caro Jitano...
    Se pretendia a busca por um código de loja e ter os clientes relacionados com ela.. estas ai o exemplo..
    Mas voce falou que tinha as tabelas e tal...
    No exemplo que me enviou so tinha uma tabela apenas... tive que fazer tudo....
    Recomendo apenas que na proxima vez...de uma vista no repositório, pois para casos assim a uma enormidade de exemplos contidos la..
    Os abra e adapte ao que quer, assim certamente aprenderás muito mais rapidamente.. e em precisando estamos sempre a disposição

    o exemplo abaixo faz o que pediu na origem do tópico...
    Uma dica .. abra e veja como ficaram os relacionamentos... os campos...
    De quebra foi uma tabela com todas as cidades e estados do brasil

    http://dl.dropbox.com/u/26441349/testeLojas.rar

    Saudações
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Seg Jun 27, 2011 10:38 am

    Estamos aguardando colega....
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  vieirasoft Ter Jun 28, 2011 10:47 am

    Damos o assunto por terminado. Qualquer coisa o colega reabre
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Qui Jul 07, 2011 3:14 am

    Desculpem colegas a demora a responder, mas só agora é que voltei a pegar nisto.

    Consegui meter isto (com a vossa ajuda anterior) a funcionar a 99%

    - Tenho um formulário com várias caixas de texto com origem de registos numa tabela
    - No mesmo formulário tenho uma caixa de texto independente para Busca por Cliente com AfterUpdate: actualizando cada caixa de text e Me.Requery no fim
    - A tabela não tem chave primária, é uma tabela importava via VBA de arquivo de texto
    - Na consulta de origem dos registos usei Como [Forms]![formulário]![caixa de texto]

    Tudo corre 99% bem.
    Depois de escrever o número de um cliente ele filtra bem os dados.
    O único se não é que me aperece duplicado na navegação o primeiro registo.
    Por exemplo:

    Tabela:

    Cliente | Nome | Associada | Compra
    111 | XXX | 1234567 | 15,45
    111 | XXX | 2354678 | 19,78
    222 | YYY | 5646577 | 45,54
    111 | XXX | 5478798 | 78,68

    Busco pelo cliente 111
    E no formulário aparece-me os 3 registos com o cliente = 1 mais o 1º registo duplicado, ou seja 4 registos.
    111 XXX 1234567 15,45
    111 XXX 2354678 19,78
    111 XXX 5478798 78,68
    111 XXX 1234567 15,45 repetido


    Obrigado
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Qui Jul 07, 2011 3:28 am

    Esqueçam o que escrevi em cima

    O meu problema é que quando faço uma busca de um cliente ele duplica na tabela o primeiro registo com esse número de cliente

    Como evito isto?
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  vieirasoft Qui Jul 07, 2011 4:31 am

    Colocando uma chave primária, para que cada registo seja único.
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Qui Jul 07, 2011 4:57 am

    Obrigado pela rápida resposta vieirasof.

    Coloquei como chave primária ó único campo que não pode aparecer repetido na tabela importada, mas deu-me este erro:

    Run-time error '3022'

    As alterações pedidas para a tabela não foram bem sucedidas pois iriam criar valores duplicados no índice, na tecla primária ou relacionamento. Altere os dados do campo ou campos que contêm os dados duplicados, remova o índice ou volte a definir o índice para que as entradas possam ser duplicadas e tente de novo.
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  vieirasoft Qui Jul 07, 2011 5:55 am

    Você tem algum campo na tabela indexado, por exemplo um campo nome que pode estar indexado para não deixar repetir. Desmarque qualquer índice associado a campos na sua tabela e mantenha só a chave primária.
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Qui Jul 07, 2011 7:35 am

    Não tenho nenhum índice associado a campos.
    Já verifiquei todos os campos da tabela e nenhum está indexado.

    Sem chave primária ou com chave primária numeração automática a consulta é feita mas duplica sempre o registo na tabela.

    Se definir como chave primária o campo que deveria impedir a duplicação dá esse erro!

    pale
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  vieirasoft Qui Jul 07, 2011 7:39 am

    Alguma coisa está mal aí. Algo está às turra e á massa com índices e está a duplicar registos. Só vendo. Coloque aqui a BD ou parte dela, para dar-mos uma vista de olhos a isso.

    Contudo antes de fazer isso, copie a tabela antiga para uma nova e veja o resultado. Chave primária, numeração automática tem que lá estar.
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Qui Jul 07, 2011 7:56 am

    A tabela antiga é uma tabela que é gerada de novo em cada rotina
    Ou seja, faz DROP TABLE em cada rotina antes de importar os dados

    Mas, eu criei na mesma uma tabela nova à parte com os dados copiados e mudei os caminhos no formulários com a chave primária na ID (numeração automática) e agora não dá erro, mas no formulário dá para navegar mas os dados são só de 1 registo
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Seg Jul 11, 2011 6:38 am

    Podes enviar novamente caso queira, eu dou uma olhada...
    Saudações
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Alexandre Neves Seg Jul 11, 2011 10:28 am

    Não sei como está a filtrar. Se estiver a filtrar por VBA/SQL em vez de SELECT ... utilize SELECT DISTINCT ...
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Ter Jul 12, 2011 7:29 am

    Alexandre Neves,

    Adicionei o DISTINCT na consulta de origem dos dados do formulário e o formulário ficou em branco!

    Já enviei o formulário para o vieirasoft e para o Harysohn.

    Pode ser que eles resolvam o meu problema.

    Obrigado
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Ter Jul 12, 2011 7:41 am

    O BD do colega... para que possamos ajudá-lo

    http://dl.dropbox.com/u/26441349/Jitano.zip
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Ter Jul 12, 2011 7:51 am

    Se o seu problema era a busca... eis aqui

    http://dl.dropbox.com/u/26441349/Jitano_12_07_11.rar

    Saudações
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Ter Jul 12, 2011 9:03 am

    Obrigado pela grande ajuda Harysohn.

    Só mais uma dúvida,

    Se tiver dois/três/quatro registos com o mesmo número de cliente.

    Dá para aparecer só uma vez o número de cliente na Combo Box?
    E depois navegar só nos dois/três/quatro desse número de cliente em vez dos 1000 registos da minha tabela?

    Obrigado
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Ter Jul 12, 2011 9:13 am

    Jitano amigão.. na realidade esta cbo tem que ter como origem da linha a tabela clientes entendeu?

    Mas ela não veio no exemplo, coloquei ai utilizando a propria tabela do pedido.. então nesse caso ai não é possivel..

    Mude a origem da linha da cbo para a tbl clientes
    e as tabelas de cliente tem que estar relacionada com a tbl pedidos..

    é por ai...

    Saudações
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Qui Jul 14, 2011 10:10 am

    Harysohn,
    Muito obrigado pela ajuda! Smile

    Não era 100% isto que pretendia, pois tenho números de clientes duplicados com dados restantes diferentes e por isso depois da procura só queria mesmo navegar nos registos com o mesmo número de cliente e não todos da tabela.

    A origem do formulário tem de ser aquela tabela que ia junto, a tabela de clientes que você fala ai só tenho dados de moradas + número de cliente, só isso.

    Com a tua ajuda eu ordenei a origem dos registos do formulário por cliente ascendente e fiz o mesmo para a combo de busca e fica +- o que eu pretendia.

    Se poder indicar o caminho para o que eu pretendia mesmo agradecia!

    Obrigado +1 vez!
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Qui Jul 14, 2011 10:27 am

    Amigão infelizmente se a cbo tem origem nesta tabela.. ela mostrars todos pois o agrupamanto ai não funcionaria.. pois tem varias ID's par ao mesmo cliente.. então ela mostrará todos...

    O certo seria se tivesse uma tabela de clientes relacionada com a tabela que esta ai....

    Ai sim seria possivel

    Saudações
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Qui Jul 14, 2011 10:41 am

    Creio que consegui algo aqui.. jaja lhe envio
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Convidado Qui Jul 14, 2011 11:16 am

    Aqui Amigão...

    1 - Na combo exclui a ID, assim foi possível agrupar os Clientes permandecendo apenas uma visualização por cliente

    2 - Criei uma consulta e acoplei no form, no campo cliente apliquei o seguinte critério:
    Como [forms]![Form]![BuscaCliente] & "*"

    3 - No evento após atualizar da BuscaCliente
    Me.Requery , assim faz o requery do form para apenas o cliente especificado na busca

    4 - Caixa texto no form desacoplada para receber a quantidade de registros para este cliente (no evento apos atualizar da Busca cliente)

    Me.txtCount = DCount("*", "CnsForm")

    5 - Caixa texto com o registro para saber por qual registro esta navegando ao aplicar o anterior/retroceder


    http://dl.dropbox.com/u/26441349/Jitano_14_07_11.rar

    Saudações
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  vieirasoft Ter Jul 19, 2011 5:25 am

    Deve ter resolvido. Qualquer coisa reabra, por favor
    Jitano
    Jitano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Localização : Portugal
    Mensagens : 99
    Registrado : 13/06/2011

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Jitano Ter Jul 19, 2011 10:27 am

    vieirasoft, desculpa ainda não testei a ajuda do amigão Harysohn
    nos próximos dias verifico se é mesmo isto que quero e fecho o tópico
    obrigado
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  vieirasoft Ter Jul 19, 2011 10:36 am

    Ok, ficamos no aguardo. Obrigado.
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  vieirasoft Sex Jul 29, 2011 2:21 pm

    Como não retornou, o tópico está resolvido. Qualquer coisa reabra, por favor.

    Conteúdo patrocinado


    [Resolvido]Filtrar Registos num Formulário Empty Re: [Resolvido]Filtrar Registos num Formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Sex Nov 22, 2024 5:19 am