Relaties

Status
Niet open voor verdere reacties.

Bunicich

Gebruiker
Lid geworden
10 apr 2016
Berichten
66
Beste access experts, soms denk je de oplossing te hebben maar toch net niet......

Ik heb een database gemaakt voor het controleren van AED's. Ik zou dit graag in access willen bijhouden. Ik heb een "startpagina" gemaakt start.jpg Ik kan hier het bedrijf en contactpersoongegevens invullen. In het tabel er onder kan ik (beperkte) AED gegevens invoeren, als een bedrijf meer AED's heeft is dat overzichtelijk. Als ik dubbelklik op het ingevoerde serienummer open hij meer details aed-detail.jpg (werkt goed). Ik wil graag als ik een nieuwe keuring moet doen een nieuw formulier openen controle-nieuw.jpg en als ik wil zien welke controles er geweest zijn op Archief controlelijst-archief.jpg. Ik wil later via het Archief op de keuringsdatum willen klikken om een rapport te openen, uitprinten of mailen.



Kan iemand mij ook op weg helpen (met de relaties)? relaties.jpg

Alvast hartelijke dank
 
Begrijp ik het goed, heb je de hele interface al gebouwd zonder te weten of de structuur goed is? Dan heb je nog nooit bij mij een cursus gevolgd, want die aanpak is volkomen fout :). Het moet precies andersom: éérst de structuur goed, en dán pas de grafische interface. Maar ieder zijn aanpak natuurlijk.

Maar goed, met die drie tabellen lijken de relaties mij niet zo moeilijk te maken. Altijd het sleutelveld uit de ene tabel koppelen aan het overeenkomende veld in de gekoppelde tabel en je bent er. Vergeet nooit om de optie Referentiële Integriteit afdwingen aan te zetten, want anders zijn je relaties volkomen waardeloos.
 
Probeer ook de veldnamen kort te houden (liefst zonder spaties, mocht je ooit vba gaan gebruiken dan zal je er blij mee zijn). In het formulier kan je de tekst in je labels gewoon aanpassen. Als je meerdere waarden in je comboboxen wilt gebruiken, dan zou ik hier ook een tabel voor maken.
 
Goedemiddag OctaFish,

Ik begin niet voor niets met "soms denk je de oplossing te hebben maar toch net niet......". ;).

Ik dacht ook dat met 3 velden het niet zo moeilijk zou moeten zijn. Ik heb geen idee wat er mis is gegaan. Inmiddels na een dag uitzoeken is het gedeeltelijk gelukt. Ik kan meerdere AED's koppelen aan een eigenaar. Ook worden de AED_details geopend bij de desbetreffende AED. So far so good.

Het enige wat nog niet wil lukken is dat ik de controles kan opslaan, als ik een nieuwe controlelijst wil openen krijg ik deze melding foutmelding.jpg

Ik heb nu dit als relaties.....relaties_koppel.jpg. De fout zou ergens tussen AED en controles moeten zitten.

@MsAccessNL dat is een goeie tip, ik zal er rekening mee houden.
 
De fout zou ergens tussen AED en controles moeten zitten.
Waarom denk je dat? Ben ik benieuwd naar :). Je relaties zijn nu OK, dus dat is nu net waar het niet aan ligt. Kijk ik naar de plaatjes van je eerste bericht, dan zie ik in de twee afhankelijke formulieren nie de koppelvelden terug. Dat geldt zowel voor AED_Detail en voor Controlelijst. Dat ik ze niet op het formulier zie, hoeft an sich niets te betekenen; ik heb óók (meestal sub)formulieren waar ze niet op te zien zijn. Maar ze zijn dan wél aanwezig op het formulier, en zijn/worden dan óók ingevuld. Want dat is dus het probleem vermoed ik: zodra je een record aanmaakt in Controlelijst, dan moet je ook een AED_Detail nummer (ID veld bij jou) hebben ingevuld, anders kun je het record niet opslaan, en krijg je inderdaad die foutmelding. Dus er is geen sprake van een (programma)fout, maar van (vermoed ik dus) een ontwerpfout. En die laatste is dus simpel op te lossen.

Als ik een database ontwerp, dan doe ik dat altijd vanuit een Functioneel Ontwerp: wat is het doel van de database, wat wil je er mee kunnen doen? En hoe zijn de processen? In jouw geval lijkt het er dus op dat je een AED hebt, en daar Controlelijsten aan wilt koppelen. Dat doe je normaal gesproken met een gekoppeld subformulier. Dat heb jij dus niet gemaakt. Een fout die je dus had kunnen voorkomen. Snap je nu wat ik bedoel met mijn eerste opmerkingen?
 
De relatie ziet er goed uit. De vraag is hoe en waar je probeert de nieuwe keuring toe te voegen.

Naar analogie van wat je in je eerste post beschrijft over bedrijven en aed's zou ik zeggen: toon op het aed detailformulier een subformulier met een beperkt aantal keringsgegevens. Voeg daar een keuring toe en maak een mogelijkheid om door te klikken naar een detailscherm.
 
Beste ActaFish,

Ja ik snap gedeeltelijk wat je bedoelt. Een sub-formulier heb ik meer gemaakt (en gekoppeld) maar ik heb het zo ingericht dat ik een apart formulier te zien krijg. Ik vind het lastig uitleggen, ook omdat ik geen expert ben. Ik wil het zelf graag oplossen om ervan te leren sorry van mijn (domme) vragen.

Ik heb een gedeelte van mijn vorige "probleem" opgelost door een sub-formulier te maken sub-formulier.jpg. Ik heb eronder een knop gemaakt voor een nieuw (controle) formulier te openen, deze zou gekoppeld moeten zijn aan het serienummer van de AED_detail welke ik heb geopend.
 
Ik heb eronder een knop gemaakt voor een nieuw (controle) formulier te openen, deze zou gekoppeld moeten zijn aan het serienummer van de AED_detail welke ik heb geopend.

Dan zal er in ieder geval voor moeten zorgen dat de sleutel van de AED (niet het serienummer) meegenomen wordt naar het keuring formulier.
Het lijkt me bovendien handig dat de knop alleen werkt als er een AED aanwezig is op het formulier. In de bijlage lijkt dat niet het geval.

Overigens geldt ook hier dat het helpt als je een voorbeeld van je database post, zodat we kunnen zien wat je daadwerkelijk bij elkaar hebt geknutseld.
 
Er van uitgaande dat niet alleen xps351 je database mag bekijken (correct me if I'm wrong...) heb ik 'm (wellicht illegaal dus) ook maar gedownload. En wat blijkt? Geen enkel record in de tabellen! Hoe kunnen wij nu helpen als er geen data in de database zit? Of verwacht je van ons dat wij eerst wat records gaan inkloppen? Misschien dat Peter dat doet, maar ik dus echt niet. Het aanleveren van een correct voorbeeld is een taak van de vragensteller. Dus graag een voorbeeld mét wat data. Tot die tijd ben je afhankelijk van xps351 :).
 
Beste @OctaFish,

Het is inderdaad voor iedereen te downloaden dus niet illegaals aan. Nee dat is zeker niet de bedoeling dat jullie "mijn werk" moeten gaan doen. Ik wil het juist zelf doen!!!
Ik zal er een aantal "klanten" inzetten. Hoeveel heb je nodig om dit goed te kunnen beoordelen? Ik heb er twee klanten ingezet met een aantal AED's. Als ik nog meer erin moet zetten hoor ik het graag.
 
Laatst bewerkt:
Hallo Bunicich,

Een probleem is sowieso dat op het formulier AED-details het hoofd- en subformulier niet op de juiste velden zijn gekoppeld. Dat zou op AED_id moeten zijn (sleutel van AED) en niet op serienummer. Daar zijn geen gegevens voor nodig
:d
 
Laatst bewerkt:
Beste xps351,

Super!...ik ga gelijk kijken en anders morgen (ben er al de hele dag mee bezig). Ik laat weten als het is gelukt.

21:27: Inmiddels geprobeerd maar zonder resultaat :( Ik ga morgen verder.... Nog even een klein vraagje voor een voor mij helder beeld. We hebben het over de connectie tussen AED-details en het subformulier? of hebben we het over de AED en AED-details.

Weet niet wat ik nu heb gedaan maar nu heb ik geen beeld meer in controle_nieuw......morgen verder, zie het niet meer ;)
 
Laatst bewerkt:
Inderdaad AED-details en het subformulier.

In bijlage hoe ik het heb aangepast. Let ook op de code onder de knop 'nieuwe keuring' en de gebeurtenis 'bij laden' op het formulier '
controlelijst_nieuw' Met die aanpassingen regel je wat ik in post #8 benoemde als het meenemen van de sleutel van de AED naar het keuring formulier.
 

Bijlagen

  • Database_2023_AED2.zip
    294,3 KB · Weergaven: 18
Nog even een nabrander.

Ik ken het proces en de werkwijze natuurlijk niet, maar verbaas me wel over al die vinkjes op het keuringsformulier. Op een gegeven moment heb ik ze maar allemaal aangevinkt omdat ik steeds teruggefloten werd omdat er een niet aangevinkt was. Dat doet vermoeden dat ze allemaal WAAR moeten zijn. Het nut ontgaat me. Waarom bied je een keuze (WAAR of ONWAAR) als er niets te kiezen valt?
Ik kan me voorstellen dat je zoiets gebruikt als checklist bij het uitvoeren van een keuring, maar voor het (achteraf?) vastleggen van een keuring lijkt het me zinloos. Als gebruiker weet je dat je bepaalde vinkjes, zo niet alle, aan moet vinken, anders lukt het überhaupt niet een (reeds uitgevoerde?) keuring vast te leggen.
 
Beste xps351,

Bedankt voor je bericht. Ja dat is wel een hele goeie nabrander. Nu ik erover nadenk is dat ook zeker waar. Wel is het zo dat niet alle vragen kunnen worden beantwoord met WAAR/ONWAAR (selectievakje). Een aantal vragen kunnen dat zeker maar niet alle AED's zitten namelijk in een (buiten) kast waardoor de vragen of de deursignaal of het verwarmingselement werkt soms met Ja (werkt), Nee (werkt niet) of NVT (AED hangt niet in een kast) kan worden beantwoord. Soms hangen AED's aan een beugel.

De verplichting om alles verplicht in te vullen is misschien iets overdreven, ik kan dat er af halen.

Ik heb je voorbeeld uitgeprobeert maar helaas zonder resultaat fout_aangepast_formulier.jpg. Hij verwijst naar AED_Id op de AED tabel maar die is geïndexeerd (sleutel) en kan dus geen duplicaten accepteren. Ik heb ook al geprobeerd om het op een andere manier te koppelen maar ook dat zonder resultaat :(

Ik knutsel nog even door maar als je een idee hebt hoe dit op te lossen hou ik me aanbevolen.

Ik gebruik momenteel formulieren waarbij ik ja,nee,nvt kan aankruisen en ik ben daar van uitgegaan.

Groeten, Richard
 
Hallo Bunicich,

Het probleem zit in de controlelijst_id. Dat is een numeriek veld met defaultwaarde 0. Elk nieuw record krijgt dus 0 als id. Zolang je maar één record hebt (zoals in mijn geval) gaat het goed. Maak er daarom een autonummering veld van, net als in de andere tabellen.
 
Beste xps351 en OctaFish,

Het is opgelost! ik heb nu de data's waar ik het wil hebben en alles werkt ná uitvoerig testen. Het "probleem" lag in de relatie tussen tabel AED en controle. Het blijkt dat de relatie zonder referentiiële integriteit moet. Als ik dat doe werkt alles en anders blijft hij aangeven dat er een gerelateerde koppeling moet zijn.

Bedankt voor jullie hulp

Een fijne zondag verder
Groeten Richard
 
Referentiiële integriteit zou gewoon aan moeten kunnen staan. Sterker nog, het zou aan moeten staan. Een controle kan immers niet bestaan zonder bijbehorende AED.
 
Klopt maar op 1 of andere manier werkt het zo ook, sterker nog als ik de relatie tussen AED en controle weghaal doet ie het net zo goed. Ik heb zelfs de tabellen opnieuw gemaakt maar het blijft alleen op deze manier werken. Ik ben blij dat het werkt. Het is aan de experts om hier verder over na te denken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan