Updateable Union query

Status
Niet open voor verdere reacties.

maomanna

Gebruiker
Lid geworden
20 feb 2014
Berichten
234
Hallo allen,

Inmiddels heb ik een UNION query gemaakt van 2 tabellen met identieke kolommen, maar andere gegevens (omdat elke tabel een andere vergelijking heeft later in het stadium en kunnen daarom niet samen tot 1 tabel worden gemaakt.) en deze voegt ze mooi samen in 1 overzicht.
Nu heb ik een formulier waarbij ik waarden aan of uit wil vinken.
Echter heb ik begrepen dat een UNION query niet updatebaar is, omdat hij eigenlijk niet meer weet wat waarbij hoort.
Wel heb ik VBA codes gevonden die moeten werken, maar snap er te weinig van?

Hoe werkt dit en wat is de makkelijkste manier om dit toch kan bewerkstelligen?
 
Laatst bewerkt:
Inmiddels heb ik een UNION query gemaakt van 2 tabellen met identieke kolommen, maar andere gegevens (omdat elke tabel een andere vergelijking heeft later in het stadium en kunnen daarom niet samen tot 1 tabel worden gemaakt.)
Andere vergelijking? Je bedoelt een formule? Maar die sla je toch hoop ik niet op in je tabel? In het welk geval je de onderliggende gegevens gewoon in één tabel kunt opslaan. Als je aparte berekeningen nodig hebt voor de 2 (huidige) tabellen, dan moet je er een veld bijzetten waarin je dat onderscheid vastlegt, zodat je de queries daar later op kunt filteren. Mits je tenminste dat onderscheid al niet op een ander punt kunt maken natuurlijk. Dan is dat extra veld niet eens nodig.

Een Union query is nooit bij te werken, zoals het draadje ook al aangeeft. Dus dat pad moet je verlaten. Wat wél kan is individuele tabellen bijwerken. De VBA codes werken dan ook de individuele tabellen bij, niet de Union query. Daar wordt dan wél het sleutelveld uitgelezen, omdat je anders natuurlijk nooit weet welk record je moet bijwerken.
 
Andere vergelijking inderdaad.

Ik heb een functie waarbij hij kijkt wat er is aangevinkt en of dat overeenkomt.
Code:
Public Function Compleetdeel1(lijstChecklist As Boolean, vpChecklist As Boolean, lijstScreening As Boolean, vpScreening As Boolean, lijstBig As Boolean, vpBig As Boolean, lijstHerBig As Boolean, vpHerBig As Boolean, lijstSRC As Boolean, vpSRC As Boolean, lijstHerSRC As Boolean, vpHerSRC As Boolean, lijstVOG As Boolean, vpVOG As Boolean) As Boolean
    Compleetdeel1 = (Not vpChecklist Or lijstChecklist) And (Not vpScreening Or lijstScreening) And (Not vpBig Or lijstBig) And (Not vpSRC Or lijstSRC) And (Not vpVOG Or lijstVOG)
End Function

In de ene tabel staan medewerkers indienst VOOR 2012 en in de andere na 2012. Voor elke tabel staan andere vinkjes.
Om het te laten werken heb ik dus 6 tabellen (elk 3), 1 werknemersgegevens, 1 inhoud dossier, 1 eisen dossier.
De bovenstaande functie vergelijkt de inhoud met de eisen en spuugt daarbij uit wat er nog toegevoegd moet worden om het geheel compleet te krijgen.

Eerst had ik 2 complete databases, maar met zoeken is dat een kriem en wil ik ze dus samenvoegen.
Het zoeken is zo veeel prettiger en sneller en dat gaat tot zo ver prima, alleen zit ik met het aanpassen van de inhoud.

dan moet je er een veld bijzetten waarin je dat onderscheid vastlegt, zodat je de queries daar later op kunt filteren. Mits je tenminste dat onderscheid al niet op een ander punt kunt maken natuurlijk. Dan is dat extra veld niet eens nodig.
Dat zou dan datum indienst moeten zijn, maar dan blijft het punt dat ik niet weet hoe ik de eisen met de inhoud kan vergelijken.
Dan moet er iets komen waarbij Access weet, dat als datum indienst voor 2012 is, hij eisen tabel X moet hebben.
 
Dat is toch simpel? Je datumveld! Ik vind de huidige constructie nogal ingewikkeld, en ik vraag me af of het niet simpeler kan. Uiteraard is dat niet te beoordelen zonder de db te zien. Maar als je gelijkwaardige tabellen hebt, lijkt het mij niet nodig om die te splitsen.
 
Ik snap echt niet wat je bezielt om het zo te doen :). Het is allemaal heel simpel als je één tabel [tblVerpl] maakt met een extra datumveld, en waarin je de voorwaarden per functie vastlegt. Als ik het goed begrijp heb je nu 2 functies waarvoor je 2 voorwaarden hebt, dus als ik de 2 tabellen tblVerpV12 en tblVerpN12 met dat extra datumveld samenvoeg zitten daar 4 records in. Die controlefuncties zijn volgens mij óók overbodig, want bij een nieuwe sollicitant /werknemer laat je op het formulier zien welke er moeten worden aangevinkt, en welke er zijn aangevinkt. En dat op basis van de controledatum. Kortom: in mijn optiek denk je veel te moeilijk!
 
Het is helaas niet alleen bij nieuwe mensen.
We zijn bezig om 8000 dossiers op orde te krijgen, met terugwerkende kracht... Daarbij zit ook een splitsing in werknemers die indienst zijn gekomen voor 2012. Daar zijn de eisen minder streng.
In dit voorbeeld zijn 2 functies gemaakt idd. De daadwerkelijke database kent er 260.
Wat je zegt zou in theorie perfect moeten werken, echter zijn er teveel actoren die denken dat ze boven het beleid staan, waardoor er naderhand nog documenten opgevraagd moeten worden.
Wat we op moeten vragen, moet uit de controlefunctie komen. Het formulier Medewerker toevoegen werkt prima, maar ik moet bestaande records ook nog aan kunnen passen. Nou werkt dat met de huidige opzet prima, alleen is het wat omslachtig daar je niet altijd weet wanneer iemand in dienst is gekomen.

Als ik het goed begrijp bedoel je te zeggen dat ik de tblVerplV12 en tblVerplN12 samen moet voegen met een extra veld met als waarde >=31-12-2011 of <=01-01-2012.
Voeg ik die samen middels UNION? of 1 tabel met dubbele functies, maar andere datum?
 
Ik heb het zelf met 2 toevoegqueries gedaan. Maar inderdaad, dat zou mijn insteek zijn. De aantallen boeien daar verder niet zo bij, zolang je maar de juiste voorwaarden ophaalt bij de juiste personen. Het gaat uiteindelijk om de selectievakjes die je wilt kunnen muteren, en dat werkt nu eenmaal beter met één tabel.
 
ik heb nu 3 tabellen gemaakt
werknemers
eisen
lijst

Waarbij in Eisen de funcites dubbel, maar daarin een voorwaarde.
De functiecode blijft altijd gelijk, ongeacht of die voor of na 2012 indienst komt.

Eerlijk gezegd begin je me een beetje te verliezen.
 
De functiecode moet gelijk zijn als het om dezelfde functie gaat. Alleen veranderen de eisen afhankelijk van de ingangsdatum. En als die in de toekomst weer veranderen, maak je ook weer een nieuw record. Dus volgens mij ben je nu goed bezig :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan