Pode utilizar a função BDContar para determinar o número de registos que estão num conjunto especificado de registos (um domínio). Utilize a função BDContar num módulo Visual Basic for Applications (VBA), numa macro, numa expressão de consulta ou num controlo calculado.
Por exemplo, pode utilizar a função BDContar num módulo para devolver o número de registos numa tabela de Encomendas correspondente às encomendas efetuadas numa data específica.
Sintaxe
DCount(expr, domain* [, critérios] )
A sintaxe da função BDContar tem os seguintes argumentos:
| Argumento | Descrição |
|---|---|
| expr | Obrigatório. Uma expressão que identifica o campo para o qual pretende contar registos. Pode ser uma expressão de cadeia que identifica um campo numa tabela ou consulta ou pode ser uma expressão que efetua um cálculo nos dados nesse campo. No expr, pode incluir o nome de um campo numa tabela, um controlo num formulário, uma constante ou uma função. Se expr incluir uma função, pode ser incorporada ou definida pelo utilizador, mas não outra agregação de domínio ou função de agregação SQL. |
| domínio | Obrigatório. Uma expressão de cadeia que identifica o conjunto de registos que constituem o domínio. Pode ser um nome de tabela ou um nome de consulta de uma consulta que não necessita de um parâmetro. |
| critérios | Opcional. Uma expressão de cadeia utilizada para restringir o intervalo de dados no qual a função BDContar é executada. Por exemplo, os critérios são muitas vezes equivalentes à cláusula WHERE numa expressão SQL, sem a palavra WHERE. Se os critérios forem omitidos, a função BDContar avalia expr em relação a todo o domínio. Qualquer campo incluído nos critérios também tem de ser um campo no domínio; caso contrário, a função BDContar devolve um Valor Nulo. |
Observações
Utilize a função BDContar para contar o número de registos num domínio quando não precisa de saber os valores específicos. Embora o argumento expr possa efetuar um cálculo num campo, a função BDContar simplesmente contabiliza o número de registos. O valor de qualquer cálculo efetuado pelo expr não está disponível.
Utilize a função BDContar em controlos calculados, quando precisa de especificar critérios para restringir o intervalo de dados no qual a função é executada. Por exemplo, para apresentar o número de encomendas a enviar para a Califórnia, defina a propriedade OrigemDoControlo de uma caixa de texto para a seguinte expressão:
=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")
Se quiser simplesmente contar todos os registos no domínio sem especificar restrições, utilize a função Contar .
Sugestão A função Contar foi otimizada para acelerar a contagem de registos em consultas. Utilize a função Contar numa expressão de consulta em vez da função BDContar e defina critérios opcionais para impor restrições nos resultados. Utilize a função BDContar quando tiver de contar registos num domínio a partir de um módulo de código ou macro ou num controlo calculado.
Pode utilizar a função BDContar para contar o número de registos com um campo específico não presente na origem do registo na qual o seu formulário ou relatório se baseia. Por exemplo, pode mostrar o número de encomendas na tabela Encomendas de um controlo calculado num formulário com base na tabela Produtos.
A função BDContar não conta registos que contenham valores Nulos no campo referenciado por expr, a menos que expr seja o caráter universal asterisco (*). Se utilizar um asterisco, a função BDContar calcula o número total de registos, incluindo aqueles que contêm campos Nulos. O exemplo seguinte calcula o número de registos numa tabela de Encomendas.
intX = DCount("*", "Orders")
Se o domínio for uma tabela com uma chave primária, também pode contar o número total de registos ao definir expr para o campo de chave primária, uma vez que nunca haverá um Nulo no campo de chave primária.
Se expr identificar vários campos, separe os nomes dos campos com um operador de concatenação, um e comercial (&) ou o operador de adição (+). Se utilizar um E comercial para separar os campos, a função BDContar devolve o número de registos que contêm dados em qualquer um dos campos listados. Se utilizar o operador de adição, a função BDContar devolve apenas o número de registos que contêm dados em todos os campos listados. O seguinte exemplo demonstra os efeitos de cada operador quando utilizado com um campo que contém dados em todos os registos (NomeEncomenda) e um campo que não contém dados (RegiãoEncomenda).
intW = DCount("[ShipName]", "Orders")
intX = DCount("[ShipRegion]", "Orders")
intY = DCount("[ShipName] + [ShipRegion]", "Orders")
intZ = DCount("[ShipName] & [ShipRegion]", "Orders")
Nota
O E comercial é o operador preferencial para executar a concatenação de cadeias. Deverá evitar utilizar o operador de adição para ações que não a adição numérica, a menos que pretenda especificamente propagar Nulos numa expressão.
As alterações não guardadas aos registos no domínio não são incluídas quando utiliza esta função. Se pretender que a função BDContar se baseie nos valores alterados, primeiro tem de guardar as alterações ao clicar em Guardar Registo em Registos no separador Dados , ao mover o foco para outro registo ou ao utilizar o método Atualizar .
Exemplos de consulta
| Expressão | Resultados |
|---|---|
| SELECT DCount("ProductID","ProductSales","Discount=0") AS Expr1 FROM ProductSales GROUP BY DCount("ProductID","ProductSales","Discount=0"); | Devolve a contagem de valores no campo "IDDoProduto" da Tabela "VendasDeProdutos" em que o valor "Desconto" é "0". |
| SELECT DCount("ProductID","ProductSales","DateofSale=Date()-1") AS YesterdaySale FROM ProductSales GROUP BY DCount("ProductID","ProductSales","DateofSale=Date()-1"); | Devolve a contagem de valores no campo "IDDoProduto" da Tabela "VendasDoProduto", em que "DateofSale" é um dia antes da data atual. |
Exemplo de VBA
Nota
Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications). Para obter mais informações sobre trabalhar com o VBA, selecione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de pesquisa.
A seguinte função devolve o número de encomendas enviadas para um país/região específico após uma data de envio especificada. O domínio é uma tabela Encomendas.
Public Function OrdersCount _
(ByVal strCountryRegion As String, _
ByVal dteShipDate As Date) As Integer
OrdersCount = DCount("[ShippedDate]", "Orders", _
"[ShipCountryRegion] = '" & strCountryRegion & _
"' AND [ShippedDate] > #" & dteShipDate & "#")
End Function
Para apresentar a função, utilize a seguinte linha de código na janela Imediato:
:OrdersCount "UK", #1/1/96#