[Access] dubbele gegevens waarde aanpassen*

Pagina: 1
Acties:

  • Falcon10
  • Registratie: Mei 2002
  • Laatst online: 29-11 20:08

Falcon10

Hit it i would !

Topicstarter
Ik zit met een access 2003 DB waar ik een boel dubbelle gegevens in heb ( bewust ).
Dit voor het bijhouden van keuringen van dingen.
Elk ding heeft een unieke materiaalnr, aan dit materiaalnr hangt steeds een uniek keuring ID.
Een materiaalnr kan dus meerdere unieke keuring ID's hebben ( elk jaar nieuwe keuring ).
Bij deze keuring ID hangt ook een checkbox die zegt of de desbetreffende keuring de meest recente is of niet; Is deze aangevinkt is dit de meest recente, zoniet, is het een keuring uit het verleden.

Nu had ik graag gehad, dat access autommatisch aan of afvinkt welk de meest recente keuring is.
In woorden is dit nog simpel :

Ik zoek eerst op dezelfde materiaalnrs. Vervolgens kijk ik welk van de gevonden records de meest recente keuring ID heeft. Vervolgens zorg ik dat bij deze recente keuring ID de checkbox wordt aangevinkt en bij de oude keuring ID's de checkbox wordt afgevinkt en klaar is kees.

Maar hoe doe ik dit nu in de praktijk ?
Ik denk dat dit iets te veel is om met een query uit te voeren ?
Dus met een macro of via een module in VBA ?
En hoe doe ik dit juist ? Ik ken geen fluit van VBA, dus iemand enig idee waar ik info daarover kan vinden ?

-| Hit it i would ! |-


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Iets als:
code:
1
2
UPDATE tbl SET tbl.recent = True
WHERE tbl.datum=(select max(datum) as maxdatum from tbl as t2 where t2.mat= tbl.mat);
zou het al moeten doen

offtopic:
Je 'l' is dubbel

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Falcon10
  • Registratie: Mei 2002
  • Laatst online: 29-11 20:08

Falcon10

Hit it i would !

Topicstarter
bedankt lustucru.

kan je er wel meer uitleg bij geven, want helemaal snap ik het niet :X

moet ik dit in de module in access zetten ?
ik vermoed dat tbl de naam van de tabel is ?
en wat is t2 ?

-| Hit it i would ! |-


  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 12:05
Even inspringen:

Dit is een query. Maak een query-ontwerp, spring naar de SQL-view (zoek bij blauw driehoekje) en plak het erin. (Edit: het is een actie query, er verandert namelijk wat in je database, het executen doe je met de rode uitroepteken bij voorkeur nadat je de query eerst hebt gesaved).

Het deel tussen haakjes zoekt de hoogste datum met dezelfde materiaalcode. Hiervoor gebruik je dezelfde tabel als die je aan het updaten bent. Om de database niet in de war te brengen, gebruik je de 2e keer een alias (tbl as t2) en met t2 refereer je naar de tabel die je aanroept in de subquery, Nu staat er t2.mat = tbl.mat, anders had er tbl.mat = tbl.mat gestaan en dat slaat nergens op.

Advies:
Doe eerst
UPDATE tbl SET tbl.recent = False
om alle vinkjes uit te zetten (default waarde)

[ Voor 11% gewijzigd door Bolukan op 15-02-2008 20:08 ]