MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]consulta retorna erro

    avatar
    matutano
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 358
    Registrado : 16/05/2011

    [Resolvido]consulta retorna erro Empty consulta retorna erro

    Mensagem  matutano em 9/2/2013, 11:50

    bom dia amigos tenho uma questão que necessito da vossa ajuda se possível:
    1-estou a utiliza um exemplo do J. Paulo para retornar dias uteis entre duas datas. O que está acontecer quando digito data de inicio no campo diastrab aparece erroentendo que falta a data final.
    Pergunto e peço ajuda á forma de no campo diasTrab não aparecer ERRO? aparecer por exemplo zero
    em anexo uma foto para melhor entendimento.

    Obrigado
    Anexos
    [Resolvido]consulta retorna erro Attachmentconsulta.docx
    Você não tem permissão para fazer download dos arquivos anexados.
    (118 Kb) Baixado 13 vez(es)
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  Cláudio Más em 9/2/2013, 17:01

    "DiasTrabalhados" deve ser um campo calculado.
    Nesse caso, qual é a expressão desse campo, no design da consulta?
    avatar
    matutano
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 358
    Registrado : 16/05/2011

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  matutano em 9/2/2013, 21:25

    bom a expressão no campo é DiasTrabalhados:DST([DataInicio];[DataFim]) mas tem um modulo fdUteis
    Anexos
    [Resolvido]consulta retorna erro Attachmentconsulta1.docx
    Você não tem permissão para fazer download dos arquivos anexados.
    (120 Kb) Baixado 7 vez(es)
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  Cláudio Más em 10/2/2013, 12:49

    A solução é adaptar a função DST(), que provavelmente está no módulo "fdUteis".
    Tem como postar o código?
    avatar
    matutano
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 358
    Registrado : 16/05/2011

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  matutano em 10/2/2013, 13:43


    Junto envio o código do modulo, agradecia ajuda, pois tenho muito pouco conhecimento em códigos.
    Muito Obrigado.

    Public Function DTS(dtInicio As Date, dtFim As Date, Optional HojeTb As Boolean = False, Optional UltTb As Boolean = False) As Integer
    '....................................................................
    ' Nome: DTS
    ' Entradas: dtInicio As Date
    ' dtFim As Date
    ' HojeTb As Boolean
    ' UltTb As Boolean
    ' Saída: Integer
    ' Autor: Arvin Meyer
    ' Data: Maio 5,2002
    ' Comentário: Aceita duas datas e devolve o número de dias úteis
    ' entre elas. Note-se que esta função considera os feriados
    ' do período. Ela exige a existência de uma tabela chamada
    ' tblFeriados com um campo, no formato data, chamado FerData.
    ' Se HojeTb = True, a data inicial também será considerada.
    ' Se UltTb = true, a data final também será considerada.
    '....................................................................
    On Error GoTo Err_DTS

    Dim intCount As Integer
    Dim rst As DAO.Recordset
    Dim db As DAO.Database

    Set db = CurrentDb
    Set rst = db.OpenRecordset("SELECT [FerData] FROM tblFeriados", dbOpenSnapshot)

    If HojeTb Then
    dtInicio = dtInicio + 1
    End If
    ' Se desejar contar a data de início, passe True em HojeTb

    intCount = 0

    If UltTb Then
    Do While dtInicio <= dtFim
    rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
    If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
    If rst.NoMatch Then intCount = intCount + 1
    End If
    dtInicio = dtInicio + 1
    Loop
    Else
    Do While dtInicio < dtFim
    rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
    If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
    If rst.NoMatch Then intCount = intCount + 1
    End If
    dtInicio = dtInicio + 1
    Loop
    End If
    DTS = intCount

    Exit_DTS:
    Exit Function

    Err_DTS:
    Select Case err

    Case Else
    MsgBox err.Description
    Resume Exit_DTS
    End Select

    End Function

    '*********** Code End **************
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  Alexandre Neves em 10/2/2013, 14:04

    Boa tarde,
    Tente assim
    Public Function DTS(Optional dtInicio As Date = 0, Optional dtFim As Date = 0, Optional HojeTb As Boolean = False, Optional UltTb As Boolean = False) As Integer
    '....................................................................
    ' Nome: DTS
    ' Entradas: dtInicio As Date
    ' dtFim As Date
    ' HojeTb As Boolean
    ' UltTb As Boolean
    ' Saída: Integer
    ' Autor: Arvin Meyer
    ' Data: Maio 5,2002
    ' Comentário: Aceita duas datas e devolve o número de dias úteis
    ' entre elas. Note-se que esta função considera os feriados
    ' do período. Ela exige a existência de uma tabela chamada
    ' tblFeriados com um campo, no formato data, chamado FerData.
    ' Se HojeTb = True, a data inicial também será considerada.
    ' Se UltTb = true, a data final também será considerada.
    '....................................................................
    On Error GoTo Err_DTS

    Dim intCount As Integer
    Dim rst As DAO.Recordset
    Dim db As DAO.Database

    Set db = CurrentDb
    Set rst = db.OpenRecordset("SELECT [FerData] FROM tblFeriados", dbOpenSnapshot)

    If HojeTb Then
    dtInicio = dtInicio + 1
    End If
    ' Se desejar contar a data de início, passe True em HojeTb

    intCount = 0

    If UltTb Then
    Do While dtInicio <= dtFim
    rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
    If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
    If rst.NoMatch Then intCount = intCount + 1
    End If
    dtInicio = dtInicio + 1
    Loop
    Else
    Do While dtInicio < dtFim
    rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
    If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
    If rst.NoMatch Then intCount = intCount + 1
    End If
    dtInicio = dtInicio + 1
    Loop
    End If
    DTS = intCount

    Exit_DTS:
    Exit Function

    Err_DTS:
    Select Case err

    Case Else
    MsgBox err.Description
    Resume Exit_DTS
    End Select

    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    matutano
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 358
    Registrado : 16/05/2011

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  matutano em 10/2/2013, 17:13

    não funcionou continua aparecer o erro
    envio o exemplo.
    Obrigado
    Anexos
    [Resolvido]consulta retorna erro AttachmentDiasUteisTrabalhados - Cópia.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (19 Kb) Baixado 12 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  Alexandre Neves em 10/2/2013, 18:26

    Public Function DTS(Optional dtInicio = 0, Optional dtFim = 0, Optional HojeTb As Boolean = False, Optional UltTb As Boolean = False) As Integer
    '....................................................................
    ' Nome: DTS
    ' Entradas: dtInicio As Date
    ' dtFim As Date
    ' HojeTb As Boolean
    ' UltTb As Boolean
    ' Saída: Integer
    ' Autor: Arvin Meyer
    ' Data: Maio 5,2002
    ' Comentário: Aceita duas datas e devolve o número de dias úteis
    ' entre elas. Note-se que esta função considera os feriados
    ' do período. Ela exige a existência de uma tabela chamada
    ' tblFeriados com um campo, no formato data, chamado FerData.
    ' Se HojeTb = True, a data inicial também será considerada.
    ' Se UltTb = true, a data final também será considerada.
    '....................................................................
    'adaptdo por Alexandre Neves para aceitar datas nulas
    On Error GoTo Err_DTS

    Dim intCount As Integer
    Dim rst As DAO.Recordset
    Dim db As DAO.Database

    Set db = CurrentDb
    Set rst = db.OpenRecordset("SELECT [FerData] FROM tblFeriados", dbOpenSnapshot)

    If HojeTb Then
    dtInicio = dtInicio + 1
    End If
    ' Se desejar contar a data de início, passe True em HojeTb

    intCount = 0

    If UltTb Then
    Do While dtInicio <= dtFim
    rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
    If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
    If rst.NoMatch Then intCount = intCount + 1
    End If
    dtInicio = dtInicio + 1
    Loop
    Else
    Do While dtInicio < dtFim
    rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
    If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
    If rst.NoMatch Then intCount = intCount + 1
    End If
    dtInicio = dtInicio + 1
    Loop
    End If
    DTS = intCount

    Exit_DTS:
    Exit Function

    Err_DTS:
    Select Case Err
    Case Else
    MsgBox Err.Description
    Resume Exit_DTS
    End Select

    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    matutano
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 358
    Registrado : 16/05/2011

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  matutano em 10/2/2013, 19:14

    ao Alexandre Neves e ao site o meu muito obrigado.
    funcionou na perfeição
    Obrigado

    avatar
    Rgomes71
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 11/07/2017

    [Resolvido]consulta retorna erro Empty Me ajudem

    Mensagem  Rgomes71 em 19/7/2017, 14:59

    Estou usando esta função VB no access, mas continuo com um problema para calcular os dias uteis entre 02 datas, desconsiderando os feriados e finais de semana.

    Da função original abaixo, só alterei a opção UltTb para True para contar o dia da entrega.

    Public Function DTS(Optional dtInicio = 0, Optional dtFim = 0, Optional HojeTb As Boolean = False, Optional UltTb As Boolean = True As Integer

    Meu problema é que quando a data de inicio (HojeTb) cai num final de semana (ex. sábado) não traz a informação que preciso.

    Exemplo:
    PEDIDO ENTROU (HojeTb): 24/06/2017 (sábado) e  PEDIDO FOI ENTREGUE (UltTb): 27/06/2017 (terça-feira) => resultado atual 02 dias uteis.

    Eu quero que quando o pedido entre num sábado ou domingo, ele vá para o próximo dia útil (neste caso segunda-feira). Então deveria ficar:
    PEDIDO ENTRARIA (HojeTb): 26/06/2017 (sábado) e  PEDIDO FOI ENTREGUE (UltTb): 27/06/2017 (terça-feira) => resultado atual 01 dia útil.

    ALGUÉM PODE ME AJUDAR?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]consulta retorna erro Empty Re: [Resolvido]consulta retorna erro

    Mensagem  Alexandre Neves em 19/7/2017, 21:08

    Boa noite, e bem-vindo ao fórum
    Leia e respeite as regras
    - não altere o título, o título serve para resumir a dúvida e não para mensagem
    - escrever em maiúsculas significa gritar
    Edite a sua mensagem e adeqúe de acordo com as regras

    Sobre a sua dúvida, disponibilize dados significativos


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: 28/10/2020, 07:38