Access 2016 Formulieren koppelen

Status
Niet open voor verdere reacties.
Maar na wat knip- en plakwerk, hier dan een uitwerking. Ik heb nog wat cosmetische zaken aangepast maar die doen aan de functionaliteit verder niets af.
 

Bijlagen

  • Proef.zip
    30,8 KB · Weergaven: 25
Access formulieren koppelen

Beste Octafish. Sorry dat het even duurde en veel dank voor je werk. Ik heb je antwoord met bijlage niet bijtijds opgemerkt en dacht dat je nog je laptop moest herstellen. Maar zo te zien is dat gelukt. Je voorbeeld heb ik geschouwd en op zich werkt het voor reeds bestaand records in tabel Pand. Dat is op zich al een goed begin echter, zodra ik in het formulier Pand een nieuw record aan tabel Pand toevoeg, kan ik in het formulier Meterkast geen gegevens invullen. Ik krijg dan weer de bekende foutmelding 3201 "U kunt geen record toevoegen of wijzigen voor de tabel Pand een gerelateerde record is vereist". Het Pand_ID is op het formulier Meterkast wel automatisch ingevuld, dat is al meer dan eerst.
Graag je visie.

Ik heb inmiddels de database voor test uitgebreid met een extra formulier Voorkamer. Ook hier, omdat het het eerste record betreft, krijg ik bij invullen van formulier Voorkamer de foutmelding.Bekijk bijlage Proef_uitgebreid.zip
 
Laatst bewerkt:
... echter, zodra ik in het formulier Pand een nieuw record aan tabel Pand toevoeg, kan ik in het formulier Meterkast geen gegevens invullen.
Dat is logisch, want als je een nieuw pand toevoegt moet je dat eerst opslaan voordat je naar Meterkast kunt gaan. Anders bestaat dat record (waarvan je de ID overzet) niet, en heb je dus geen record om te koppelen. Vandaar de foutmelding. Druk (bijvoorbeeld) eerst op <Ctrl>+<s> om het nieuwe record op te slaan,en probeer het dan nog eens.

P.s. Mijn laptop ligt nog steeds in de ziekenmand, dus ik doe af en toe wat op het werk.
 
Access formulieren koppelen

Dank voor de suggestie. Het werkt :D. Een hele opluchting. Ik zal en zal in VBA het opslaan als eerste onder de knop toevoegen. Ik doe nu hetzelfde voor een tweede formulier Voorkamer maar dat werkt nog niet. Ik ga dat uitzoeken.
 
Access formulieren koppelen

Hallo Octafish. De oplossing die je geboden hebt, werkt in de proef database uitstekend. Ook als ik de proef met een extra formulier heb uitgebreid, waarvoor mijn hartelijke dank. Ik heb hetzelfde principe en VBA codes in mijn te ontwikkelen database één op één overgenomen, echter ben ik nu alweer dagen aan het zoeken naar de reden waarom het deels niet werkt.

Hoofdformulier heeft een knop(pen) waarmee een subformulier in een één op één relatie wordt geopend. In het hoofdformulier Object gegevens (og) worden de gegeven/waarden ingevuld en opgeslagen. Het subformulier Voorkamer (vk) wordt daarna geopend en kan ik nieuwe gegevens/waarden invullen. De beide tabellen Object gegevens en Voorkamer zijn correct gevuld met de ingevoerde waarden. Daarna zijn beide ID's in de tabel Voorkamer terug te vinden en dus gekoppeld (gerelateerd). Tot zover gaat het goed.

Als ik een bestaand formulier "Object gegevens"(pand) selecteer en de knop "Voorkamer" activeer, dan wordt het subformulier "Voorkamer" geopend echter niet met de overeenkomstige waarden die reeds waren ingevuld. Het blijkt nmi. een nieuw subformulier te zijn. Het subformulier geeft in de onderste balk aan dat het gefilterd is doch opent niet met de gefilterde waarden maar met nmi. een nieuw subformulier. De filtering moet dan mogelijk niet werken.
In de bijlage heb ik schermopnamen van de Acces tabellen en de formulieren gemaakt om de situatie te kunnen verduidelijken. Mogelijk zie ik wat over het hoofd en is hulp zeer gewenst. Alvast bedankt.
 

Bijlagen

  • Vraag forum Helpmij.docx
    177,2 KB · Weergaven: 29
Beter (veel beter) is het om de db mee te posten, aan plaatjes heb ik niet zoveel.
 
Daarnaast snap ik niet waarom je de db zo hebt opgebouwd; uit je plaatjes maak ik op dat je een volkomen identieke tabel [Achterkamer] hebt, die je op dezelfde manier hebt gekoppeld. Die zal dan ook wel niet werken. Ik heb het eerder gezegd, dus nog maar een keer: identieke objecten sla je op in één tabel. Een kamer is een kamer, hoe je dat ook wendt of keert. Of die aan de voorkant ligt of aan de achterkant, boven of beneden: de kamers hebben allemaal exact dezelfde eigenschappen. Ergo: dat is één object dus één tabel. Daar mag je dan uiteraard nog wel een veld bijzetten die het type beschrijft, en eventueel de ligging in het huis, maar veel meer hoef je m.i. niet te doen. En dan kun je keurig een één-op-veel relatie maken, zoals dat hoort. En met deze flauwekul (excusez les mots, maar zo zie ik het echt) stoppen. Normaliseer je database, en je bent van een hele berg problemen af. Zoek de problemen in ieder geval niet op, je krijgt er nog meer dan genoeg (en gratis) :).
 
Access formulieren koppelen

Zijn we terug naar af? We hadden een mooie bruikbare oplossing conform naar wens?
Mijn doel is een hoofdformulier met subformulieren. Dat doel heb ik eerder als nadrukkelijke wens beschreven. Een opname in een pand moet zeer snel gaan en zonder keuzevakken maar rechtstreeks en zonder omhaal met gebruik van knoppen (eis van de gebruiker). Alles in één tabel, en niet gescheiden, is vanwege de zeer vele unieke items (dak, tuin, schuur, gevels, meterkast, security, toilet, badkamer, asbest, etc. etc.) en het later kunnen exporteren naar Excel voor het vervaardigen van een offerte (per kamer, etc.) nmi. niet geschikt (de gebruiker wil nadrukkelijk Excel). Het is zeker niet bedoeling om bv. alle ramen in alle ruimten in één tabel te sommeren maar uniek en separaat te houden.

Je had een uitstekende oplossing, conform mijn gebruikerswensen, en die heb ik in de proef database succesvol getest met twee formulieren die (onafhankelijk van elkaar) door twee knoppen na elkaar worden geopend (Er is slechts één subformulier geopend). Er kan dan snel worden geschakeld tussen formulieren. Nu doe ik hetzelfde en loopt het niet. Wat kan dat zijn? Ik kijk er waarschijnlijk overheen. Wil je eigenlijk zeggen dat de methode met meerdere (van elkaar) onafhankelijke subformulieren nooit kan werken? Waarom dan wel bij twee formulieren in de proef database en niet bij meer formulieren?

Bijgaande de concept database in ontwikkeling met twee subformulieren Voorkamer en Achterkamer. (Uitgeklede versie vanwege de informatie)
 

Bijlagen

  • Versie Helpmij Opname _V3.0.zip
    130,5 KB · Weergaven: 23
Laatst bewerkt:
We zijn in zoverre terug bij af dat je het principe van een werkbare database blijkbaar onbelangrijk vindt. Jij denkt nog steeds in Excel structuren, en dat moet je niet doen. Het eindeloos toevoegen van tabellen voor identieke objecten (en je maakt mij niet wijs dat een achterkamer niet hetzelfde is als een voorkamer of een bovenkamer) is een waardeloze oplossing, waarmee je de db alleen maar nodeloos belast en ingewikkeld maakt. Met één tabel voor een objecttype (Kamersoort) die je met één-op-veel koppelt aan je object, kun je een simpele tussenwoning met 4 kamers beschrijven (één record met 4 kamerrecords) alswel een kasteel met 80 kamers (één record met 80 kamerrecords). Jij gaat in het laatste geval dus 80 tabellen maken? Je bent gek als je dat zo wilt oplossen....
Ik kijk uiteraard wel even waarom jouw db niet werkt met de oplossing die ik je heb gegeven. Uiteindelijk is de 'klant' bij HelpMij koning :). Al behoudt ik mij het recht voor om mensen niet te helpen waarvan ik vind dat ze onnozel bezig zijn, en die niet willen luisteren. Dan zijn er (hopelijk voor jou) nog wel anderen die niet géén last van mijn gewetensbezwaren hebben :D.
 
