Ir ao conteúdo

Access Acrescentar dias entre duas datas


Ir à solução Resolvido por Muca Costa,

Posts recomendados

Postado

Banco de dados: Access

Tabela: tblAusencias

Campos: ID(Tipo: Numeração automática), DT(Tipo: Data), DiaSemana(Tipo: Texto curto) e Descrição (Tipo: Texto Curto)

 

Preciso acrescentar na tabela as ausências de Férias, Licença saúde, Folgas, etc...

Desejo automatizar esses acréscimos informando Data Inicial, Data Final e Descrição.

 

Pode ser por macro ou uma consulta acréscimo...

 

Gostaria de contar com a ajuda de vocês!

Postado

Segue exemplo em vba no access 

 


Dim dtIni As Date
Dim dtFin As Date
Dim j As Long
Dim findEvent As Variant

    Const sDesc As String = "Férias,Licença saúde,Folgas,etc" ' Altere/Acresc. os eventos

dtIni = VBA.Format("01/20/2019", "mm/dd/yyyy") '* altere as suas datas
dtFin = VBA.Format("01/23/2019", "mm/dd/yyyy")

   findEvent = VBA.Split(sDesc, ",")

   DoCmd.SetWarnings False

For j = 0 To UBound(findEvent)
    
   DoCmd.RunSQL "INSERT INTO tblAusencias([DT],[Descrição]) VALUES " & _
                 "(#" & VBA.Format(dtIni, "mm/dd/yyyy") & "#,'" & findEvent(j) & "')"
             
          dtIni = dtIni + 1
Next j

DoCmd.SetWarnings True

MsgBox j + 1 & " resgistros Salvos", 64, "Sucesso"

 

  • Curtir 1
Postado

Basle, obrigado pela atenção,

 

Porém estou tendo algumas dificuldades:

 

Exemplo:

As informações de dtIni, dtFin e Descrição informo previamente em caixa de texto de um formulário.

Quando informo dtIni = 07/01/2020, dtFin = 31/01/2020 e Descrição = FÉRIAS

 

Na macro que você disponibilizou retorna 5 registros (01/07/2020, 01/08/2020, 01/09/2020, 01/10/2020 não em formato dd/mm/aaaa), o campo Descrição fica de acordo com a informação do evento Const sDesc As String

 

Porém o que desejo é acrescer dias de 07 a 31 de janeiro/2020 ou seja 25 registros.

No campo DT = 25 datas

No campo DiaSemana = segunda-feira, terça-feira, quarta-feira. Ou seja dia da semana correspondente ao dia.

No Campo Descrição = FÉRIAS (informado na caixa de texto).

  • Solução
Postado

Resolvi com base no procedimento do Basole. Ficou assim:

 

Dim dtIni As Date, dtFin As Date, j As Long, N As String, De As String

dtIni = VBA.Format(Me.dtIni, "Short Date")
dtFin = VBA.Format(Me.dtFin, "Short Date")
N = Me.nDias
De = Me.Descricao

DoCmd.SetWarnings False

For j = 1 To N
               CurrentDb.Execute "INSERT INTO tblAusencias(DataFeriado, Semana, Descrição)" _
                                & " Values(""" & Format(dtIni, "dd/mm/yyyy") & """,""" & WeekdayName(Weekday(dtIni)) & """," _
                                & """" & De & """);"
          
               dtIni = dtIni + 1
Next j

DoCmd.SetWarnings True

MsgBox j + 1 & " resgistros Salvos", 64, "Sucesso"

  • Curtir 1

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!