Ir ao conteúdo
  • Cadastre-se

Access consulta / relatorio para contar e juntar as linhas


Ir à solução Resolvido por Basole,

Posts recomendados

Senhores, boa noite! Gostaria se possivel de uma ajuda. espero que tenha conseguido me explicar

Estou montando um banco de dados em access onde tenho a seguite tabela abaixo.

nome da maquina          scripts

teste1                             00 00,04,08,12,16,20 * * * /var/script1.sh

teste1                             0,5,10,15,20,25,30,35,40,45,50,55 * * * * /var/script12.sh

teste1                             0 11 * * * /var/script13.sh

teste2                             0 12 * * * /var/script2.sh

teste2                             0 13 * * * /var/script21.sh

teste3                             script3.sh

preciso montar uma consulta ou relatorio onde o resultado é

teste1                             00 00,04,08,12,16,20 * * * /var/script1.sh                                      total de 3 scripts

                                       0,5,10,15,20,25,30,35,40,45,50,55 * * * * /var/script12.sh

                                       0 11 * * * /var/script13.sh

teste2                             0 12 * * * /var/script2.sh                                                                 total de 2 scripts

                                       0 13 * * * /var/script21.sh

Link para o comentário
Compartilhar em outros sites

Outra opcão de consulta, concatenando os resultados do scripts no campo scripts atraves de uma funcao

 

image.png.146397dec568979359237f83cad5c8e6.png 

 

SELECT [Sua_Tabela].[nome da maquina]
    , GetList("Select Scripts From [Sua_Tabela] As T1 Where T1.[nome da maquina] = """ & [Sua_Tabela].[nome da maquina] & """","",", ") AS _Scripts, 
COUNT(*) AS [Total de Scritps]
FROM [Sua_Tabela]
GROUP BY [Sua_Tabela].[nome da maquina];

* Substitua acima, Sua_Tabela pelo nome da sua tabela.

 

Quanto a funcao, crie um modulo no access e cole o codigo abaixo:

Public Function GetList(SQL As String _
                            , Optional ColumnDelimeter As String = ", " _
                            , Optional RowDelimeter As String = vbCrLf) As String

Const PROCNAME = "GetList"
Const adClipString = 2
Dim oConn As Object
Dim oRS As Object
Dim sResult As String

On Error GoTo ProcErr

Set oConn = CurrentProject.Connection
Set oRS = oConn.Execute(SQL)

sResult = oRS.GetString(adClipString, -1, ColumnDelimeter, RowDelimeter)

If Right(sResult, Len(RowDelimeter)) = RowDelimeter Then
    sResult = Mid$(sResult, 1, Len(sResult) - Len(RowDelimeter))
End If

GetList = sResult
oRS.Close
oConn.Close

CleanUp:
    Set oRS = Nothing
    Set oConn = Nothing

Exit Function
ProcErr:
    ' insert error handler
    Resume CleanUp

End Function

 

Link para o comentário
Compartilhar em outros sites

Em 14/02/2020 às 14:14, Basole disse:

Outra opcão de consulta, concatenando os resultados do scripts no campo scripts atraves de uma funcao

 

image.png.146397dec568979359237f83cad5c8e6.png 

 


SELECT [Sua_Tabela].[nome da maquina]
    , GetList("Select Scripts From [Sua_Tabela] As T1 Where T1.[nome da maquina] = """ & [Sua_Tabela].[nome da maquina] & """","",", ") AS _Scripts, 
COUNT(*) AS [Total de Scritps]
FROM [Sua_Tabela]
GROUP BY [Sua_Tabela].[nome da maquina];

* Substitua acima, Sua_Tabela pelo nome da sua tabela.

 

Quanto a funcao, crie um modulo no access e cole o codigo abaixo:


Public Function GetList(SQL As String _
                            , Optional ColumnDelimeter As String = ", " _
                            , Optional RowDelimeter As String = vbCrLf) As String

Const PROCNAME = "GetList"
Const adClipString = 2
Dim oConn As Object
Dim oRS As Object
Dim sResult As String

On Error GoTo ProcErr

Set oConn = CurrentProject.Connection
Set oRS = oConn.Execute(SQL)

sResult = oRS.GetString(adClipString, -1, ColumnDelimeter, RowDelimeter)

If Right(sResult, Len(RowDelimeter)) = RowDelimeter Then
    sResult = Mid$(sResult, 1, Len(sResult) - Len(RowDelimeter))
End If

GetList = sResult
oRS.Close
oConn.Close

CleanUp:
    Set oRS = Nothing
    Set oConn = Nothing

Exit Function
ProcErr:
    ' insert error handler
    Resume CleanUp

End Function

 

basole, obrigado pelo retorno, ficou melhor ainda.

mais uma duvida. teria como eu contar apenas os registros que iniciam com numero?

no exemplo abaixo tenho 6 scripts na maquina teste1, gostaria de somar somente o que inicia com numero, ficaria um total de 04 scripts;

 

nome da maquina          scripts

teste1                             00 00,04,08,12,16,20 * * * /var/script1.sh

teste1                             0,5,10,15,20,25,30,35,40,45,50,55 * * * *

teste1                             #0,5,10,1,50,55 * * * *

teste1                             script manual * * * *

teste1                             20,25,30,35,40,45,50,55 * * * *

teste1                             30,35,40,45,50,55 * * * *

Link para o comentário
Compartilhar em outros sites

  • Solução

@Janilson Brito experimente: 

 

Em modo SQL...

SELECT [Sua_Tabela].[nome da maquina] , GetList("Select Scripts From [Sua_Tabela] As T1 WHERE Scripts LIKE '[0-9]%' AND T1.[nome da maquina]  = """ & [Sua_Tabela].[nome da maquina] & """","","; ")   AS _Scripts, COUNT(Scripts) AS [Total de Scritps]
FROM [Sua_Tabela]
WHERE Scripts LIKE '[0-9]*'
GROUP BY [Sua_Tabela].[nome da maquina]; 

* Substituindo acima, Sua_Tabela pelo nome da sua tabela.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

19 horas atrás, Janilson Brito disse:

@Basole  meu amigo, muito obrigado, era exatamento o que eu precisava. agora vou tentar seguir em frente e ver até onde consigo. muito, muito muito obrigado

Basole, bom dia

 

Mais uma duvida, atraves desta consulta que voce me ajudou, preciso relacionar ela a outra tabela, para ter os dados completos.

ou seja tenho em uma tabela de inventario, tenho o mesmo campo "nome do computador" faço uma relação entre elas e da outra tabela consigo trazer os dados ambiente e segmento. gostaria de somar a quantidade de scripts por segmento.

com a uniao ficaria assim

 

nome do computador      total de scripts     segmento       ambiente

teste1                                1                            rio                   prd

teste2                                 4                            sp                  prd

teste3                                1                            sp                   prd

teste4                                 2                           rio                   hmg

 

preciso do resultado assim

 

ambiente                    segmento            contar segmento

prd                              rio                         1   

prd                              sp                          5

hmg                            rio                          2

Link para o comentário
Compartilhar em outros sites

20 horas atrás, Janilson Brito disse:

Basole, bom dia

 

Mais uma duvida, atraves desta consulta que voce me ajudou, preciso relacionar ela a outra tabela, para ter os dados completos.

ou seja tenho em uma tabela de inventario, tenho o mesmo campo "nome do computador" faço uma relação entre elas e da outra tabela consigo trazer os dados ambiente e segmento. gostaria de somar a quantidade de scripts por segmento.

com a uniao ficaria assim

 

nome do computador      total de scripts     segmento       ambiente

teste1                                1                            rio                   prd

teste2                                 4                            sp                  prd

teste3                                1                            sp                   prd

teste4                                 2                           rio                   hmg

 

preciso do resultado assim

 

ambiente                    segmento            contar segmento

prd                              rio                         1   

prd                              sp                          5

hmg                            rio                          2

basole, bom dia!

obrigado mais uma vez pela ajuda, ja consegui fazer o que eu queria. estarei marcando como resolvido na resposta anterior. um grande abraço.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...