Ik heb je voorbeeldje bekeken, en je hebt alleen de knop Voorkamer gemaakt. Die doet het prima. Ik heb dezelfde code gebruikt voor Achterkamer, en de veldnaam veranderd van vk naar ak, en de knop deed het gelijk prima. Dus dat werkt allemaal uitstekend.

En nog even terug naar de basis:
Een woning heeft verschillende vertrekken waar zeer veel kan worden gerenoveerd. ... Soms heb je voor een renovatie in een pand niet alles nodig maar een kleine selectie van de tabellen/formulieren, hangt van de klus af. Maar je moet met de database op alle mogelijke en voorkomende klussen uitputtend voorbereid zijn.
En dat doe je dus exact met mijn werkwijze. Jammer dat je dat niet wilt zien. Bovendien is het rapporteren op een klus waarin je een selectie van werkzaamheden maakt (en bedenk zelf of je ooit een klus hebt gehad waarin alles was aangevinkt) veel makkelijker met een genormaliseerde database, omdat je dan alleen rapporteert op geselecteerde werkzaamheden en objecten. Dat zie ik jou zo snel nog niet maken. Mijn manier van werken is sneller voor de bouwer, sneller voor de gebruiker, vele malen flexibeler, maakt betere rapporten etc. etc.
 
Access formulieren koppelen

Dank voor je reactie. Waarschijnlijk begrijp ik de bedoeling c.q. het principe niet. Met excuses, jammer dat ik niet aan je verwachting voldoe maar ik heb een bepaald uitgangspunt voor ogen die ik graag zou willen volgen. Voor kamers zou het werken maar niet voor de overige uiteenlopende items (dak, tuin, schuur, gevels, meterkast, security, toilet, badkamer, asbest, etc. etc.). Hier heb ik toch echt meer tabellen nodig. Ik ga je voorstellen nog eens goed bestuderen.

Ik heb de database ook geprobeerd maar het werkt niet goed. Als ik het formulier Voorkamer open dan verschijnen geen gegevens en blijft het formulier leeg. Als ik een nieuw record toevoeg, worden de waarden niet opgeslagen.
 
maar ik heb een bepaald uitgangspunt voor ogen die ik graag zou willen volgen.
Ik zie liever dat je de database principes volgt die door mensen met verstand van zaken (en daar reken ik mijzelf niet eens onder) zijn uitgedacht, en die gewoon goed werken. Jij bent geen database expert, en het lijkt mij een iets te hooghartige gedachte dat jouw aanpak dus de beste is. Dat is hij niet. Als je mijn verhaal goed leest, dan had je begrepen dat gelijkwaardige objecten in één tabel moeten worden ondergebracht. Je geeft zelf al aan dat dat met kamers prima zou werken. Ik zou zelfs alle natte ruimtes ook nog in één tabel kunnen krijgen, die dan behoorlijk genormaliseerd is. En kijk eens aan: er zijn zat huizen waar je meerdere badkamers/toiletten hebt. Tuinen? Idem. Veel huizen hebben er twee, sommige meer. Gevels? Ik denk niet dat er huizen zijn zonder gevel, maar als je een gevel hebt, zijn dat er minstens twee. Moet jij eens nagaan hoeveel tabellen dat scheelt! En hoeveel beter jouw database zou kunnen werken.

En de grap is: jouw werkwijze hoeft er niet eens door te veranderen, want jij kunt nog steeds knoppen gebruiken om een formulier te openen waarin je het betreffende object toevoegt/muteert. Alleen staan alle objecten van dat type dus in één tabel, zodat je niet een wildgroei aan knoppen krijgt (Achterkamer, Voorkamer is bij mij een keuzelijst) maar met een paar knoppen het nieuwe/bestaande object kiest, en vervolgens alles gaat invullen voor dat object. Gewoon op jouw formulieren, want die zijn daar vast prima voor geschikt. Sowieso kan ik mij niet voorstellen dat jouw formulier Voorkamer anders is dan jouw formulier Achterkamer. Er staat namelijk hetzelfde in.

Maar laat ik maar ophouden, als ik jou niet kan overtuigen van de doodlopende straat waarin je aan het fietsen bent, dan is het niet aan mij besteed om jou van jouw dwaalweg te laten omkeren.
 
Access formulieren koppelen

Ik kom kennelijk heel eigenwijs over wat niet in mijn aard ligt en veel van andere mensen (experts) wilt leren alleen moet ik sommige aangedragen complexe zaken wel begrijpen en kunnen matchen met mijn ideeën. Dat is een proces. Ik wil niemand frustreren al lijkt dat wel zo. Ik lees over normalisatie etc. waarbij ik tegelijkertijd denk dat er altijd nog tabellen/formulieren overblijven die ik met knoppen moet bedienen. Wat is er dan veel anders dan waar ik op dit moment mee bezig ben.

Ik ben nog in het stadium in het aanroepen van formulieren en deze met de gefilterde waarden op het scherm te krijgen. Dat lukt tot op heden nog niet en daar vraag ik hulp om. Als dat principe werkt ga ik verder nadenken en je aanbevelingen verder bestuderen en kijken hoe ik dat het beste vorm kan geven. Ik ben nog met experimenten bezig met een paar knoppen en formulieren terwijl je al verder bent met de hele inrichting. Begrijpelijk, een expert denkt nmi. in grote stappen vooruit en ik kan dat nog niet overzien. (Ik had de tabellen en wat proef knoppen voor het experiment al gemaakt en ik kan dat altijd nog aanpassen aan de nieuwe ideeën)

Je hebt zelf de code aangeleverd (waarvoor dank) die ik kan toepassen en heb dat ook in mijn experiment gedaan. Echter de bijgevoegde db in vraag #48 die met dezelfde code is uitgevoerd, werkt niet goed. Ik vraag alleen hulp om te kijken waar het aan ligt. Ik kijk waarschijnlijk over een fout heen. Daarna zet ik de volgende stap. Heb svp. begrip en ontvang graag hulp voor de "Versie Helpmij Opname" db. item #48


(PS. Het vorige project Werkorders, waarvoor je hulp hebt geboden is in de praktijk een succes. Er zijn vele honderden werkorders ingevoerd, biedt veel gemak en heeft nu al tijd en moeite bespaard.)
 
Laatst bewerkt:
Je complete bericht geeft er blijk van dat je weinig van het ontwerpen van databases begrijpt. Dat geeft natuurlijk niet; je kunt nooit worden aangesproken of afgerekend op kennis die je niet hebt.

Ik lees over normalisatie etc. waarbij ik tegelijkertijd denk dat er altijd nog tabellen/formulieren overblijven die ik met knoppen moet bedienen. Wat is er dan veel anders dan waar ik op dit moment mee bezig ben.
Het een staat compleet los van het ander. Normaliseren heeft niets met knoppen op een formulier te maken.

Ik ben nog in het stadium in het aanroepen van formulieren en deze met de gefilterde waarden op het scherm te krijgen. ... Als dat principe werkt ga ik verder nadenken en je aanbevelingen verder bestuderen en kijken hoe ik dat het beste vorm kan geven.
Dat bedoel ik dus met mijn vorige opmerking: je begint niet met formulieren, je eindigt er mee.

Ik ben nog met experimenten bezig met een paar knoppen en formulieren terwijl je al verder bent met de hele inrichting. Begrijpelijk, een expert denkt nmi. in grote stappen vooruit en ik kan dat nog niet overzien.
Sluit aan op vorige opmerking: je begint met het correct opzetten van de database: de tabellen en queries, daarna ga je de schermen (formulieren) en output (rapporten) maken. Jij werkt precies omgekeerd. Dat heeft niets te maken met experts die in grote stappen vooruit denken, maar alles met experts die juist in kleine stappen en details denken. Het zijn juist de amateurs die in grote stappen vooruit willen.
 
Access formulieren koppelen

Droevig allemaal. Ik ben alleen aan het oriënteren of het werken met de knop voor een subformulier(en) kan werken en hoe dat zou moeten, meer niet. Ik heb daar drie kleine tabellen voor gemaakt met drie formuleren. Als het principe van de knop werkt, ga ik de structuur van het programma opzetten met de informatie, kennis en attributen die ik heb vergaard. Daarbij neem ik je opmerkingen/adviezen mee, meer niet.
 
Dan kan ik je niet helpen; de werking van knoppen is totaal niet interessant als de database niet goed is opgezet. Jij koopt toch ook geen auto met de mooiste knoppen, maar waarvan je weet dat hij niet rijdt? Ik heb je de werkende code gegeven, en die doet het ook in jouw voorbeelden. Dan moet je hem werkend kunnen krijgen in jouw database.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan