Tabel normaliseren

Status
Niet open voor verdere reacties.

Mauvan

Gebruiker
Lid geworden
4 feb 2008
Berichten
136
Ik heb een lastig probleempje met een export van derden. Deze export (excel) bestaat uit, als voorbeeld, zo uit:
Nummer (prim.key)
Algemene gegevens_1
dag1_nr
dag1_tijd
dag1_item
dag2_nr
dag2_tijd
dag2_item
(enz. t/m dag7)
Algemene gegevens_2

Ik wil dus 2 tabellen vullen:
Tabel1:
- Nummer
- Algemene items_1
- Algemene items_2

Tabel2:
- Nummer (kan meer keer voorkomen)
- dag_nr
- dag_tijd
- dag_item

Kortom, ik zou graag in een simpele query de gegevens willen overhevelen en normaliseren. De eerste algemene gegevens is niet zo'n punt, maar de rest heeft uiteraard verschillende veldnamen en dan zou ik daar 7 queries voor moeten maken.
Is zoiets simpeler te doen door bijvoorbeeld gebruik te maken van ophogen van veld_id of zoiets?

Graag advies / aanbevelingen.

Veel dank.
 
Dat heeft weinig nut, omdat je die 7 queries toch nodig hebt. Zelf zou ik in dit geval eerst een Autonummerveld toevoegen aan de brontabel en twee kopieën van die brontabel maken, die vervolgens hernoemen en aanpassen en daarna de overtollige velden verwijderen. In Tabel1 houd je dus de velden over die je nu hebt aangegeven, inclusief een (autonummering?) veld Nummer.
In Tabel2 maak je het veld Nummer Numeriek, anders kan je geen duplicaten maken. Vervolgens gooi je alle Algemene items weg, en laat je alleen de velden van dag1 staan. Die hernoem je dan naar dag_nr etc.
Aan tabel2 moeten nu de overige records inclusief nummer worden toegevoegd uit de brontabel, en dat doe je dus door voor de overige dagen een toevoegquery te gebruiken.
Daarbij selecteer je dus steeds de velden van één specifieke dag uit de brontabel, en die voeg je toe aan de algemene velden in Tabel2. Je voert de query vervolgens één keer uit (anders krijg je dubbele records).
Zelf gebruik ik dus één toevoegquery, waarbij ik na het uitvoeren van de eerste batch de velden verander, de query weer draai, de velden verander etc. tot alle dagen gedaan zijn.

Als de import vaker voorkomt, gaat dit natuurlijk niet werken, omdat je dan bezig blijft. In dat geval kun je beter alle queries voor de verschillende dagen maken en opslaan, en een macro maken die alle queries achter elkaar uitvoert. Dan voer je de import uit met het starten van de macro.
 
Zoiets had ik al min of meer bedacht, maar het gaat inderdaad om terugkerende handelingen die ik liefst zelf niet wil doen. :)
Mogelijk zou ook nog iets gemaakt kunnen worden met VBA, maar daar ben ik slecht in thuis.
Ik kan er wel mee verder zo denk ik.
Dank in elk geval.
 
Het maakt niet zoveel uit of je de queries in VBA maakt en laat draaien, of via aparte queries. Enige voordelen heeft VBA wel; het onderhoud is iets compacter (één code waarin je alles maakt) en je hebt geen overtollige queries in het Navigatiepaneel. Die je overigens wel onzichtbaar kunt maken, dus dat hoeft niet echt een probleem te zijn.
Zowiezo zou ik de hele procedure dus in een macro uitvoeren, om het starten ervan tot één handeling te beperken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan