Access 2016 Formulieren koppelen

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Hallo allemaal,
Ik ben bezig met het ontwerp van een database voor het opnemen van werkzaamheden in woningen voor het uitvoeren van onderhoud. Ik heb 28 tabellen (pandgegevens, woonkamer, badkamer, trap etc.) gemaakt met een opsomming van alle voorkomende werkzaamheden. Het plan is hiermee 28 formulieren te maken die vanuit een hoofdformulier d.m.v.. een hiervoor bestemde knop kunnen worden opgevraagd en kunnen worden ingevuld. Ik wil geen hoofdformulier met daar in een subformulier (27x) dat er uit ziet als een gegevensblad maar afzonderlijke formulieren die gemakkelijk zijn in te vullen. Dus het 1x hoofdformulier (het formulier Pand-gegevens) met 27 afzonderlijke formulieren bv. formulier Badkamer, formulier Woonkamer. Alle formulieren moeten wel gerelateerd zijn aan het hoofdformulier (formulier Pand-gegevens) en dus gerelateerd aan de gegevens van het betreffende pand.
Ik heb proeven uitgevoerd maar kom niet tot een geschikte opzet. Wie kan mij helpen met ideeën hoe te realiseren. Hoe krijg ik de losse formulieren gekoppeld? Moeten de formulieren via een koppeltabel aan het hoofdformulier worden gekoppeld (heb ik getest maar dat werkt niet)? Alvast bedankt voor het meedenken.
 
Leg eens uit waarom jij voor elk type ruimte (dat je er 27 kan bedenken vind ik persoonlijk een prijs waard) een aparte tabel denkt nodig te hebben. Mij lijkt dat schromelijk overdreven en totaal ongenormaliseerd. Daarnaast zie ik geen enkel voordeel. Natuurlijk heeft een badkamer een ander gebruiksdoel dan een slaapkamer, maar ze zijn in beginsel dezelfde entiteiten. Hooguit met iets andere attributen, zoals een wastafel. Dat moet je dus flexibel inrichten, en niet zo star als je nu doet.
Dan wordt je hele systeem ook gelijk een stuk makkelijker te maken.
 
Access Formulieren koppelen

Hallo Octafish. Een woning heeft verschillende vertrekken waar zeer veel kan worden gerenoveerd. Een badkamer heeft bv. een bad en/of douche-ventilatie, en een trap traptreden-leuning-traphek, meterkast of asbestverwijdering, zelfs de tuin en de schuur, dak, gevels zijn aparte formulieren waar zeer veel zaken kunnen worden gerenoveerd. Wanden, plafonds zijn in alle ruimte aanwezig maar hebben een verschillend oppervlak en eventuele behandeling nodig. 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. Tja, het verbaasde mij ook. Gemakkelijke en snel te bereiken formulieren voor een snelle opname in het pand, die moeten leiden tot een offerte, is "handig". Hoe moet de structuur er uit zien, hoe realiseer ik aparte gemakkelijk in te vullen formulieren (zoals de lay-out van het hoofdformulier) die je in willekeur vanuit een hoofdformulier met specifieke pandgegevens kan kiezen en hoe leg ik logische relatie met elkaar.

Je hebt mij met de werkorder database succesvol geholpen, deze is nu met succes geïmplementeerd.:D
 
Wanden, plafonds zijn in alle ruimte aanwezig maar hebben een verschillend oppervlak en eventuele behandeling nodig.
Kijk, je beseft het waarschijnlijk niet, maar je onderschrijft mijn stelling dus voor de volle 100% :). JUIST in een database moet je niet denken in aparte tabellen voor losse objecten, maar in TYPE objecten. En zoals ik al zei: objecten hebben verschillende eigenschappen. Dus: één tabel voor de verschillende ruimtes, zoals een badkamer, een trap, een keuken. Daarnaast heb je eigenschappen (attributen) die je ook op meerdere plekken gebruikt. Die attributen zet je dus ook in een tabel, eventueel met een extra veld waarin je aangeeft voor welke ruimtes die attributen gebruikt kunnen worden.

Die tabel Objecten moet natuurlijk attributen kunnen krijgen, en die sla je op in een gekoppelde tabel. Op het Objecten (Ruimtes) formulier staat die tabel als doorlopend formulier zodat je voor elke ruimte de attributen die van toepassing zijn kan opslaan. En op die manier kun je elke ruimte beschrijven op één formulier + subformulier. En geen 28 formulieren :).
 
Access formulieren koppelen

Octafish, sorry dat ik nog niet hebt gereageerd. Ik kom later op je antwoord terug.
 
Prima, het is jouw vraag tenslotte, en dus ook jouw tempo :).
 
Access formulieren koppelen

Hallo, ik ben op zoek naar een manier waarbij twee formulieren een rechtstreekse 1 op 1 relatie met elkaar hebben. Dus als ik formulier 1 open, kan ik vanuit dit formulier met een aangebrachte knop het bijbehorende formulier 2 openen. Eigenlijk is het tweede formulier een rechtstreeks verlengde van informatie van het eerste formulier.
Ik ga uit van twee tabellen. Tabel 1 levert formulier 1 en tabel 2 levert formulier 2. De informatie van tabel 2 in tabel 1 integreren is geen optie voor mij, dus 2 tabellen. Ik heb behoorlijk wat zitten puzzelen en hopelijk kan iemand helpen met een suggestie.
 
Ik krijg de indruk dat jij totaal niet snapt hoe een goede database in elkaar zit, en dat je dus nu allerlei lapmiddelen zit uit te vinden om het werkend te krijgen.
Hallo, ik ben op zoek naar een manier waarbij twee formulieren een rechtstreekse 1 op 1 relatie met elkaar hebben.
Formulieren hebben geen relatie met elkaar, en zeker geen één-op-één relatie.
Als de twee tabellen gerelateerd zijn, is een doorlopend formulier (tweede tabel) op het hoofdformulier (eerste tabel) de perfecte oplossing. Ben je van al je problemen af. Jouw oplossing kan natuurlijk ook gemaakt worden, je opent dan het tweede formulier op basis van het sleutelveld van het eerste formulier. Dan kun je, zonder extra toeters en bellen, maar één record toevoegen, want daarna ben je de ‘link’ kwijt. Dat probleem heb je met een doorlopend formulier niet. Maar ik geloof dat ik nog heel wat keren met de optimale oplossing moet zwaaien voordat ik jou ervan kan overtuigen dat dat ook echt de optimale oplossing is :).
 
Access formulieren koppelen

Dank voor je oplossing. Het is voor de lezer niet altijd gemakkelijk te doorgronden wat een expert bedoelt en ben overal voor in als ik het maar begrijp. Natuurlijk gaat het om relaties tussen tabellen. Conform je voorstel heb ik voor proef een doorlopend formulier gemaakt en inderdaad het resultaat is veel belovend bruikbaar. Ik ga op deze weg verder. Nogmaals dank.
 
Access formulieren koppelen

Ik had hoop maar ik ben nu dagen bezig zonder resultaat met oa. het voorgestelde doorlopend formulier. Ik kom er helaas niet meer uit. Er zijn twee tabellen, tabel 1 en tabel 2. Van beide wil ik een apart formulier waarbij formulier 2 met een knop op formulier 1 wordt geopend. Formulier 2 hoort altijd bij een bepaald formulier 1. Formulier 2 wordt geopend op basis van het actieve (current) ID-nummer (Autonummer) van tabel 1. Dit lukt dusver echter, de ID nummering van beide tabellen c.q. formulieren gaat op een gegeven moment uit de pas lopen. Er wordt het verkeerde formulier 2 geopend als in tabel 1 c.q. formulier 1 records worden toegevoegd zonder dat dat ook bewust gebeurd in tabel 2 c.q. formulier 2. Formulier 2 hoeft immers niet altijd ingevuld te worden. Bij beide tabellen is de sleutel momenteel ingesteld op autonummering en beide ID's zijn op basis van 1:1 gerelateerd.
Ik zou graag het volgende realiseren:
Tabel 1 ………. Tabel 2
ID 1...…………..ID 1...….Formulier 2 ID 1 behorende bij ID 1 wordt geopend, kan worden ingevuld en opgeslagen.
ID 2.........…...ID 2......Formulier 2 ID 2 behorende bij ID 2 wordt geopend, kan worden ingevuld en opgeslagen.
ID 3..........................Formulier 2 wordt nu niet gebruikt.
ID 4.....................…...Formulier 2 wordt nu niet gebruikt.
ID 5.........…...ID 3......Formulier 2 ID 3 behorende bij ID 5 wordt geopend, kan worden ingevuld en opgeslagen.
ID 6.....................…...Formulier 2 wordt nu niet gebruikt.
ID 7......……….ID4...…..Formulier 2 ID 4 behorende bij ID 7 wordt geopend, kan worden ingevuld en opgeslagen.
etc.
Graag svp. hulp bij de vragen:
a) Hoe moet de sleutel van tabel 2 worden ingesteld op autonummering of numeriek (tabel 1 autonummering)?
b) Op welke ID wordt de één op één relatie ingesteld? Primaire sleutel tabel 1 gerelateerd met sleutel tabel 2 of een andere manier van relateren.
c) Hoe "weet" tabel 1 welke gekoppelde record in tabel 2 bij het betreffende record van tabel 1 hoort?
d) Moet in tabel 1 niet het gerelateerde ID nummer van tabel 2 in een veld worden bijgehouden zodat formulier 2 kan worden geopend op het in tabel 1 bijgehouden ID nummer. Hoe kun je dit realiseren, VBA?
Ik zie vast eea. over het hoofd.
 
Ik zie vast eea. over het hoofd.
Dat lijkt mij duidelijk :). Laten we een ding voorop stellen: je kunt nooit twee tabellen koppelen op basis van twee autonummervelden. De reden heb je zelf aangegeven en geconstateerd. Wat zie je nog meer over het hoofd? De manier waarop je de tabellen hebt gekoppeld. Elke tabel heeft in beginsel een sleutel nodig. Dat veld is in die tabel uniek. Tabel1 mag dus best een Autonummerveld hebben, maar als je die tabel wilt koppelen aan een andere tabel mag dat veld in die andere tabel nooit een autonummer zijn. Wél een Numeriek veld natuurlijk.
Daarnaast moet je bepalen hoe de Relatie tussen de twee tabellen moet zijn. Normaal gesproken is dat een één-op-veel relatie, en dan hoef je weinig te doen, maar jij wilt een één-op-één relatie en dan moet je de instellingen van het koppelveld aanpassen. Dat kan op twee manieren:
1. Je maakt van het koppelveld een sleutelveld
2. Je geeft het veld een unieke index
Met beide opties kun je de constructie maken waarbij je subformulier perfect werkt op het hoofdformulier.
 
Dank voor je antwoord. Ik had je voorstel ook getest. Tabel 1 autonummering en tabel 2 numerieke sleutel. Bedoel je met koppelveld het sleutelveld van tabel 2 of een extra veld in tabel 2 als ID en deze relateren aan de prim sleutel van tabel 1. Ook dat heb ik getest maar geen resultaat. Wat bedoel je met een unieke index geven? Ik kan alleen het veld Numeriek instellen. Bedoel je met "Subformulier" het formulier dat in het hoofdformulier is geïntegreerd? Ik wil twee gescheiden formulieren.
Is het niet zo dat op één of andere manier het indexnummer van het geopende tweede formulier c.q. tabel 2 in een daarvoor bestemd veld in tabel 1 moet worden opgeslagen zodat bij het klikken op de knop in formulier 1 het opgeslagen indexnummer kan worden gebruikt om formulier 2 te openen met de gegevens van het record dat is opgeslagen. Zie svp. mijn voorbeeld in mijn eerdere gestelde vraag.
 
Access formulieren koppelen

Help aub. Ik kom niet meer uit het volgende (eenvoudige) vraagstuk. Ik heb zeer veel getest maar het duizelt nu. Twee tabellen met een eigen apart invulformulier (Voorbeeld: Form Pandgegevens en Meterkast). Dus geen subformulier op een hoofdformulier. Een pand heeft maar één meterkast. Als de pandgegevens zijn ingevuld kan met een knop op het pand-formulier het meterkast-formulier worden geopend en de gegevens van de meterkast worden ingevuld. In sommige panden wordt geen meterkast ingevuld en dus overgeslagen. Later wil ik meer formulieren met deze knop-toegang toepassen. Alle velden één tabel om het probleem op te lossen, wordt de tabel te groot (>255 velden). Hoe kan ik het juiste meterkastformulier weer bij een bepaald pand "oproepen" als deze voor het pand beschikbaar is?
Welk type relatie (1:1, 1 op veel) moet ik toepassen? Welk koppelveld moet ik waar aanbrengen? Moet ik een macro of VBA onder de knop aanbrengen en wat? Bijgaande een voorbeeld waarbij de relatie mogelijk niet correct is.
 

Bijlagen

  • Proef.zip
    28,1 KB · Weergaven: 40
Ik kan voorlopig geen databases openen, dus alleen theorie aanbieden. Dan scheelt het als je de juiste tabelnamen en veldnamen ook meegeeft, dan kan ik makkelijker inschatten wat je moet doen.
Laten we zeggen dat je tabel tPanden heet, en de sleutel [PandID] (autonummer); lijken mij logische namen. Dan heb je de tabel tMeterkast met de sleutel [MeterkastID] (autonummer). Om te koppelen met tPanden heb je in tMeterkast een koppelveld nodig: [Pand_ID]. Ik probeer veldnamen altijd uniek te houden, vandaar de underscore in het koppelveld.
Maar omdat je maar één pand wilt toestaan omdat elk pand maar één meterkast heeft, moet je dat veld uniek maken. Dat doe je door de index van dat veld op uniek in te stellen. Of door dus het veld [Pand_ID] als sleutel te gebruiken, dat mag ook. Zolang het maar geen autonummerveld is.
Het formulier fMeterkast open je dan door de filtering “[Pand_ID] = “ & Me.PandID mee te geven met het formulier, dus onder de knop. Overigens kun je dat prima instellen via de wizard als je de derde optie gebruikt.
 
Access formulieren koppelen

Veel dank Octafish. De eerste 3 regels van je antwoord kan ik volgen en had dat ook zo op een bepaald moment uitgevoerd. Het tweede deel van je antwoord is cruciaal en volg ik niet helemaal. Met het veld uniek maken bedoel je: Numeriek Index Ja(geen duplicaten), er wordt hierdoor een 1 op 1 relatie gemaakt (PandID gekoppeld met Pand_ID).

Dit is onduidelijk: "Het formulier fMeterkast open je dan door de filtering “[Pand_ID] = “ & Me.PandID mee te geven met het formulier, dus onder de knop. Overigens kun je dat prima instellen via de wizard als je de derde optie gebruikt"
Ik heb via de wizzard formulier het formulier fPand gemaakt en fMeterkast. Op fPand een knop maar dan . . . Ik dacht aan een macro en bij Where een filter of bedoel je een VBA maar dan krijg ik bij de uitvoering van “[Pand_ID] = “ & Me.PandID de foutmelding dat foutcontrole ontbreekt etc. Hoe ziet de filtering er uit? Je hebt het ook over een derde optie, welke is dat? Graag svp. nog een duwtje in de goede richting van je. Alvast bedankt.
 
Als je een formulier hebt waarmee je een tweede formulier gefilterd wilt openen, kun je die knop met de wizard maken. Je krijgt dan de optie om een record op te zoeken in het formulier. Als je die kiest, maakt de wizard een ingebouwde macro aan. Mijn code werkt als je de knop zelf maakt in VBA, en laat alleen het WHERE stuk zien. Dat zit ook zo in de macro.
 
Access formulieren koppelen

Ik heb je instructie opgevolgd en heb zowel een VBA code als een Macro aangemaakt. Beide geven niet het gewenste resultaat en geven bij het opslaan van de nieuwe record in formulier Meterkast een foutmelding. Ik heb eea in een document bijgevoegd zodat je de huidige situatie kan zien wat ik heb uitgevoerd. Er moet toch een oplossing zijn? :)
 

Bijlagen

  • VBA en Macro Pand_Meterkast.docx
    48,3 KB · Weergaven: 48
Ik krijg de bijlage niet geopend dus ik kan niet zien wat er aan de hand is. Post de code eens.
 
Access formulieren koppelen

Hier is het. Het is wel een word.docx bestand.
 

Bijlagen

  • VBA en Macro Pand_Meterkast.docx
    48,3 KB · Weergaven: 50
Ik kan Word bestanden openen en inzien, maar deze blijft weigeren.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan