Tenho um banco de dados Access para um projeto de trabalho, infelizmente não posso compartilhar muitos detalhes devido à natureza do trabalho. Mas basicamente eu tenho uma tabela de ações que precisam ser realizadas, cada ação tem uma data de vencimento e tenho uma tabela que conta quantas ações estão vencidas e foram concluídas em cada mês, seguindo a lógica abaixo:
Group by Month([Due Date])
Count [Due Date]
Para uma consulta e o mesmo para as datas concluídas em outra consulta. Em seguida, tenho uma consulta final que usa a consulta de datas de vencimento, uma consulta de datas concluídas e uma tabela de meses do ano (caso contrário, os meses vazios não são exibidos). Então eu tenho o seguinte:
Nz(Due Dates Totals.Count,0)
Nz(Completed Dates Totals.Count,0)
Calendar.Month Number
Calendar.Month Name
(O Nz
's acima é para que eu não tenha espaços vazios no meu relatório)
Meu relatório usa o número do mês para classificar e agrupar, o nome do mês para exibi-lo aos usuários e uma pequena tabela com as ações devidas e o total de ações. Em seguida, tenho formatação condicional na tabela para que, se as ações concluídas forem menores que as devidas, seja destacada em vermelho, se forem iguais, seja verde e mais ações concluídas do que devidas significa que o campo 'concluído' é azul.
Isso funciona bem, a menos que um dos números seja um dígito duplo; nesse caso, ele compara apenas o primeiro dígito de cada valor, por exemplo19 < 2
Tentei comparar o valor do campo com a contagem devida da própria consulta e compará-lo com o valor do campo no relatório e ambos têm o mesmo problema. Meu palpite é que está comparando-os como strings e não como números, mas não sei como forçar a consulta a armazenar a contagem como um número.
Obrigado por qualquer ajuda. (E a propósito, há mais tabelas e afins no banco de dados, o Excel não é a ferramenta certa para este trabalho).
Encontrei a solução, multipliquei as
Nz()
funções pelas1
quais os obrigava a serem números e não strings.por exemplo, em vez de
eu usei
Se o MS Access estiver interpretando um valor numérico como uma string, você pode coagir/converter o valor da string para um tipo de dado numérico usando uma das seguintes funções de conversão de tipo , cuja escolha obviamente dependerá da natureza de seus dados:
CCur
(para Moeda)CDbl
(dobrar)CDec
(para Decimais)CInt
(para inteiro)CLng
(para Longo)CSng
(para solteiro)Como você parece estar trabalhando com números inteiros, sugiro usar
CInt
ou, se seus valores provavelmente excederem 32767 (2 15 -1),CLng
.Portanto, seu código pode se tornar: