MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Consulta identificando o nº de ordem do registo

    avatar
    niro35
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 11/04/2011

    [Resolvido]Consulta identificando o nº de ordem do registo Empty [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  niro35 1/6/2011, 11:13

    Bom dia a todos.
    Mais uma vez recorro ao vosso conhecimento para me ajudarem na resolução de um problema.
    Tenho 1 tabela de registos com os seguintes dados (baseado num relógio de ponto):
    #id colaborador#tipodepicagem#hora#data# (apenas isto)
    #001#Entrada#9:00#1/6/2011
    #001#Saida#12:00#1/6/2011
    #001#Entrada#13:00#1/6/2011
    e por ai fora....

    Eu precisava obter uma consulta que me desse a indicação que a entrada às 9h00 corresponde ao 1º registo de entrada do dia 1 /6/2011 para o colaborador 001 e que a entrada às 13h00 corresponde ao 2º registo de entrada do dia 1/6/2011 para colaborador 001, e mais registos houvesse o nº de ordem seria sequencial.
    O mesmo se deverá aplicar às saídas, naturalmente.

    Alguém me pode ajudar? Smile

    Desde já o meu agradecimento.

    Abraço.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  Alexandre Neves 1/6/2011, 18:42

    Boa tarde, niro

    Atenção aos nomes reservados do Access. Evite nomes de campos com espaço.
    Coloque na origem da consulta
    SELECT Descricao([id colaborador],tipopicagem,hora,data) FROM Tabela ORDER BY [id colaborador], data,hora;
    Coloque num módulo

    Function Descricao(ID As String, TipoPicagem As String, HoraPicagem As Date, DataPicagem As Date) As String
    'criada por Alexandre Neves
    'em 2011-06-01
    'para niro35
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, Ordem As Integer
    Set Rst = CurrentDb.OpenRecordset("SELECT [id colaborador] FROM Tabela WHERE [id colaborador]=" & ID & " and tipopicagem='" & TipoPicagem & "' and data=#" & DataPicagem & "# ORDER BY hora;")

    Ordem = 0
    Do While Not Rst.EOF
    Ordem = Ordem + 1
    If HoraPicagem = Rst("Hora") Then
    Descricao = Ordem & "º registo de " & TipoPicagem & " do dia " & Rst("data") & " para o colaborador " & Rst("[id colaborador]")
    Exit Do
    End If
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Function
    Cumprimentos,
    avatar
    niro35
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 11/04/2011

    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  niro35 1/6/2011, 22:38

    Boa tarde/Noite Alexandre. Obrigado pela resposta.

    Antes de mais o espaço nos campos foi mero acaso ao apresentar o problema aqui no fórum Smile. Normalmente não deixo espaços nos nomes de campos.
    Criei a consulta conforme me indicou com base na instrução sql. Criei a função Descricao substituindo os respectivos nomes dos campos.
    No entanto ao correr a consulta surge um erro em como a função Descricao não está definida na expressão.
    Já agora, a minha versão access é a 2010.

    instrução SQL para a consulta:

    SELECT Descricao(id_colaborador,tipo_picagem,hora,data)
    FROM dados
    ORDER BY id_colaborador, data, hora;

    Instrução para o módulo Descricao:

    Function Descricao(ID As String, TipoPicagem As String, HoraPicagem As Date, DataPicagem As Date) As String
    'criada por Alexandre Neves
    'em 2011-06-01
    'para niro35
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, Ordem As Integer
    Set Rst = CurrentDb.OpenRecordset("SELECT id_colaborador FROM dados WHERE id_colaborador=" & ID & " and tipo_picagem='" & TipoPicagem & "' and data=#" & DataPicagem & "# ORDER BY hora;")

    Ordem = 0
    Do While Not Rst.EOF
    Ordem = Ordem + 1
    If HoraPicagem = Rst("hora") Then
    Descricao = Ordem & "º registo de " & TipoPicagem & " do dia " & Rst("data") & " para o colaborador " & Rst("id_colaborador")
    Exit Do
    End If
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Function

    Um abraço!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  Alexandre Neves 1/6/2011, 23:47

    Novamente,

    Nomeie o módulo diferente da função. Pode ser apenas isso.
    Cumprimentos,
    avatar
    niro35
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 11/04/2011

    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  niro35 2/6/2011, 09:27

    Bom dia Alexandre.

    Mudei o nome do módulo. Começou a correr, mas dá um novo erro de VB:

    Run-time error '3075'
    Erro de sintaxe (operador em falta) na expressão de consulta 'id_colaborador'='123410001 and tipo_picagem='1' and data=#08-04-2011# ORDER BY hora;'

    Já tentei perceber que operador se trata mas não cheguei a nenhuma conclusão.

    Um abraço.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  Alexandre Neves 2/6/2011, 21:22

    Boa noite, niro

    veja se é isto
    Set Rst = CurrentDb.OpenRecordset("SELECT id_colaborador FROM dados WHERE id_colaborador='" & ID & "' and tipo_picagem='" & TipoPicagem & "' and data=#" & DataPicagem & "# ORDER BY hora;")
    Cumprimentos,
    avatar
    niro35
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 11/04/2011

    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  niro35 6/6/2011, 10:57

    Bom dia!

    Antes de mais agradeço a atenção do Alexandre e peço desculpa por só agora responder.

    Já experimentei a alteração e o erro continua.

    Tomei a liberdade de enviar um exemplo da base, pois se calhar será melhor a análise.

    Cumprimentos
    Anexos
    [Resolvido]Consulta identificando o nº de ordem do registo Attachmentcount_in_out_ordem.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (21 Kb) Baixado 17 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  Alexandre Neves 6/6/2011, 14:11

    Boa tarde, niro

    Porque o id começa com pelica? É mau para trabalhar os dados.
    Para tirar o 1º caracter:
    Sub Tira1Caracter()
    CurrentDb.Execute "UPDATE dados SET id_colaborador=mid(id_colaborador,2);"
    End Sub

    Utilize esta função e execute a consulta:
    Function Descricao(ID As String, TipoPicagem As Integer, HoraPicagem As Date, DataPicagem As Date) As String
    'criada por Alexandre Neves
    'em 2011-06-01
    'para niro35
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, Ordem As Integer

    On Error GoTo Sai
    Set Rst = CurrentDb.OpenRecordset("SELECT id_colaborador,hora FROM dados WHERE id_colaborador='" & ID & "' and tipo_picagem=" & TipoPicagem & " and data=#" & Format(DataPicagem, "mm-dd-yyyy") & "# ORDER BY hora;")
    Ordem = 0
    Do While Not Rst.EOF
    Ordem = Ordem + 1
    If HoraPicagem = Rst("hora") Then
    Descricao = Ordem & "º registo de (tipo de picagem " & TipoPicagem & ") do dia " & DataPicagem & " para o colaborador " & ID
    Exit Do
    End If
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    Sai:
    End Function

    Cumprimentos,
    avatar
    niro35
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 11/04/2011

    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  niro35 6/6/2011, 14:30

    Baoa tarde Alexandre!!!

    Experimentei sem o apóstrofe no id_colaborador e usando a nova função e resulta! Smile

    O apóstrofe vem da "porcaria" do ficheiro que importo do relógio. Ele é gerado em formato txt e ao importar directamente para a tabela dados assume o apóstrofe, não sei bem porquê. A verdade é que toda a base foi criada e assente numa conversão desse nº para um nome e não me tem feito diferença. Esta consulta, porque vai à base "dados" (usando, portanto, os dados originais) estava a dar esta complicação.

    Muito Obrigado Alexandre. Acho que agora dou conta do recado. Smile

    Conteúdo patrocinado


    [Resolvido]Consulta identificando o nº de ordem do registo Empty Re: [Resolvido]Consulta identificando o nº de ordem do registo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 01:17