Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Access] Hoe eigenschap per jaar bijhouden?

Pagina: 1
Acties:

  • FirecrackerBE
  • Registratie: Augustus 2004
  • Laatst online: 20-11 11:54
Ik ben niet zo erg thuis in het opzetten van databases en zit met volgend probleem voor een nieuw te maken Access-database.
Gegeven 1: klanten
Gegeven 2: eigenschappen en opmerkingen

De eigenschappen zijn standaard en kunnen voor elke klant actief of inactief zijn. Bvb.: “heeft Teamviewer op PC staan”. De opmerkingen zijn vrij in te vullen tekstvelden.
Tot daar het eenvoudige deel, dit zou ik zelf wel klaar krijgen.

Het moeilijke is dat dit per jaar zou moeten bijgehouden worden, zodat je dus een “klantfiche” zou kunnen oproepen en dan per jaar nog terug gaan kijken wat de situatie toen was.
Ik had al gedacht om de access file gewoon elk jaar te kopiëren, wat waarschijnlijk de makkelijkste optie is, maar zeker niet de meest efficiënte.
Er zal ongetwijfeld een meer aanvaardbare oplossing zijn om het binnen de DB op te lossen, maar ik weet niet hoe. Kan iemand me misschien even vooruit helpen hiermee?
Access versie: 2013, hoewel dat er weinig toe doet volgens mij, het is eerder het algemeen principe waar het om gaat.

A positive attitude may not solve all your problems, but it will annoy enough people to make it worth the effort.


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Aan ieder record een timestamp toevoegen en daarop querien. Hoef je geen databases te kopiëren of wat dan ook (want dat gaat geheid een keer fout). Afhankelijk van hoe je dingen wilt opslaan kun je gewoon een begin- en eindtimestamp opslaan. Is er geen eindtimestamp is het nog steeds actief.
Wordt iets opnieuw geactiveerd dan maak je er een nieuwe record voor aan.
Dan kun je een heel precieze geschiedenis bij gaan houden.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Wil je echt per jaar opslaan, of wil je terug in de tijd kunnen kijken?

Als je bijvoorbeeld gewoon de historie wil zien kan je kijken naar versioning ( Het toevoegen van een versienummer, makkelijkst in dit geval is een timestamp, de meest recente entry is de huidige staat ), archiving ( Oude records naar een andere tabel kopiëren ) of change logging ( Wijzigingen apart bijhouden van de data. Door deze omgekeerd uit te voeren kun je weer terug in de tijd )

[ Voor 5% gewijzigd door Woy op 13-02-2014 12:35 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • FirecrackerBE
  • Registratie: Augustus 2004
  • Laatst online: 20-11 11:54
Ik dacht inderdaad aan het toevoegen van een last modify datum of zoiets.
Een historiek waarbij elke wijziging wordt bij gehouden zou eigenlijk ideaal zijn, maar ik weet niet goed hoe ik dat praktisch geregeld kan krijgen, daarvoor ben ik er niet genoeg in thuis. Kan iemand me misschien daarmee op weg helpen? Ik denk dat als ik dit in een eenvoudige setup zie, ik het wel verder kan toepassen op een uitgebreidere versie.

A positive attitude may not solve all your problems, but it will annoy enough people to make it worth the effort.


  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 20-11 21:15
Je zoekt een koppeltabel denk ik? Simpel voorbeeldje. In het voorbeeld kun je bij de tabel bier_leverancier extra velden opmerkingen & datum toevoegen.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Historie is vrij eenvoudig bij te houden met een versie/timestamp.

Stel je hebt een tabel producten( id, naam, kleur, etc ). Normaal gesproken pas je de velden van het product aan als je wat wil wijzigen. Maar dan ben je logischerwijs de historie kwijt. Wat je nu wil doen is de tabel aanpassen zodat er een extra timestamp veld in zit producten( id, timestamp, kleur, etc ). Als je nu een wijziging wil doen dan doe je geen update, maar een insert met de nieuwe gegevens en de huidige tijd als timestamp.

Een andere vergelijkbare oplossing is om de historie in een separate tabel bij te houden. Wat je dan bij een update doet is eerst de oude waardes in de historie tabel wegschrijven, en daarna pas het record updaten. Het voordeel daarbij is dat het eenvoudiger is om de huidige status te query'en.

[ Voor 22% gewijzigd door Woy op 13-02-2014 12:57 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

FirecrackerBE schreef op donderdag 13 februari 2014 @ 12:46:
Ik dacht inderdaad aan het toevoegen van een last modify datum of zoiets.
Een historiek waarbij elke wijziging wordt bij gehouden zou eigenlijk ideaal zijn, maar ik weet niet goed hoe ik dat praktisch geregeld kan krijgen, daarvoor ben ik er niet genoeg in thuis. Kan iemand me misschien daarmee op weg helpen? Ik denk dat als ik dit in een eenvoudige setup zie, ik het wel verder kan toepassen op een uitgebreidere versie.
Sla iedere wijziging apart op, met een begin- en eindtimestamp. Dan heb je daarmee alle data die je daarvoor nodig hebt.

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
TERW_DAN schreef op donderdag 13 februari 2014 @ 14:49:
Sla iedere wijziging apart op, met een begin- en eindtimestamp. Dan heb je daarmee alle data die je daarvoor nodig hebt.
Idd. En als een 'opmerking' sowieso maar voor 1 specifiek jaar geldig is, is gewoon alleen het jaartal al voldoende.

https://niels.nu


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Inderdaad, ik noem het timestamp omdat dat de meest precieze optie is, maar per jaartal kan het natuurlijk ook. Dat ligt maar net aan de eisen die je eraan hangt.
Pagina: 1