Banco de Dados - Access

Data Bars para MS-Access

Este artigo mostra como criar barras de dados semelhantes as do Excel em um formulário contínuo do Access.

por Luiz Cláudio Cosenza V. Rocha



Introdução

O Office 2007 foi a versão do produto que mais trouxe melhorias em termos de apresentação de dados, tanto no Excel como no Access. Comparando Access 2007 com Access 2003 e Excel 2007 com Excel 2003, o Access trouxe mais novidades que o Excel, porém, olhando recurso a recurso, o Excel sempre foi (e provavelmente sempre será) mais rico que o Access nas possibilidades de formatação.

Um dos itens que está disponível apenas no Excel e que causa bom impacto na visualização dos dados é a formatação condicional chamada de Data Bars (Barras de Dados), constituída de uma espécie de barra de progresso desenhada dentro da célula, dando uma boa percepção visual de grandeza do número.

Como dou grande importância à apresentação de dados, procurei criar no Access uma visualização que fosse razoavelmente parecida com esta. Por não contar com componentes externos, mas apenas com os controles nativos do Access e com a criatividade, chamei esta solução de “Data Bars do homem pobre”, que não por acaso é o título deste artigo.

Primeiras alternativas

A primeira alternativa que me veio à mente foi o controle Progress Bar, porém ele não é nativo do Access, então nem o considerei. Além do mais, ele não é acoplável a um campo de dados.

A segunda alternativa que pensei foi usar um controle retângulo para simular a barra e dimensioná-lo por meio de código VBA. Porém, este controle também não é acoplável, portanto eu não conseguiria em um formulário contínuo atribuir-lhe diferentes tamanhos (um para cada linha), já que a propriedade Width seria a mesma para a coluna inteira.

A terceira alternativa que pensei foi criar dez figuras de barra horizontal (uma para 10%, outra para 20%, outra para 30%, etc.) e usar um controle Image para exibi-la. Como no Access 2007 o controle Image é acoplável a uma fonte de dados, o mecanismo daria certo. Porém, não funcionaria no Access 2003, que ainda está presente na maioria das empresas.

Por fim, a ideia da solução veio de um passado distante: no Access 97, quando não existia formatação condicional, vi uma engenhosa solução para criar formulários contínuos zebrados que pintava uma caixa de texto usando uma desconhecida fonte True Type chamada Terminal. Nesta fonte, o caractere “Û” (u maiúsculo com acento circunflexo) é representado por um retângulo cheio vertical.

Como implementar a solução

a) Preparando os dados

A barra de dados, nesta solução, nada mais é que uma caixa de texto preenchida com letras “Û”, sendo que a quantidade de letras representa o tamanho da barra. Considerando a dimensão das telas e o espaço disponível, uma caixa de texto capaz de exibir até 10 letras (representando 10%, 20%, 30%, etc.) já será adequada. Como não existe “meia letra”, esta solução não permite números intermediários (5%, 15%, etc.), o que é uma limitação.

Como criar a inteligência para se montar os strings “ÛÛÛ” a partir de um campo numérico? O Access tem uma função pouco conhecida (mas muito útil) chamada String. Esta função repete “n” vezes um caractere qualquer, onde “n” é um parâmetro que você passa a função. Exemplo: String(5, “A”) = “AAAAA”.

Portanto, você deve criar uma consulta com seu índice de zero a dez e usar este índice como parâmetro da função String para retornar a sequência de “Û” correta. Na ilustração usada neste artigo, o índice de desempenho varia de zero a 100, portanto vou dividir por 10 e arredondar para um número inteiro, conforme mostra a figura a seguir.

Em modo SQL, a consulta ficou assim:

SELECT DescCategoria, IndiceDesempenho, Round([IndiceDesempenho]/10,0) AS Base10, String([Base10],"Û") AS DataBar

FROM tbl_Apuracao;

Ao executar a consulta, os dados são estes:

 

b) Preparando a tela

A tela será um formulário contínuo com origem na qry_Apuracao, contendo três caixas de texto acopladas: DescCategoria, IndiceDesemepenho e DataBar.

Na caixa de texto do DataBar, mude o tipo de fonte (propriedade Font Name) para Terminal, e aumente um pouco o tamanho da fonte para 14. Posicione os controles para que tenham uma boa disposição.

O resultado será este:

É possível incrementar um pouco a solução usando o recurso de formatação condicional do Access para mudar a cor das barras de acordo com o valor. Imagine que valores até 50 sejam vermelhos, e de 51 a 69 sejam laranjas, é possível configurar a caixa de texto DataBar assim:

Note que para aplicar a formatação condicional você não fica limitado a trabalhar com unidade inteira, já que você pode usar o valor original do índice como regra para definir as cores.

O resultado é este:

Conclusão

Embora os recursos de formatação de formulários contínuos do Access não sejam ainda muito avançados (especialmente antes do Access 2007), é possível criar soluções alternativas muito interessantes explorando os controles e propriedades existentes.

Neste artigo mostrei como criar uma formatação de Data Bars dinâmicas em um formulário contínuo do Access, sem usar uma única linha de programação.

Luiz Cláudio Cosenza V. Rocha

Luiz Cláudio Cosenza V. Rocha - Diretor da IT Lab Consultoria (www.itlab.com.br), em São Paulo, especializada em desenvolvimento customizado, .NET, Office (VBA/VSTO), SharePoint e ALM. Nomeado pela Microsft como MVP de Office System desde 2003, tem dezenas de artigos publicados, material de treinamento, participa diariamente dos fóruns MSDN e escreve o blog OfficeDev (http://msmvps.com/blogs/officedev/).