MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Dúvida com Datas e Select

    Compartilhe

    baldocchi
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2014

    [Resolvido]Dúvida com Datas e Select

    Mensagem  baldocchi em Qui 10 Mar 2016, 15:39

    Eu não achei um exemplo que tenha minha dúvida.
    Se alguém puder ajudar agradeço demais.

    Eu fiz um select para pegar todos os registros com data igual ou mair que hoje, porém, o Access não retorna nenhum registro se a data pesquisa for no mesmo mês, só funciona quando eu crio um registro com uma data muito posterior.

    Por exemplo:
    Eu tenho um registro com data em 15/03/2016 e hoje é 10/03/2016.
    Quando eu faço o Select com a data de 10/03/2016 o Access diz que não registro.
    Mas, quando eu crio um registro com data de Dezembro, por exemplo, o Access retorna o registro procurado.

    Como eu resolvo isso? Mais uma vez, obrigado a todos.

    Olha o meu código:

    O código funciona só com datas muito posteriores às datas do campo "agendamento" da tabela t_agendamento.

    Private Sub AgendamentosGeral()
       Dim vsql As String
       Dim rstSql As DAO.Recordset
       Dim StrDtAgend, DtCompara As String
       
       StrDtAgend = Date
       
       vsql = "SELECT Agendamento FROM t_agendamento WHERE Agendamento >= #" & StrDtAgend & "#;"
         
       Set rstSql = CurrentDb.OpenRecordset(vsql)

       DtCompara = rstSql.Fields("Agendamento").Value

       If DtCompara <> "" Then
         CmdAgendamentos.Caption = "Existe um ou mais agendamentos. Clique aqui"
         Else
         CmdAgendamentos.Caption = "Sem agendamentos até este momento"
       End If



    End Sub


    Última edição por baldocchi em Qui 10 Mar 2016, 17:27, editado 1 vez(es)

    ronaldojr1
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 01/08/2011

    Re: [Resolvido]Dúvida com Datas e Select

    Mensagem  ronaldojr1 em Qui 10 Mar 2016, 15:57

    eu passei por esse problema esses dias.
    o problema e o seguinte, quando fazemos uma consulta no modo visual do access usando uma data como filtro o mesmo usa a data no formata
    portugues bonitinho(dd/mm/aaaa). este é o mesmo formato do valor que vc cadastrou.

    quando usamos via VBA um select usando uma data como filtro o VBA usa as datas no formato americado(mm/dd/aaaa).

    para resolver esse problema eu converti a data para o formato americano, ai pra isso eu criei a seguinte funcao.

    Código:
    Function getDataFormatoAmericano(dataBrasil As Date) As String
        Dim dia, mes, ano As String
        
        dia = Day(dataBrasil)
        mes = Month(dataBrasil)
        ano = Year(dataBrasil)

    getDataFormatoAmericano = mes & "/" & dia & "/" & ano

    End Function

    seu codigo ficaria assim:
    Código:

    Private Sub AgendamentosGeral()
       Dim vsql As String
       Dim rstSql As DAO.Recordset
       Dim StrDtAgend, DtCompara As String
       DIM dataFormatoAmericano as DATE
      
       StrDtAgend = Date
      
       dataFormatoAmericano = getDataFormatoAmericano(StrDtAgend) ' converte a data para padrao americano

       vsql = "SELECT Agendamento FROM t_agendamento WHERE Agendamento >= #" & dataFormatoAmericano & "#;"
        
       Set rstSql = CurrentDb.OpenRecordset(vsql)

      'no codigo abaixo vc pode substituir por:
      'DtCompara = rstSQL!Agendamento | sintaxe é assim: RecordSet!NomeCampo
      'eu prefiro usar do jeito acima pq digita menos, mas ai é criterio seu usar ou nao. so dei a dica.

       DtCompara = rstSql.Fields("Agendamento").Value

       If DtCompara <> "" Then
         CmdAgendamentos.Caption = "Existe um ou mais agendamentos. Clique aqui"
         Else
         CmdAgendamentos.Caption = "Sem agendamentos até este momento"
       End If



    End Sub

    nao sei se tem outras formas de resolver, mas eu resolvi desse jeito.

    FabioPaes
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2302
    Registrado : 14/08/2013

    Re: [Resolvido]Dúvida com Datas e Select

    Mensagem  FabioPaes em Qui 10 Mar 2016, 16:15

    A titulo de aprendizado, Também Pode formatar direto na Consulta SQL:

    vsql = "SELECT Agendamento FROM t_agendamento WHERE Agendamento >= #" & Format(StrDtAgend, "dd/mm/yyyy") & "#;"


    Última edição por fabiopaes em Qui 10 Mar 2016, 17:19, editado 1 vez(es)

    baldocchi
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2014

    Re: [Resolvido]Dúvida com Datas e Select

    Mensagem  baldocchi em Qui 10 Mar 2016, 17:09

    Gente, muito obrigado aos dois.

    Eu fiz dos dois jeitos e os dois funcionam muito bem.

    Obrigado mesmo e que Deus vos abençoe.

    ronaldojr1
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 01/08/2011

    Re: [Resolvido]Dúvida com Datas e Select

    Mensagem  ronaldojr1 em Qui 10 Mar 2016, 17:19

    vlw pela dica fabiopaes,
    isso vai me poupar de reinventar a roda. rsrss

    Também Pode formatar direto na Consulta SQL:

    vsql = "SELECT Agendamento FROM t_agendamento WHERE Agendamento >= #" & Format(StrDtAgend, "dd/mm/yyyy") & "#;"

    baldocchi
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2014

    Re: [Resolvido]Dúvida com Datas e Select

    Mensagem  baldocchi em Qui 10 Mar 2016, 17:26

    ronaldojr1, como eu falei sou novo em Access/VBA.
    Sou obrigado a programar em VBA por motivo de eu trabalhar na Secretaria de Educação da Capital de São Paulo e esta ser a única ferramenta disponível.
    Desculpa se não entendo muito bem desta linguagem

    ronaldojr1
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 01/08/2011

    Re: [Resolvido]Dúvida com Datas e Select

    Mensagem  ronaldojr1 em Qui 10 Mar 2016, 17:34

    acho q me expressei mal ou vc entendeu errado, rsrsrs nao quis desmerecer ou questionar seus conhecimentos.
    eu apenas agradeci ao fabiopaes pela dica, pq eu tb nao conhecia essa funcao interna.
    Assim como vc tb sou iniciante. eu sei fazer alguns codigos e tal, mas aprendi td aqui no forum.
    quando eu disse em nao precisar reinventar a roda eu fiz uma autocritica para mim, pois, eu inventei um codigo que ja existe. entendeu agora?
    desculpe por ter me expressado mal, mas seja bem vindo ao forum, aqui e um otimo lugar para aprender.

    para finalizar... com a dica do fabiopaes vc nao precisa escrever a função q t passei. ai o codigo fica mais limpo.
    sucesso

    baldocchi
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2014

    Re: [Resolvido]Dúvida com Datas e Select

    Mensagem  baldocchi em Qui 10 Mar 2016, 18:15

    mas eu escrevi a função que você passou.
    Eu testei as duas.
    Como eu falei antes, obrigado para os dois.

    Fique com Deus!

    ronaldojr1
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 01/08/2011

    Re: [Resolvido]Dúvida com Datas e Select

    Mensagem  ronaldojr1 em Qui 10 Mar 2016, 18:59

    vlw, sucesso pra nois

      Data/hora atual: Dom 04 Dez 2016, 06:02