DateAdd met variabel aantal jaren uit ander veld

Status
Niet open voor verdere reacties.

naprius

Gebruiker
Lid geworden
25 apr 2007
Berichten
147
Hallo,

Mijn probleem is als volgt, ik moet voor een klant een bestedingsprognose maken voor een aantal middelen. Deze middelen hebben verschillende afschrijvingsjaren. Verder hebben de middelen verschillende aanschafdata.
Ik heb dus 2 kolommen die ik bij elkaar wil optellen. De aanschafdatum (1-1-1997, in dit format) + de Afschrijfjaren (10 of 15 of 7, gewoon een getal dus.)

Als ik dan: Datum Afschrijving: DateAdd("yyyy";[Afschrijfjaren];[Aanschafdatum]) invoer, krijg ik de foutmelding dat de gegevenstypen in de criteriumexpressies niet overeen komen.

Ik weet even niet hoe ik dit op moet lossen. Zou iemand me kunnen helpen?

groetjes, naprius
 
Je datum ziet er uit als een datum, maar is vermoedelijk een tekstveld. En dat kan Access dan niet lezen. Als je toch alleen maar datums opslaat in dit veld, is de meest logische stap uiteraard het omzetten van het veldtype. Anders kun je met CDate([Aanschafdatum]) de datum converteren naar een datumwaarde.
 
Zo zou je het kunnen oplossen.

Code:
Me.afschrijfdatum = CDate(Day(Me.aanschafdatum) & "-" & Month(Me.aanschafdatum) & " -" & Year(Me.aanschafdatum) + Me.aantaljaren)

Jan
 
Als ik inplaats van [Afschrijvingsjaren] gewoon een cijfer invul, zoals 3, dan werkt het wel gewoon.

Ik heb nu die aanschafdatum aangepast door Datum Nieuw Geleverd: CDate([Aanschafdatum]), maar dan vraagt hij me vervolgens de parameterwaarde.
 
Zo zou je het kunnen oplossen.

Code:
Me.afschrijfdatum = CDate(Day(Me.aanschafdatum) & "-" & Month(Me.aanschafdatum) & " -" & Year(Me.aanschafdatum) + Me.aantaljaren)

Jan

Deze oplossing werkt ook niet. Krijg dezelfde foutmelding als bij oorspronkelijke code.
Het zit hem denk ik in de afschrijfjaren, niet in de datum.

Maar CDate loslaten op de Afschrijfjaren werkt ook niet.. :confused:
 
de eerste keer gebruik je afschrijfjaren later weer aantaljaren ?
 
Nu begrijp ik helemaal niet meer wat je bedoelt :(..

Is er geen manier om het op de wijze te doen die ik voor ogen had, door iets aan de [Afschrijfjaren] aan te passen?


EDIT: ik heb nu maar een extra kolom gemaakt in de tabel, waarin ik de afschrijvingsjaren * 365 heb gedaan. In de Query doe ik dan de aanschafdatum + de afschrijvingsjaren in dagen, maar echt accuraat is het niet...

Dus als iemand nog een idee heeft hoe ik het kan oplossen met de jaren, dan maakt die iemand mijn dag :P
 
Laatst bewerkt:
Nu word ik een beetje gek.. Ik heb de datum omgezet in een jaartal. Dat gaat prima, dan tel ik de afschrijvingsjaren op bij dat jaartal. So far, so good. Ook al vraagt access wel om een parameter waarde voor Datum geleverd.

Nu wil ik graag een kruistabel met als kolomkop de jaartallen waarin die middelen afgeschreven worden. Daar gaat het mis. Geen kolomkoppen en als ik ze zelf bij eigenschappen typ vult access ze nog niet in.
 
Ik snap steeds minder van je probleem; het is onmogelijk simpel om met DateAdd een aantal jaren op te tellen bij een datum; aan jouw oorspronkelijke formule mankeerde dan ook helemaal niks. Als zo'n simpele formule niet werkt, dan heeft dat dus een oorzaak; ofwel je veld [Afschrijfjaren] is geen getal, ofwel je veld [Aanschafdatum] is geen datumveld. Meer smaken zijn er niet.
Als ik inplaats van [Afschrijvingsjaren] gewoon een cijfer invul, zoals 3, dan werkt het wel gewoon.
Dat wekt dus de indruk dat je veld [Afschrijvingsjaren] geen getalveld is maar een tekstveld.
Pas je veldinstellingen aan, en het zou toch echt moeten werken...
 
In de tabel staat er toch echt Numeriek naast.
In de query heb ik het veld ook al op standaard en standaardgetalnotatie gezet. Het werkt allemaal niet.

EDIT: in de tabel ook nog van lange integer naar integer gezet en Standaardgetalnotatie en gewoon standaard gezet.
 
Laatst bewerkt:
Dan wil ik die db wel eens zien.... Overigens zei je hiervoor dat je het datumveld hebt omgezet naar een jaartal... Da's natuurlijk geen datumveld meer dan.
 
Dan wil ik die db wel eens zien.... Overigens zei je hiervoor dat je het datumveld hebt omgezet naar een jaartal... Da's natuurlijk geen datumveld meer dan.

Dat heb ik uiteraard weer teruggezet.
De database is ontiegelijk groot dus die krijg ik niet zomaar hier geladen, naast het feit dat ik daarmee gevoelige info op het internet plak.
 
Bewijst maar weer hoe dom ik ben..

Bij het nakijken van de afschrijfjarentabel, bleek 1 veld niet ingevuld.
Daarom stuiterde hij natuurlijk.

De oplossing is dus nabij, bedankt voor de hulp.. nu kan ik de gegeven oplossingen wel gebruiken :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan