Formulários e relatórios "zebrados"
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Programar para dar uma aparência "zebrada" a um relatório é relativamente fácil, mas manipular essa aparência em formulário é complicado. Você utiliza uma API ou uma "Formatação Condicional". Isso no Access 2007 foi resolvido e sem nenhuma linha de programação, bastando alterar duas linhas na lista de propriedades. veja na figura abaixo:
No exemplo, mantive a cor do fundo branca e selecionei cinza para a cor de fundo alternativa. Veja como ficou:
Você pode manipular essa configuração através de um novo evento, chamado "Ao pintar", incorporado na seção detalhe de formulários e de relatórios.
Com o evento "Ao Pintar", podemos ir muito além do que "zebrar" formulários ou relatórios. Veja, neste meu exemplo, quero destacar valores maiores do que 1 mil reais, pintando a faixa de azul. Observe o código:
Faça o login aqui para ter acesso ao código.
Como resultado do código aplicado, temos:
Podemos aproveitar para manipular a cor da fonte. Neste exemplo, o valor que tiver superior a 1 mil reais ficará em vermelho. Veja como ficou a alteração do código:
Faça o login aqui para ter acesso ao código.
Como resultado temos:
Nos relatórios funciona da mesma maneira. Agora é só usar a sua criatividade!
Bom estudo!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Adquira o kit UsandoAccess e aprenda em alta velocidade
29 comentário(s) Jamisson 19/12/2022 10:39:07 Bom dia! bom exemplo esse Avelino, agora gostaria de saber se tem como coloca esse código em formulario (Folha de Dados)? Coloquei no meu formulario mais não conseguir. Rui 21/11/2022 21:12:54 Tem como mudar de cor o registo selecionado? Avelino Sampaio 18/08/2022 05:27:20 José, fica difÃcil saber o que está acontecendo sem ter mais detalhes sobre suas configurações e programação. Utilize o meu fórum http://www.redeaccess.com.br Lá vc pode inserir um arquivo exemplo para entendermos as suas configurações. No aguardo José Cruz 17/08/2022 11:33:03 Tenho a funcionar quer num formulário quer num relatório. Na impressão ou pré visualização da impressão todos os registos ficam com a cor que estiver no último registo. Turian 05/04/2022 12:38:49 VOCÊ É "O CARA!" Muito Obrigado pelo exemplo, depois de mais de duas horas de busca você resolveu meu problema. Paes Leme Webmaster 05/04/2022 02:46:36 bom pessoal, só posso ajudar deixando um link para bons cursos. http://www.escolatecnicarj.com.br abraços! Diego Silva 22/09/2021 14:54:30 Muito bom seu tutorial. Estou inciando meu curso de access pelo adv informática, www.cursoadv.com.br Acho muito bom poder contar com material complementar e achei o site muito completo. Continuem o bom trabalho Edson Junho 23/08/2021 14:04:49 Avelino, Tu é demais. Parabéns pela iniciativa. Alessandro Pereira Cunha 16/08/2021 16:29:05 obrigado pela ajuda mas também não deu? preciso de algum "ajuste" no access (biblioteca, dll)? tentei o código abaixo em um banco novo e também não deu certo Private Sub Detalhe_Paint() '------------------------------- 'Alterando cor do texto '------------------------------- If Me!Quantidade > 10 Then Me!Quantidade.ForeColor = 255 'vermelho Else Me!Quantidade.ForeColor = 0 'preto End If '---------------------------------- 'Alterando cor da faixa '---------------------------------- If Me!Quantidade = 1 Then '--------------------------------------------------- 'Pinta tanto a faixa alternativa como a faixa normal '--------------------------------------------------- Me.Quantidade.AlternateBackColor = RGB(132, 161, 198) ' azul Me.Quantidade.BackColor = RGB(132, 161, 198) 'azul Else '--------------------------------------------------------- 'Se for menor do que 1000, pinta nos padrões estabelecidos, 'ou seja, branco para faixa normal e cinza para a 'faixa alternativa '--------------------------------------------------------- Me.Detalhe.BackColor = RGB(255, 255, 255) 'Branco Me.Detalhe.AlternateBackColor = RGB(236, 236, 236) 'cinza claro End If End Sub teria algum exemplo pronto que eu possa baixar e testar? desde já agradeço vossa ajuda! Luis Antonio de Oliveira 16/08/2021 11:39:35 No meu não dá certo. Qd vou passando e um form para outro a cada 3 ou quatro forms ele dá erro Erro em tempo de execução '2424': A expressão que você inseriu possui um nome de campo, controle ou propriedade que o Microsoft office Access não pode localizar. Avelino Sampaio 15/08/2021 18:20:48 Alessandro, Seu errro pode estar nesta linha: If Me!Situaçãosub = Comprado Then Use com as aspas: If Me!Situaçãosub = "Comprado" Then Sucesso! Alessandro Pereira Cunha 15/08/2021 18:17:50 boa noite! Não estou conseguindo fazer. tenho um subformulário com o campo chamado Situaçãosub onde tenho algumas opções e quero pintar as que estiverem compradas. Private Sub Detalhe_Paint() '---------------------------------- 'Alterando cor da faixa '---------------------------------- If Me!Situaçãosub = Comprado Then Me.Detalhe.AlternateBackColor = RGB(132, 161, 198) ' azul Me.Detalhe.BackColor = RGB(132, 161, 198) 'azul Else Me.Detalhe.BackColor = RGB(255, 255, 255) 'Branco Me.Detalhe.AlternateBackColor = RGB(236, 236, 236) 'cinza claro End If End Sub onde posso estar errando? Mayara 14/07/2021 14:39:38 Acabei de conseguir uma solução para minha dúvida anterior e acredito que a do Rui em 21/11/2015 21:12:54. Criando um campo invisÃvel no formulário contÃuo que alterna entre 0 e 1 ao clicar em qualquer lugar do formulário. Assim, no evento ao pintar eu uso o código aprendido aqui para pintar onde meu campo invisÃvel é 1, pois ao clicar em outra linha ele ficar 0 e será retirado a cor e a linha atual recebrá 1 e será pintada. Mayara 14/07/2021 14:01:19 Perfeito isso!! Para pintar a fonte, eu fazia com formatação condicional agora a linha inteira, eu aprendi agora. E se eu quisesse pintar a linha que foi selecionada apenas, tem como? Adilson 02/05/2021 15:35:34 Só funciona no modo formulário contÃnuo. Avelino Sampaio 09/04/2021 10:11:31 Wagner, vc pode utilizar a Formatação Condicional. Aqui mesmo na seção DICAS, veja o artigo "Formulário modo folha de dados "zebrado" e campos totais", que mostra como configurar. Ao selciona a opção "menor que" , use no campo #08:00# ou cdbl(#8:00#). Sucesso! Wagner Marins 09/04/2021 09:54:13 Bom dia Avelino! Gostaria de saber se tem como mudar a cor automatica de um campo hora. exemplo: no caxo o campo vai estar 08:00 e se a hora abaixo disso ela ficasse vermelha... agradeço desde já.. Filipe Bacelar 19/02/2021 00:37:43 Avelino essas propriedades apenas estão disponÃveis a partir do 2007. Você tem alguma solução para simular tal efeito em versões anteriores? A.S.S 13/01/2021 14:04:04 O problema é nos textbox, eles tem que estar com o fundo transparente! Wagner Cattani 12/01/2021 12:04:58 Avelino quando eu abro o form ele parece colocar em azul e logo em seguida já volta pro padrão, como se o access deixasse eu formatar as linhas e logo em seguida tirasse a formatação, creio que possa ser o mesmo problema do Alessandro Pereira Cunha. Tem alguma propriedade que influenciaria nisso? Obrigado! Avelino Sampaio 10/01/2021 15:31:44 Cristian, estude sobre "consulta de referência cruzada". O Access tem um assistente que auxilia na montagem desse tipo de consulta. Clique na Ribbon "criar" > Clique no botão "assistente de consulta" Bons estudos! Cristian Ribeiro Etchebest 10/01/2021 15:07:25 ola Avelino! Gostaria de saber se você ja teve que passar colunas para linhas e linhas para coluna,como os dados são preenchidos por colunas, não consegui achar uma forma de exibi-los por linha, pois o Access sempre preenche de cima para baixo. Como tenho dados preenchidos por data, as informações aparecem assim: DATA | DADOS1 |DADOS2 |DADOSN 01/01/2012 | informação 1 |informação 2 |etc... 02/01/2012 | informação 1 | informação 2 | etc... 03/01/2012 | informação 1 | informação 2 | etc... Gostaria de apresentar esses dados em linha, por exemplo: DATA | 01/01/2012 |02/01/2012 |03/01/2012 DADOS1 | informação 1 |informação 1 |etc... DADOS2 | informação 2 | informação 2 | etc... DADOSN | informação 3 | informação 3 | etc... Tem alguma configuração no Access onde eu possa realizar essa modificação? Obrigado. Rui 02/01/2021 09:23:08 Muito bom este tópico, parabéns. Tem como pintar de cor diferente só a linha do registo selecionado? Márcio Melo - RJ 03/12/2020 22:11:11 Realmente mas possibilidades de monitorar um formulário continuo, em meus controles utilizo muito desses padrões para me orientar em cores, formatação condicional nos dar até 4 possibilidades individuais por campo, essa novas mudanças veio bem.... qual seria a melhor maneira de deixar toda linha que esta em foco com a mesma cor se usar a formatação condicional por campo... Forte abraço a todos... João Ricardo 29/08/2020 23:26:31 Muito obrigado Avelino. Estou pesquisando aqui depois de ter acessado sua ajuda no Fórum do Orkut. Valeu mesmo. É mais simples do que eu pensava e mais util do que podia imaginar. Abraços Avelino Sampaio 10/07/2020 14:19:35 Fico muito lisonjeado. O jeito de retribuir é caprichando ainda mais. Grato Antonio João 09/07/2020 17:25:47 Caro Sampaio, Antes de mais nada, obrigado por compartihar sempre seu conhecimento com todos nos mortais, voce e mesmo uma pessoa abençoada, sou seu fã a muitos anos, sonho um dia ter pelo menos uns 30% por cento do seu conhecimento e esforço, eu nao tenho a mesma capacidade de apreendizado tal qual voce pois ja estou perto dos 60 anos e nem sempre a cabeça ajuda, mas sou fussão, tento apreender de todas a maneiras e graças a pessoas como voce acabo sobrevivendo um pouco nesta vida tao concorrida, te escrevi tudo isto para voce sentir o quanto e importante a sua ajuda no sentido de nos orientar, entao deixo aqui meus agradecimentos e minha sincera admiração pelo seu trabalho prestado a todos que usam e recorrem do seu conhecimento, um abraço. Mauro Fuzetto 03/05/2020 02:54:46 Muito valiosos as capturas de tela para quem está começando como eu. Já havia visto o recurso de zebrar as linhas de formulários mas nunca usei, de modo que agora tenho uma idéia mais precisa de como implementar. Além disso, para mim foi novidade a possibilidade de determinar a cor de uma linha baseado ou de mudar a formatação do texto baseado em certo valor. Gostei também da alternância entre captura de tela e código. Quando já se está familiarizado com certas funções e maneiras de se fazer algo via VBA talvez a captura não seja tão importante; mas daà é ensinar para quem já sabe. Para quem está começando ou num nÃvel intermediário (meu caso) poder visualizar o efeito do que se estpa dizendo é valiosÃssimo. Sem contar que economiza a escrita de um bom número de parágrafos meramente descritivos. Obrigado por compartilhar o que você sabe. ilton 24/02/2020 15:05:13 muito bom |