Wijzigingsquery voor een kolom met meervoudige selectie

Status
Niet open voor verdere reacties.

KarelR

Gebruiker
Lid geworden
4 sep 2014
Berichten
11
Hallo, ik ben beginner in Acces 2010. Nu heb ik een tabel gemaakt bestaande uit 6 kolommen.
De laatste kolom genaamd "Cycle naam" heeft een meervoudige selectie mogelijkheid die mbv vinkje geselcteerd kunnen worden.
Graag zou ik een wijzigings query hebben waarmee ik een de selectie van aantal velden in die kolom aan kan passen. Selectie op basis van het id veld.
Kan iemand mij daar bij helpen? De gecomprimeerde database voeg ik bij.

met vriendelijke groet, Karel.
 

Bijlagen

Wat wil je precies? Want ik snap je vraag niet helemaal.
 
Mijn bedoeling is als volgt: De laatste kolom bevat een keuze veld waarin meerdere keuzes gemaakt kunnen worden dmv aanvinken.
De velden in deze kolom zou ik met een wijzigings query aan willen passen. Maar ik ben er inmiddels achter dat het niet mogelijk is meerkeuzevelden met behulp van een wijzigingsquery aan te passen. Helaas want ik moet er duizenden doen. ):
 
Laatst bewerkt:
Dan weet je meer als ik, maar dat komt ongetwijfeld omdat ik nog steeds niet snap wat je bedoelt :). Al zal het zeker niet makkelijk zijn, en al helemaal niet als je een selectie wilt van records.
 
nieuwe poging om vraag te verduidelijken

Dan wil ik proberen met een plaatje duidelijk te maken wat de bedoeling is.
In de bijlage zit een printscreen.
In de laatste kolom staat een meerkeuze invoerveld open.
Voor vele invoervelden moeten dus steeds vinkjes aangezet worden, dat is een hele klus om dat stuk voor stuk te doen.
 

Bijlagen

  • Voorbeeld.JPG
    Voorbeeld.JPG
    59,6 KB · Weergaven: 45
Ik snap precies wat je bedoelt :). Maar ik neem niet aan dat je het veld wilt vullen met alle waarden, om maar wat te noemen.
 
Nee, klopt helemaal. Althans niet met de Query, feitelijk is het zelfs zo dat er steeds met de Query maar 1 aangevinkt hoeft te worden.
Het zal pas bij nieuwe toekomstige invoer, wanneer het programma helemaal af is dus, noodzakelijk zijn om tot maximaal 8 stuks aan te vinken.
 
Je kunt een aantal acties uitvoeren op MultiValue velden, zoals: alle records bijwerken, in alle records een waarde toevoegen, een selectie bijwerken of een in selectie een waarde toevoegen. Net wat je wilt. Eigenlijk dus net zoals je bij gewone velden zou doen. Alleen moet je wel de juiste techniek gebruiken. Dus je stelling uit berichtje #3

Maar ik ben er inmiddels achter dat het niet mogelijk is meerkeuzevelden met behulp van een wijzigingsquery aan te passen.
is op zijn zachts gezegd niet helemaal juist :). Maar je gaf zelf al aan dat je een beginner bent, en daar zullen we deze boude uitspraak maar aan wijten ;). Ik geef een paar voorbeeldjes:

Een extra waarde (2) toevoegen aan alle records in de tabel:
Code:
INSERT INTO Cycli ( [Cycle Naam].[Value] )
VALUES (2)

Een waarde (3) toevoegen aan de tabel voor alle records waarvan het veld [Bodem/Top] de waarde "Top" heeft.
Code:
INSERT INTO Cycli ( [Cycle Naam].[Value] )
SELECT 3 AS Expr1
FROM Cycli
WHERE [Bodem/Top]="Top";

In alle records de waarde "3" in het veld [Cycle Naam] veranderen in "4":
Code:
UPDATE Cycli SET [Cycle Naam].[Value] = 4
WHERE [Cycle Naam].Value=3

Kortom: wil je nieuwe waarden toevoegen, dan gebruik je INSERT INSERT INTO, wil je een waarde veranderen dan gebruik je UPDATE.
 
Top! Het kan dus wel. Ontzettend bedankt, ik kan weer verder, en zal niet meer zo snel de conclusie trekken dat iets niet kan. :)
 
Tenzij je erbij vermeld dat jij het niet kan :).
Kleine uitleg is wellicht op zijn plaats, want het is wel een beetje vreemd zoals het werkt, en ik snap ook wel dat je in eerste instantie dacht dat het niet zou kunnen.

Wat is het geval? Een 'normaal' veld bevat één waarde, en is integraal onderdeel van een record. Als je een tabel Klanten hebt met daarin een PersoonID, Naam, Adres en Woonplaats en je vult bij iedereen alles in behalve de Woonplaats, dan kun je met een bijwerkquery simpel het veld Woonplaats vullen. Een MultiValue veld werkt echter heel anders, zo'n veld lijkt wel alles in één veld op te slaan, gescheiden door komma's, maar dat is dus niet zo. (gelukkig maar, want anders zij de integriteit van de db naar de klootjes zijn). Access gebruikt interne tabellen voor MultiValue velden, waarin alles keurig netjes genormaliseerd is opgeslagen. Dus als je een extra waarde wilt toevoegen, dan moet die met een Toevoegquery worden toegevoegd aan de interne tabel. Vandaar dat je met INSERT INTO moet werken. Is een waarde eenmaal in die interne tabel opgeslagen, dan kun je het veld (de waarde) weer bijwerken met een UPDATE query.
Kortom: een multivalue veld is eigenlijk een onzichtbare tabel, die met een één-op-veel relatie is gekoppeld aan de werktabel. En net als met een gewone één-op-veel relatie moet je, als je meer gekoppelde records wilt hebben, daar een toevoegquery voor gebruiken, en wil je bijwerken een Bijwerkquery.

Hoop dat je nu wat meer begrip hebt van de oorzaak :).
 
Dat is zeker een verhelderende uitleg, dank je!
Bij het invoeren van de code loop ik nog wel tegen een probleem aan, ik werk namelijk met de wizard.
Had ik aan moeten geven bij mijn vraagstelling uiteraard. :)

Plaatje van de query zoals het er nu uitziet doe ik erbij.
Zou je misschien nog kunnen aangeven hoe ik de code hier aan moet passen?
Ik wil de lege records in de kolom Cycle naam de Cycle Naam.Value 3 geven.
Heb al verschillende dingen geprobeerd uiteraard maar tot nu toe krijg ik foutmeldingen. :)
 

Bijlagen

  • Query.JPG
    Query.JPG
    34,5 KB · Weergaven: 43
Laatst bewerkt:
Ik haal de code meestal gelijk uit de SQL view, al maak ik de meeste queries ook gewoon in het ontwerp raster. Dus als je onder op de knop <Weergave> klikt, kun je de SQL weergave openen en daarin de SQL plakken of aanpassen. De wizard voor het maken van een query heb ik al in geen 20 jaar meer gebruikt :). Hooguit als ik lui ben voor een query Ontbrekende records. Maar een gewone selectiequery kun je veel beter en sneller maken door zelf in het ontwerpvenster de tabellen en velden op te pakken.
 
Ik was al een beetje begonnen in die modus idd.
Met de formule die je me gaf: UPDATE Cycli SET [Cycle Naam].[Value] =3
WHERE [Cycle Naam].Value =4
lukt het me idd om veld waardes te wijzigen.
Maar om velden die nog geen waarde hebben een waarde te geven lukt me nog niet.

Dan gebruik ik de code:
INSERT INTO Cycli ( [Cycle Naam].[Value] )
SELECT 3 AS Expr1
FROM Cycli
WHERE [Cycle Naam].[Value]=NULL;

dan zegt Acces dat hij 0 rijen gaat toevoegen
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan