question

Como posso fazer uma contagem distinta em MS Access?

Eu tenho a consulta a seguir, mas eu preciso para obter uma contagem distinta de Count(main_IncidentsNAF.QUOTE_AND_POLICY_NUMBER) como polCount de campo.

Insira no KPI (FieldName, AgentCnt, MASTER, AgentNumber, categoria, PolicyStatus, [grupo de lucros], AgentState)
Selecione "Políticas com acidentes NAF" como campo, Count(main_IncidentsNAF.QUOTE_AND_POLICY_NUMBER) como polCount, main_IncidentsNAF.MASTER, main_IncidentsNAF.AGENT_NUMBER, "Incidentes" como categoria, "Negaria tudo" como Status, main_IncidentsNAF.[Grupo de lucros], main_IncidentsNAF.AGENT_STATE
DE main_IncidentsNAF
GRUPO por "Políticas com acidentes NAF", main_IncidentsNAF.MASTER, main_IncidentsNAF.AGENT_NUMBER, "Incidentes", "Negaria tudo", main_IncidentsNAF.[Grupo de lucros], main_IncidentsNAF.AGENT_STATE;

Alguém pode me ajudar com o código?
Obrigado! Este código foi escrito por outra pessoa e eu estou tentando "corrigir" para fazer uma contagem distinta em QUOTE_AND_POLICY. Eu sou um usuário muito novato então conselhos simples para corrigir o código seria útil. Esse código também é parte de um programa de acesso muito maior que envolvendo consultas mais, tabelas e macros do que eu gostaria de contar.
resposta Resposta
Sua pergunta não está muito clara. Normalmente eu associaria o comando contagem distinta com uma consulta SELECT, não uma consulta INSERT.

Há um método por meio do vba que contará o número de registros afetados pela consulta INSERT. Espero que ajude.

Private Sub CallSQLRun()

' FINALIDADE:

' exemplo para mostrar como chamar a função SQLRun



Dim stSQLquery As String

Dim lgCountRecordsAffected como longo



stSQLquery = "INSERT INTO...;"



lgCountRecordsAffected = SQLRun(stSQLquery)

MsgBox lgCountRecordsAffected & "registros afetados"



End Sub



Função pública SQLRun(strSQL As String) como longo

No erro GoTo ErrHandler

' Finalidade: centralizar o processo de consulta de ação SQL,

' dispensar SetWarnings ou desligue,

' salvando na digitação e retornando o número de registros afetados

' Requer: consulta SQL para ser executado no banco de dados local apenas (CurrentDb)

' modificado do original código cortesia de:

' David W. Fenton

Db estático como DAO.Banco de dados

Dim lngRecordsAffected como longo

10:

' defina o valor inicial da variável

SQLRun = 0

20:

' definir banco de dados local

Se db é nada defina db = Access.CurrentDb

30:

' executa comando SQL

DB.Executar strSQL, DAO.dbFailOnError

40:

' verificar o número de registros afetados

lngRecordsAffected = dbLocal.RecordsAffected

50:

' retornar valor

SQLRun = lngRecordsAffected

999:

exitRoutine:

Função de saída

ErrHandler:

MsgBox "erro na função SQLRun (linha" & Erl() & "):" & VBA.Err. Number & "" & VBA.Err

Currículo exitRoutine

End Function

Comentários Comentários

Guest
Diana na 24 Set 2023
5
Para fazer uma contagem distinta em MS Access, você pode usar a função COUNT DISTINCT no SQL da sua consulta. Aqui está um exemplo de como você pode ajustar o código que você compartilhou:

Insira em KPI (FieldName, AgentCnt, MASTER, AgentNumber, categoria, PolicyStatus, [grupo de lucros], AgentState)
Selecione "Políticas com acidentes NAF" como campo, Count(DISTINCT main_IncidentsNAF.QUOTE_AND_POLICY_NUMBER) como polCount, main_IncidentsNAF.MASTER, main_IncidentsNAF.AGENT_NUMBER, "Incidentes" como categoria, "Negaria tudo" como Status, main_IncidentsNAF.[Grupo de lucros], main_IncidentsNAF.AGENT_STATE
DE main_IncidentsNAF
GRUPO por "Políticas com acidentes NAF", main_IncidentsNAF.MASTER, main_IncidentsNAF.AGENT_NUMBER, "Incidentes", "Negaria tudo", main_IncidentsNAF.[Grupo de lucros], main_IncidentsNAF.AGENT_STATE;

Neste código, substituímos Count(main_IncidentsNAF.QUOTE_AND_POLICY_NUMBER) por Count(DISTINCT main_IncidentsNAF.QUOTE_AND_POLICY_NUMBER) para obter a contagem distinta que você está procurando.

Se isso não funcionar, você também pode tentar usar a função DCount em uma expressão de controle de um formulário ou relatório para obter a contagem distinta.

Espero que isso ajude! Se precisar de mais assistência, não hesite em pedir mais ajuda. Boa sorte!


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved