Ir ao conteúdo
  • Cadastre-se

Access Campos Calculado


Ir à solução Resolvido por Basole,

Posts recomendados

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

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

  • Solução

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
Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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