Ir ao conteúdo

Access Campos Calculado


Ir à solução Resolvido por Basole,

Posts recomendados

Postado

Fala pessoal,

 

Vou começar um banco de dados no access e to precisando de uma forcinha.

É um banco de dados de contratos e tem dois campos que eu preciso fazer um calculo

 

Campo "Data final'

Eu um com data inicial de um determinado contrato e prazo (em mezes)

Exemplo: "Data Inicial" (26/02/2015); "Prazo" (12 meses); 

Eu gostaria que a partir desses dados a data final do contrato fosse calculada.

 

Campo "Fim do contrato (em dias)"

Gostaria que esse campo calculasse a "Data final" - a data de hoje e me fornecesse quantos dias faltam para o final do contrato.

 

Como posso fazer isso no access? Seja campo calculado, ou módulo, ou programação?

Alguém pode me ajudar

Postado

Higor, como voce não compartilhou sua tabela ou um exemplo,

Segue um exemplo em vba por suposicâo: 

Aperte ALT + F11, crie um modulo e cole o codigo abaixo, em seguida  exceute a macro.

 

Sub Calcular_Meses()
    Dim d As Database
    Dim r As Recordset
    Dim DtI As Field, DtF As Field, Pr As Field
    Set d = CurrentDb()
    Set r = d.OpenRecordset("tabela1")    'Altere os nomes: (tabela,campos)
    Set DtI = r.Fields("Data inicial")
    Set DtF = r.Fields("Data Final")
    Set Pr = r.Fields("Prazo")
    While Not r.EOF
        r.Edit
        DtF = DateAdd("m", Pr, DtI)
        r.Update
        r.MoveNext
    Wend
    r.Close
End Sub

Database1.zip

  • Curtir 2
Postado

Fala Basole, a ideia é essa mesma.

Mas, tem outro campo a resolver:

"Dias para o fim"

A ideia desse campo é ele me fornecer quantos dias faltam para o final do contrato.

Tipo, ele pega a "Data Final" e subtrai pela data de hoje e me retorna quantos dias faltam para encerrar.

Dá pra fazer isso em macro também?

 

 

 

 

Higor, como voce não compartilhou sua tabela ou um exemplo,

Segue um exemplo em vba por suposicâo: 

Aperte ALT + F11, crie um modulo e cole o codigo abaixo, em seguida  exceute a macro.

 

Sub Calcular_Meses()
    Dim d As Database
    Dim r As Recordset
    Dim DtI As Field, DtF As Field, Pr As Field
    Set d = CurrentDb()
    Set r = d.OpenRecordset("tabela1")    'Altere os nomes: (tabela,campos)
    Set DtI = r.Fields("Data inicial")
    Set DtF = r.Fields("Data Final")
    Set Pr = r.Fields("Prazo")
    While Not r.EOF
        r.Edit
        DtF = DateAdd("m", Pr, DtI)
        r.Update
        r.MoveNext
    Wend
    r.Close
End Sub

 

Database1.rar

  • Solução
Postado

Substitua o cod abaixo no mod 1: 

 

* os valores (-)  negativos que retornarêm no campo 'Dias para o fim' representam em "dias vencidos. "

abx. 

 

Option Compare Database
Sub Calcular_Meses()
    Dim d As Database
    Dim r As Recordset
    Dim DtI As Field, DtF As Field, Pr As Field, dpf As Field
    Set d = CurrentDb()
    Set r = d.OpenRecordset("tabela1")    'Altere os nomes: (tabela,campos)
    Set DtI = r.Fields("Data inicial")
    Set DtF = r.Fields("Data Final")
    Set Pr = r.Fields("Prazo")
    Set dpf = r.Fields("Dias para o fim")
    While Not r.EOF
        r.Edit
        DtF = DateAdd("m", Pr, DtI)
        dpf = DateDiff("d", Date, DtF)
        r.Update
        r.MoveNext
    Wend
    r.Close
End Sub

  • Curtir 1
Postado

Opa, eu tnha conseguido fazendo dois módulos um com o que você já tinha me mandado e outro que fiz a partir do seu com o DataDif...

Mas, deu certinho... valeu!

 

Substitua o cod abaixo no mod 1: 

 

* os valores (-)  negativos que retornarêm no campo 'Dias para o fim' representam em "dias vencidos. "

abx. 

 

Option Compare Database
Sub Calcular_Meses()
    Dim d As Database
    Dim r As Recordset
    Dim DtI As Field, DtF As Field, Pr As Field, dpf As Field
    Set d = CurrentDb()
    Set r = d.OpenRecordset("tabela1")    'Altere os nomes: (tabela,campos)
    Set DtI = r.Fields("Data inicial")
    Set DtF = r.Fields("Data Final")
    Set Pr = r.Fields("Prazo")
    Set dpf = r.Fields("Dias para o fim")
    While Not r.EOF
        r.Edit
        DtF = DateAdd("m", Pr, DtI)
        dpf = DateDiff("d", Date, DtF)
        r.Update
        r.MoveNext
    Wend
    r.Close
End Sub

Visitante
Este tópico está impedido de receber novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!