Formulier op basis van kruistabel?

Status
Niet open voor verdere reacties.

maud138

Gebruiker
Lid geworden
12 mei 2006
Berichten
36
Ik heb een tabel met tarieven: klantid-jaartal-tarief.

Ik wil graag een (doorlopend) formulier maken waarop in de eerste kolom de klant is te zien, dan het tarief van het jaar 2012, dan het tarief van het jaar 2013 en dan het tarief voor 2014 dat ingevuld moet worden.
Hoe doe ik dat?

Een formulier op basis van een kruistabel (tarieven, klantgegevens) geeft mij het overzicht dat ik wil, maar dan kan ik geen gegevens voor 2014 invoeren.
 
Je geeft zelf zal het antwoord: in een kruistabel kun je geen gegevens invoeren. Dat kan in geen enkele query van het type Totalen. En als het in de query niet kan, doet een formulier het uiteraard ook niet. Zodra je in je brontabel één record voor 2014 toevoegt, staat dat ook in de kruistabel, want die is dynamisch. Een rapport of formulier is dat niet, dus dat zul je handmatig moeten aanpassen.
Of de oplossing uit de Access cursus gebruiken, die past het formulier wèl dynamisch aan.
 
Je kunt uiteraard wel een doorlopend formulier maken voor de tarieven, dat je op een enkelvoudig formulier Klanten zet. Dan zie je per klant de ingevoerde tariefjaren, en kun je heel simpel in dat doorlopend formulier een nieuw tarief toevoegen.
 
Dank Michel,

Waar kan ik die oplossing in de Access cursus vinden?
Een doorlopend formulier op een enkelvoudig formulier is voor mij niet de oplossing. Het gaat erom dat ik alle gegevens op het scherm zie van alle klanten en dat ik weinig handelingen hoef uit te voeren om nieuwe tarieven in te voeren.
Zoals bv in Excel waar ik per regel een klant zou kunnen neerzetten en in de kolommen de jaartallen.
Is er misschien een heel ander soort oplossing?
 
Bekijk Hoofdstuk 13 van de cursus maar eens; daar wordt de techniek uitgelegd. Weliswaar met een rapport als uitgangspunt, maar op een formulier werkt het op (bijna) dezelfde manier.
Jouw 'probleem' wordt gedeeltelijk veroorzaakt doordat je wellicht te weinig weet hebt van hoe databases werken.
Zoals bv in Excel waar ik per regel een klant zou kunnen neerzetten en in de kolommen de jaartallen.
Dat kan in Excel, waar gegevens geen onderlinge relaties hebben; cel A3 en cel B43 kun je prima na elkaar invullen terwijl ze in je systeem toch een datablok vormen. Access werkt (gelukkig) niet zo. Daar moet je denken vanuit bij elkaar horende gegevensreeksen. Een klant kan dan meerdere tarieven hebben, waarbij je de tabel Klanten aan de tabel Klanttarieven koppelt op basis van KlantID. Je ziet in het subformulier Klanttarieven dan de bij een klant horende tariefrecords. Of je kunt een query maken die alle gegevens laat zien zoals in Excel, alleen kun je in Excel een kolom 2014 toevoegen en gelijk gaan invoeren, terwijl je in Access die veldwaarde (=record) eerst zult moeten toevoegen aan de tabel KlantTarieven. Als dat record eenmaal bestaat, kun je de gegevens wel weer sequentieel kunnen toevoegen, maar dus niet in de weergave die je in Excel gewend bent.
't Is een ander programma, met een andere werkwijze. Die niet meer werk hoeft op te leveren als in Excel, maar dat wel meer gestructureerd moet worden aangepakt. Uiteindelijk zul je er niet meer tijd mee kwijt zijn dan in Excel schat ik. 80 getallen inkloppen blijft 80 getallen inkloppen.
 
Het Excel-voorbeeld was om uit te leggen hoe ik het voor ogen zie. Ik begrijp dat een database anders werkt. Ik ben ervan overtuigd dat het moet kunnen, misschien met een andere tabelindelingen of met Dlookup....
Ik puzzel nog even door.
 
Ik ben ervan overtuigd dat het moet kunnen, misschien met een andere tabelindelingen of met Dlookup.... Ik puzzel nog even door.
Ben heel benieuwd wat je gaat uitvinden, want je wilt iets dat echt niet kan. En DLookup gaat je daar ook niet bij helpen.
Zoals ik al zei: er is best het e.e.a. Te automatiseren, maar vergeet elke vergelijking met Excel.
 
Even voor de mensen die hierop zoeken. Ik heb het als volgt opgelost:

Ik heb een tabel met daarin klantid, jaartal, tarief.
Met een toevoegquery maak ik voor alle klanten een nieuw record aan in deze tabel met klantid, 2014 , 0,00 euro
Vervolgens heb ik een doorlopend formulier gemaakt gebaseerd op een query die alleen de records van 2014 uit de tabel haalt.
In het doorlopend formulier heb ik besturingselementen gemaakt die de tarieven per klant per jaar opzoeken met DLookup.
Het formulier ziet er nu als volgt uit:
Klant - tarief jaar 2012 - tarief jaar 2013 - tarief jaar 2014
En alleen tarief jaar 2014 kan gewijzigd worden.
Werkt perfect en ik heb het overzicht op mijn scherm zoals ik wilde.
 
Zoals ik het lees, heb je DLookup nog steeds niet nodig; je kunt je doorlopend formulier baseren op een query waarin alle tarieven van vorige jaren netjes in een eigen veld worden gezet. Die query gebruik je als basis voor je formulier. Het lege veld met het komende jaar vul je dan in op de manier zoals je dat nu ook hebt ingericht. De toevoegquery kun je dan ook vanaf dat formulier afschieten. Zorg er overigens wel voor dat je de records maar één keer kunt toevoegen, anders heb je nog een probleem :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan