subformulier problemen

Status
Niet open voor verdere reacties.

MichRemi

Gebruiker
Lid geworden
19 feb 2019
Berichten
17
Goeie middag,

ik heb met mijn beperkte access kennis een hoofdformulier gemaakt met daarin meerdere subformulieren.

De bedoeling is dus dat per uniek hoofdformulier er meerdere records in de subformulieren mogelijk zijn en dat lukt nu niet. 1 record is mogelijk, maar bij een 2de record proberen in te vullen krijg ik een foutmelding.

Kan er iemand mij aub helpen?!


Zoja, laat dan aub jullie emailadres achter en dan stuur ik mijn db door. Het lukt immers niet om hier een bijlage aan toe te voegen.

Alvast hartelijk dank!


Groetjes,
 
Niemand zal hier een email adres achterlaten.
Zip je database en plaats het zip bestand hier.
 
Laatst bewerkt:
Bij deze met bijlage
 

Bijlagen

  • Leveranciersevaluatie poging.zip
    234,8 KB · Weergaven: 36
Niemand zal hier een email adres achterlaten.
Dan is mijn naam 'niemand'... want ik doe dat regelmatig. Maar het is altijd handiger om een bestandje te posten. Dat wel. Ik kijk er wel even naar.
 
Hey niemand (formerly known as OctaFish)

Alvast hartelijk dank dat je er eens wil naar kijken.

En alvast sorry voor de ongetwijfeld domme fouten die ik zal gemaakt hebben :)

Groetjes
 
Allereerst nog welkom bij HelpMij :).
Nou, dat was een snelle blik.... Begin eens met de database te normaliseren, want daar is hier totaal geen sprake van. Je zondigt eigenlijk al gelijk tegen de twee hoofdregels.
1. Je hebt in de tabel Leverancier gegevens staan die niets met leveranciergegevens te maken hebben. In een leverancierstabel wil je gegevens zien als [Leverancier ID] (liever zonder spatie, maar dat mag dan nog wel), Naam, Straat Tel etc. Maar zeker geen gegevens als: Vraag1ja, Vraag1nee, Vraag1nvt etc.
2. Daarmee ben ik bij het volgende punt, dat uit twee delen bestaat. Zodra je in een tabel velden ziet als Vraag1ja t/m Vraag24ja, weet je dat de vragen óók niet genormaliseerd zijn. En het tweede punt: een vraag hoort natuurlijk maar één veld te hebben voor een antwoord, en geen 3.

Kortom: ga eerst terug naar de beginselen, en bouw een tabellenstructuur waar je wél mee uit de voeten kan. Je formulier laat trouwens ook geen gegevens of objecten zien. Dat laatste kan ik niet verklaren, het eerste wel: geen voorbeeld data. Dus als je een nieuw voorbeeld post, zet er dan ook wat dummy gegevens in, zodat we niet zelf hoeven te gaan typen. Daar zijn we namelijk niet voor :).
 
Hey,

eerst alvast hartelijk dank voor het snelle antwoord.

Los van al mijn fouten die ik maak (ik wist zelf niet dat het er zoveel waren, maar ja dat krijg je dan van een leek die werkgerelateerd zoiets ineen moet fixen en er niks van kent maar wel haar best doet), zou er eventueel een eenvoudige oplossing zijn om mijn hoofdprobleem (niet meer dan 1 record in subformulieren kunnen invullen) te kunnen oplossen? Los van het normaliseren enzo (want daar heb ik ook al geen kaas van gegeten)


Alvast hartelijk dank!

Groetjes,
 
Je hebt een paar fouten gemaakt, die nog wel te herstellen zijn. Laten we beginnen met de grootste fout, die ook je probleem veroorzaakt. Relaties tussen tabellen leg je (meestal) op basis van een één-op-veel relatie. Daarbij koppel je het sleutelveld uit de één-kant met de veelkant van de gekoppelde tabel. Zeg maar wat jij hebt gedaan (maar dan fout) met de tabel Leveranciers. Een sleutelveld is altijd uniek (anders is het geen sleutel) maar de andere kant (het sleutelgat zeg maar) is dat meestal niet (vandaar de veelkant). Als je voor een sleutelveld een Autonummerveld gebruikt, is dat een handige optie, want autonummers zijn altijd uniek.

Maar wat is jouw fout geweest? Jij hebt in jouw gekoppelde velden weliswaar een sleutelveld gemaakt, maar dat veld is gebaseerd op een Numeriek veld. Wat vele malen erger is: van het koppelveld heb je wél een Autonummerveld gemaakt! En op dat moment houdt het hele verhaal op, want je kunt dan nooit meer een één-op-veel relatie maken, omdat dat koppelveld unieke waarde bevat. Dat niet alleen: de kans dat het koppelveld dezelfde waarde bevat als het leverancierveld, is ook behoorlijk klein! Kortom: je hebt weliswaar de juiste dingen gedaan (een numeriek veld om te koppelen, en een sleutelveld), maar dus precies verkeerd om!

De oplossing is dus simpel: verwijder alle koppelingen tussen de tabellen, open de koppeltabellen in de Design modus, zet het Autonummerveld [Leverancier ID] om naar een Numeriek veld, sluit de tabel en sla hem op, open hem opnieuw in de design modus en zet nu het Sleutelveld om naar een Autonummerveld. De laatste stap: open het Relaties venster opnieuw, en leg alle relaties opnieuw. Maar nu zonder die andere fout die je gemaakt hebt. Leg Relaties altijd op basis van een Inner Join. Gewoon de standaardoptie dus. Blijf voorlopig even van de knop Jointype af, tenzij je weet wat die doet! Ergens overigens wel knap; de meeste beginnende Access gebruikers weten niet eens dat die knop bestaat, laat staan dat ze weten wat ze aan moeten klikken. Nou heb ik bij jou ook niet echt dat je daar een goed beeld bij hebt :). Maar voorlopig even afblijven dus.

Als je alle tabellen en relaties hebt aangepast, zal je formulier prima werken. Althans: wat je vraag betreft. Dan zie ik nog voldoende problemen om je nog wel een week uit de kroeg en van de straat te houden :D.
 
Euhm …


ik DENK dat ik alle stappen heb uitgevoerd. En nu open ik mijn formulier en in ontwerpweergave zie ik alle Velden nog staan, maar in formulierweergave zie ik gewoon een wit vlak zonder enig veld :shocked:

Kan je mij vertellen wat ik fout heb gedaan of moet ik de DB nog eens opnieuw zippen?

Alvast bedankt!

Groetjes,
 
Ik zou 'm opnieuw in de draad zetten, dan zien we wat je gedaan hebt. De ontwerpweergave zegt niets over de inhoud die je uiteindelijk ziet in de Formulierweergave. Die is gebaseerd op de inhoud van je gegevensbron. Als je in je formulier niks ziet, maar in de query die je gebruikt zie je ze wél, dan is er iets fout gegaan bij de instellingen van je formulier. Zie je in de query ook niets, dan klopt het dat je in je formulier niks ziet, want dan is er niks om te laten zien.
 
Voila, bij deze
 

Bijlagen

  • Leveranciersevaluatie p2.zip
    207,5 KB · Weergaven: 26
Ik snap niet waarom je een query gebruikt voor het formulier. Ja, ik zie dat je zo'n beetje alle tabellen er aan hebt hangen, maar volgens mij heb je voor alle subformulieren al dezelfde tabellen gebruikt. Dus je hoeft je formulier alleen maar op de tabel [Leveranciers] te baseren. Doe je dat op die manier, dan zie je dus wél je formulier.

Daarmee kun je dan gelijk aan de slag om het volgende probleem te tackelen: je vragenlijst. Die is bepaald niet dynamisch (de vraag "Indien ja, is het autocontrolesysteem gevalideerd?" zou alleen zichtbaar mogen zijn als je daadwerkelijk de vraag "Is er een autocontrolesysteem aanwezig?" met Ja beantwoordt) maar is een gegarandeerd succes als het gaat om het verkrijgen van totaal zinloze response. Je hebt (en dat gaat dus al fout in de tabel) voor elk antwoord een apart veld gemaakt, en dat is dus zo'n beetje het slechtste wat je kan verzinnen! Nog even afgezien van het feit dat vragenlijsten niets te maken hebben met Leveranciergegevens, en de vragenlijst dus in een eigen tabel thuis hoort, is het laatste wat je moet doen voor elk antwoord een eigen veld bedenken. Al was het maar omdat je de vragen al op voorhand met een factor 3 groter maakt. Maar wat veel erger is: nu kun je straffeloos op de vraag "Is er een autocontrolesysteem aanwezig?" met Ja, Nee en NVT antwoorden! En wie gaat dan bepalen wat de klant bedoelt?

Daarnaast is de optie Selectievakjes bedoeld voor vragen met meerkeuze antwoorden. Nou ja, dan heb je het eigenlijk t\och goed gedaan :D. Maar ga eens aan de slag met het principe dat één vraag één antwoord oplevert. Daarmee kun je dus 66% van je velden weggooien, en dat ruimt lekker op :). Wil je uit meerdere opties laten kiezen, dan gebruik je daarvoor een groepsvak met 3 optierondjes. Gebruik voor het antwoord een numeriek veld 9zo klein mogelijk, Byte bijvoorbeeld) en geef de opties een getalwaarde, bijvoorbeeld Ja=1; Nee=2, NVT=3. Dat groepsvak is gekoppeld aan het veld [Vraag], en daarmee sla je dus in dat veld een 1, 2 of 3 op. En dat zie je ook als zodanig weer terug op het formulier als je de vragenlijst weer opent.

Maar ik zou daar dus altijd een aparte tabel voor maken, al was het maar omdat je de optie open wilt houden om op een later tijdstip bijvoorbeeld dezelfde vragenlijst nóg een keer te laten invullen, of wellicht in de toekomst een ándere vragenlijst te kunnen sturen. In beide gevallen ben je nu de sjaak!
 
Hey,

stukje per beetje probeer ik al mijn fouten op te lossen. Het probleem van een apart veld per antwoord, heb ik nog niet aangepakt, maar ik heb wel GEPROBEERD om de vragenlijst in een aparte subtabel/subformulier onder te brengen.

En nu krijg ik weer foutmeldingen … :-s Ik kan in mijn formulier niets invullen en het gaat over een probleem met "gerelateerde records".

Kan iemand in babytaal uitleggen wat ik weer heb fout gedaan

Alvast hartelijk dank voor het engelengeduld :-D

Groetjes,
 

Bijlagen

  • Leveranciersevaluatie poging opnieuw.zip
    206,4 KB · Weergaven: 25
Ik was al een beetje aan het klooien geslagen met je vorige voorbeeld, dus ik hoop dat je het niet erg vind dat ik daar op doorborduur :).
Ik heb je formulier opnieuw ingedeeld met een tabbladen object, zodat je veel meer overzicht hebt op je hoofdformulier. Daarnaast heb ik de vragenlijst gedeeltelijk omgezet. D.w.z. dat alle vragen al waren omgebouwd naar het één-vraag-één-antwoord principe. Op je formulier heb ik daar ook al gedeeltelijk op ingespeeld door bij de eerste 10 vragen een groepsvak te maken waarin je de antwoorden neerzet. Het formulier voor de certificaten heb ik er afgegooid, omdat de antwoorden daarvan in een andere tabel staan, en dat maakt het wat ingewikkelder. Daarom opent vraag 5 nu een los formulier waarin je het certificaat kunt toevoegen als je op Ja klikt. Daar zit verder geen logica nog achter, dus als je dat uittest en de drie antwoorden een paar keer probeert, zul je elke keer als je op Ja klikt, een nieuw certificaat moeten toevoegen :). Maar het gaat er om dat je een beetje een idee krijgt hoe je het zou kunnen aanpakken.
 

Bijlagen

  • Leveranciersevaluatie p2.zip
    237,7 KB · Weergaven: 29
Kan je mij uitleggen hoe ik mijn fout aanpas (dus hoe ik die groepsvakken kan maken)? Dan prober ik het bij de resterende vragen.

En als volgende zou ik een rapport willen maken, waar de overgrote meerderheid van het formulier moet op komen te staan. Enig voorstel hoe ik hier het best aan begin?

Alvast bedankt!
 
Een groepsvak is best simpel te maken; je hebt daar een knop + wizard voor. In de wizard geef je aan welke antwoorden je wilt hebben, gevolgd door welke waarden je wilt opslaan (ik gebruik dus doorgaans getallen) en hoe de opties er uit moeten zien. En dus ook in welk veld je de waarden wilt opslaan (een vraagveld dus). Die wizard wijst zich kortom vanzelf. Vervolgens maak je het groepsvak op naar eigen smaak (ik zet de opties graag naast elkaar) en daarna kun je lui zijn: je kopieert het groepsvak, plakt het en hoeft dan alleen het veld aan te passen in de eigenschappen. Want anders sla je alle antwoorden op in dezelfde vraag :).
 
oke dank je! ik ga er mee aan de slag!

En heb je ook al een antwoord op mijn vraag ivm de rapportjes?

Alvast bedankt!
 
Goeie middag,

ik heb ondertussen nog wat aanpassingen doorgevoerd en gestart met het rapport.

Nu komt al de eerste vraag: Bij het maken van het rapport start ik met de contactgegevens. Hier normaal geen probleem want ik print maar 1 rapport af per leverancier. Maar 1 leverancier kan bijvoorbeeld meerdere erkenningen hebben. Hoe kan ik het rapport opmaken zodat van 1 leverancier al de erkenningen worden weergegeven?

Alvast bedankt!
 

Bijlagen

  • Leveranciersevaluatie.zip
    377,1 KB · Weergaven: 27
Rapporten zijn simpel en ingewikkeld tegelijk; simpel omdat je met de wizard prima kunt doen wat je wilt (rapporten op basis van Leverancier met gegroepeerde meervoudige gegevens) maar het zelf maken is dan best wel lastig. En de rapporten die je met de wizard maakt, zien er doorgaans gruwelijk uit, dus je bent een hoop tijd kwijt met het aanpassen van de opmaak. Al heb je dan wel een nette basis om mee te beginnen. En om te kijken wat de mogelijkheden zijn, is het natuurlijk prima.

Om te beginnen: een rapport bevat secties die de gegroepeerde gegevens bevatten. Je rapport baseer je op de Leveranciers gegevens als hoofdgroep. Je maakt dus eerst een query met daarin de leveranciers gegevens, en de erkenningen, en van de erkenningen maak je dan een aparte groep. In de query zie je de leveranciersgegevens steeds herhaald worden, maar dat maakt voor het rapport niet uit want de leverancier staat in de hoofdgroep.
 
OctaFish, hier ga je iets te snel voor mij… vergeet niet dat dit het allereerste rapport is dat ik ga maken.

Zou je me babystapje per keer willen begeleiden hierin?

Alvast hartelijk dank voor al jouw tijd en hulp die je hierin al gestoken hebt!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan