Waarden uit verschillende tabellen samenvoegen

Status
Niet open voor verdere reacties.

TechMo

Gebruiker
Lid geworden
18 jan 2019
Berichten
8
Ik heb twee tabellen die aan elkaar gerelateerd zijn. Nu wil ik gecombineerde gegevens van de ene tabel in de andere tabel opslaan. Op tabelniveau lukt dat niet m.b.v. type "Berekend". Ik heb een formulier aangemaakt waarin ik wel de gewenste waarde in het betreffende veld zie, maar deze wordt niet aan het record toegevoegd in de tabel.

In de bijlage heb ik het probleem nader toegelicht en het betreffende bestand toegevoegd.
 

Bijlagen

  • MSAccess vraag.pdf
    197,3 KB · Weergaven: 28
  • TestBase.zip
    70,3 KB · Weergaven: 23
Ik heb eigenlijk maar één vraag: waarom zou je dit willen?
 
In dit voorbeeld lijkt het wellicht overbodig, maar in de werkelijke situatie gaat het om een tabel die zijn gegevens via sleutels uit andere (hulp)tabellen haalt. De combinatie van die gegevens vormt een naam die aan bepaalde richtlijnen voldoet. De naam moet in die tabel worden opgeslagen omdat deze wordt gebruikt in de relatie naar een andere tabel.
 
Laatst bewerkt door een moderator:
Nog steeds snap ik er niks van; gekoppelde tabellen gaat er natuurlijk in als zoete koek, en gegevens samenstellen uit verschillende velden middels een query ook, en die gegevens dan tonen op rapporten en formulieren: allemaal prima. Het opslaan van die formules? Nooit gedaan, nooit nodig gehad en ook absoluut niet van plan om dat ooit nodig te hebben. Want dat is de truc van een correct gebouwde database: dat je alleen de sleutel verwijzingen naar de hoofdtabel opslaat, en de gewenste combinaties alleen toont. Opslaan daarvan is per definitie altijd dataredundantie, en dus absoluut niet nodig.
 
Bedankt voor je reactie, ik ga nog eens goed naar de huidige oplossing kijken om te bepalen wat er mis gaat als ik de combinatie niet opsla.
 
Ik kom hier toch nog even op terug: de waarden die ik ophaal combineer ik tot een nieuwe waarde die wel degelijk moet worden opgeslagen en niet steeds opnieuw moet worden berekend. Als de gerelateerde waarden wijzigen, wil dit niet zeggen dat de eerder berekende waarde moet komen te vervallen. Hoe kan ik deze waarde, dit op het formulier zichtbaar is, toevoegen aan de tabel?
 
Als de gerelateerde waarden wijzigen, wil dit niet zeggen dat de eerder berekende waarde moet komen te vervallen.
Dat is inderdaad een reden om het resultaat wél op te slaan. Omdat we de db niet hebben, is dat ook lastig om te zien natuurlijk. Een andere reden om waarden redundatief op te slaan is bijvoorbeeld bij financiële transacties waarbij je met fluctuerende prijzen te maken hebt. Dan wil je de prijs vastleggen die geldt op het moment van de transactie en niet de prijs laten zien uit de tabel. Al is daar ook wel weer wat op te vinden.

Maar goed, je vraag is dan toch wel simpel op te lossen. Sowieso moet het veld waarin het resultaat zijn dus aan het tabelveld zijn gekoppeld, anders doet-ie het nooit. Dat betekent dus dat je de berekening op een andere plek moet doen. Meestal zet je hem dan op een keuzelijst, bij de gebeurtenis <Bij Klikken>. Iets als: Me.Huiscode = Me.Postcode & "-" & Me.Huisnummer.
 
Voorbeeld toegevoegd

Ik ben alweer een stapje verder ... het lukt nog niet helemaal. Ik heb een voorbeeld bijgesloten dat een foutmelding geeft. Ik neem aan dat ik de Besturingselementbron van het DB veld niet mag wijzigen? Dat heb ik als eens geprobeerd met als resultaat dat het gegeven wel goed op het scherm werd getoond maar niet werd opgeslagen.
 

Bijlagen

  • TestBase-2.zip
    39,7 KB · Weergaven: 28
  • TestBase-foutmelding.pdf
    43,4 KB · Weergaven: 34
Ik snap niet helemaal wat je aan het doen bent, maar je moet een gebeurtenis maken op de <Bij Klikken> van een Keuzelijst, het kan nooit plaatsvinden op een klik op een tekstvak. En daarnaast snap ik niet wat je nu precies wilt vullen. En de code moet dus een VBA gebeurtenis zijn (of macro). Je kunt nooit een formule rechtstreeks in de regel plakken.
 
Bedankt voor de tips. Ik snap nu het principe maar het lukt mij nog niet om de gecombineerde waarde uit de selectie aan het juiste besturingselement (veld in de tabel) toe te wijzen, zowel met een macro als met code. Het is wenselijk om dit met een macro op te lossen, als dit mij niet lukt dan ga ik op zoek naar een andere oplossing.
 
Laatst bewerkt door een moderator:
Het is wenselijk om dit met een macro op te lossen
Waarom? Als je érgens vanaf moet blijven, dan wel met een grote boog omheen moet lopen, is dat wel macro’s. Daar kan ik je ook niet bij helpen, want ik gruwel al bij de gedachte om de macro recorder te moeten openen :).
 
Ik had begrepen dat macro's wenselijk waren i.v.m. veiligheid. Het lukt mij overigens nog niet om een macro te koppelen. Een stukje code als Huiscode = Postcode +"-"+Huisnummer koppelen aan een keuze lijst lijkt mij eenvoudiger maar werkt nog steeds niet :( Ik geef niet op ;-)
 
Dat hangt er maar vanaf wat je aan die keuzelijst hebt gehangen. Als dat een lijst met postcodes is, krijg je zoiets:
Code:
Private Sub cboPostcode_Click()
     Me.Huiscode = Me.cboPostcode.Value & "-" & Me.Huisnummer
End Sub
 
Het werkt! Dank je wel, OctaFish :) Er stond een beveiligingsblokkade op het uitvoeren van VBA macro's. Na het toestaan hiervan werkte het.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan