Automatisch gevuld veld in hoofdformulier weergeven in query

Status
Niet open voor verdere reacties.

lisannethreels

Gebruiker
Lid geworden
14 apr 2020
Berichten
40
Hallo allemaal,

Ik heb een hoofdformulier + subformulier. In het subformulier wordt alle machine informatie ingevuld voor projecten (zie bijlage). In het subformulier is al een extra tekstbox toegevoegd met Totaal Aantal (formule =Sum([Machine_Aantal]). Dit veld is ook op het hoofdformulier geplaatst (formule =[Forms]![Form Project Details]![tblMachines].[Form]![Text80] en wordt adhv het subformulier automatisch gevuld. Nu wil ik graag het veld Tot. aantal machines in een query zetten maar als ik het veld toevoeg in een query is het leeg, terwijl het veld in het formulier wel gevuld is. Ook wordt is het veld leeg in de tabel. Hoe kan dit?Uitleg 2.PNG
 
Je veld op een formulier is een ongebonden veld. Om dat in de tabel op te vullen moet je dat aan het desbetreffende tabelveld koppelen in je formulier (control source = tabelveld). Natuurlijk verlies je dan de berekening in dat veld. Gebruik de afterupdate event van het vak Machine_aantal om via VBA of een macro het totaal veld in je tabel de som te maken en het totaalveld in de tabel aan te passen.

Beter dan deze berekening steeds via VBA te maken is het totaalveld uit je tabel te verwijderen en een totalen query te maken die de som maakt. Je kan dan via een dlookup of een koppeling naar deze query (opgelet, want koppelingen van een tabel en een totalenquery resulteren in een niet-updateble recordset) het totaalveld invullen en dan hoef je alleen een refresh/requery via een macro of VBA te doen telkens je een detailrecord hebt aangepast.
 
Hi Noella,

Bedankt voor je tips. Echter, ik loop tegen nog een probleem aan. In de query die ik nu heb gemaakt wordt het totaal aantal machines niet in één rij getoond maar in een aantal rijen en is het veld dus leeg (zie afbeelding). Nu is het aantal rijen gelijk aan het aantal soorten machines, dus voor LUMC waren er twee soorten machines nodig. Kan ik het totaal aantal machines op een rij laten zien?Query.PNG
 
Van welk veld heb je het totaal gemaakt? Welke waarden staan erin als je geen totaal maakt? Kan je misschien de SQL van de query eens laten zien?
 
Hi Noella,
Ik heb in de query en bijbehorende tabel alleen de kolom Machine_Aantal_Totaal toegevoegd, want ik ging er van uit dat de waarde uit het formulier automatisch te staan komt in de query, aangezien deze in het formulier ook automatisch wordt berekend/gevuld. Dit is echter niet het geval.
SQL.PNG
 
want ik ging er van uit dat de waarde uit het formulier automatisch te staan komt in de query, aangezien deze in het formulier ook automatisch wordt berekend/gevuld.
Een query werkt anders als een formulier.
 
Een veld in een tabel kan alleen ingevuld worden via een formulier als:
* de control source naar dat veld verwijst
* het veld via VBA/macro ingevuld wordt.

Wat je moet doen is een totalenquery maken op de tabel tblMachines (ik leid uit je query af dat 1 project verschillende machines heeft): per projectID tel je het aantal machines met de Count functie: tel hiervoor het ID veld, dat is altijd ingevuld.
Ik verwonder me wel een beetje dat je machines onmiddellijk aan projecten linkt. Het klassieke schema is:

ProjectMachines.JPG
 
Hi Noella,

Ik wist niet dat je een derde tabel moest maken. Ik ga nu eerst proberen een totale query te maken van de machine tabel. Het klopt inderdaad wat jij zegt, een project kan meerdere machines hebben.
 
Een veld in een tabel kan alleen ingevuld worden via een formulier als:
* de control source naar dat veld verwijst
* het veld via VBA/macro ingevuld wordt.

Wat je moet doen is een totalenquery maken op de tabel tblMachines (ik leid uit je query af dat 1 project verschillende machines heeft): per projectID tel je het aantal machines met de Count functie: tel hiervoor het ID veld, dat is altijd ingevuld.
Ik verwonder me wel een beetje dat je machines onmiddellijk aan projecten linkt. Het klassieke schema is:

Bekijk bijlage 348703


Wanneer je het klassieke schema overneemt, maak je dan nog steeds een totalenquery op de tblMachines of moet deze dan op tblprojectmachines gemaakt worden?
 
Zullen we eens terug naar de basis gaan?
Nu wil ik graag het veld Tot. aantal machines in een query zetten maar als ik het veld toevoeg in een query is het leeg, terwijl het veld in het formulier wel gevuld is.
De vraag is namelijk niet hoe je dat doet, maar waarom? Ik zie de noodzaak namelijk niet. Je hébt het veld al in je hoofdformulier (in je subformulier bereken je het verkeerd, maar dit terzijde). En in een rapport kun je het totaal op dezelfde manier berekenen. Dus waarom moet het ook nog eens in een query?
 
Ik kan me best voorstellen dat je, bv. voor een export naar excel, de berekening in een query wil. Als je een totalenquery maakt als basis voor een rapport is dit ook sneller dan de berekening op het rapport te maken.
In het klassieke schema tel je de machines tblProjectenMachines. Je groepeert op de velden pmMachine en pmProject, en je telt het aantal keer dat pmID voorkomt. Omdat je niet alleen ID's wil zien zal je waarschijnlijk ook de tabellen Projecten en machines in je query meenemen zodat je de project- en machinenaam kan tonen in het resultaat.
 
Zullen we eens terug naar de basis gaan?

De vraag is namelijk niet hoe je dat doet, maar waarom? Ik zie de noodzaak namelijk niet. Je hébt het veld al in je hoofdformulier (in je subformulier bereken je het verkeerd, maar dit terzijde). En in een rapport kun je het totaal op dezelfde manier berekenen. Dus waarom moet het ook nog eens in een query?

Ik wil het totaal aantal machines berekend hebben in 1 rij om het te exporteren naar Excel (om een planning te maken) In Excel wil ik per project zien hoeveel machines er voor dat project nodig zijn in een rij en niet meerdere rijen. Nu zie ik in mijn query in Access meerdere rijen met hetzelfde projectID nr met het aantal soorten machines. Dus het aantal rijen met hetzelfde projectID nr is afhankelijk van het aantal verschillende soorten machinetypen.

Daarnaast wordt het totaal aantal machines in het formulier niet opgeslagen en is deze alleen zichtbaar op het formulier.
 
En zo'n berekening kun je vermoedelijk veel mooier in Excel maken, mocht je dat willen. Het kán uiteraard ook in Access, maar aangezien je in Excel ook nabewerking doet, kan de berekening daar uiteraard ook gedaan worden. Vandaar mijn vraag; kies het gereedschap dat bij de klus past :).
 
Oke bedankt voor de tip OctaFish.
Ik heb nog een nieuwe vraag: weet u misschien waarom mijn query niet meer werkt? Ik heb er twee velden aan toegevoegd van een andere tabel en als ik hem run krijg is geen projecten meer te zien. Ik heb een printscreen toegevoegd als uitleg. (Wanneer ik de relatie tussen beide tabellen verwijder werkt de query wel maar geen idee of dat de juiste oplossing is)
Bekijk bijlage Vraag helpmij.docx
 
De relatie lijkt goed te zijn (één-op-veel) dus daar kan het eigenlijk niet aan liggen. Bedoel je dat je helemaal geen output meer krijgt? Dat kan natuurlijk als je criteria met elkaar strijdig zijn bijvoorbeeld. De relatielijn verwijderen is onzinnig in dit geval, omdat je daarmee een Cartesisch Product creëert waarbij alle records uit de tabel tblProjects worden gecombineerd met alle records uit de tabel tblMachines. Of ze een relatie hebben of niet. Dus als je uit tabelA 40 records zou zien, en uit tabelB 20, zou je in totaal 800 records te zien krijgen. Dus de relatie moet je absoluut laten staan. Om te kijken of je criteriums niet in de weg zitten, zou ik dus de relaties laten staan, en de criteriums verwijderen. Dan krijg je de meest zuivere output.
 
En dan horen we uiteraard graag of dat wat oplost :).
 
Hi Octafish,

Het is gelukt. Geen idee wat het probleem veroorzaakte maar fijn dat het is opgelost. Nogmaals bedankt.
 
Wat was de oorzaak/oplossing?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan