Stel uw vraag
0

Betreft Base: hoe kan ik een interne relatie in een tabel instellen. Ik wil de partner van een persoon vastleggen, die zelf ook in de persoon-tabel voorkomt. Ik heb het al via een ralatietabel geprobeerd, maar krijg steeds een foutmelding.

gevraagd 2020-07-14 20:35:53 +0200

LuukDb52 gravatar image
bewerken retag markeer ongewenst sluiten samenvoegen verwijderen

Commentaren

Zo te zien is de definitie van de relatie-tabel niet correct. In de relatie-tabel (PersoonPartners?) moet twee keer een foreign-key (b.v. Persoon_id1 en Persoon_id2) te worden gedefinieerd naar de tabel Personen en dus twee keer een one-to-many relatie . De primary key van de relatie-table is dan Persoon_id1 + Persoon_id2. Eventueel kan een derde tabel (b.v. TypeRelatie) worden gedefinieerd om het mogelijk te maken dezelfde personen meerdere keren aan elkaar te relateren (b.v. burgerlijke stand en werk-relatie) In dat geval de primary key van TypeRelatie ook opnemen in de primary key van de relatie-tabel. Ik hoop dat dit helpt!

Tom Kuipers gravatar imageTom Kuipers ( 2020-08-11 17:08:47 +0200 )bewerken

Welke database gebruik je? HSQL of Firebird? Firebird is niet stabiel. Aangeraden wordt om HSQL te gebruiken.

rwestein gravatar imagerwestein ( 2020-08-15 10:48:07 +0200 )bewerken

Ik heb een test database aangemaakt met een embedded HSQL database. De volgende acties uitgevoerd: 1. tabel Personen gemaakt met PK Pers_ID en een text-veld. 2. tabel Relaties aangemaakt met P-nummer1 en P_nummer2 en een text-veld 3. PK van Relaties aangepast door P-nummer1 en P-nummer2 te combineren 4. Relatie aangemaakt tussen Personen (Pers_iD) en Relaties (P-nummer1) 5. Tweede relaties gemaakt tussen Personen en Relaties: Systeem zegt dat relatie al bestaat en geeft optie om aan te passen of toe te voegen: toevoegen gebruikt Geselecteerd Pers_ID en P-nummer2 en tweede relatie aangemaakt: geen probleem!

De opmerking van rwestein begrijp ik niet goed: Ik gebruik zelf een Firebird database zonder problemen. Ik zou wel aanraden om niet een embedded database te gebruiken, maar een externe. Dit maakt distributie van aanpassingen in het programmatische gedeelte veel gemakkelijker, zeker als de toepassing voor derden is bedoeld.

Tom Kuipers gravatar imageTom Kuipers ( 2020-08-15 20:38:27 +0200 )bewerken

Ik gebruik idd de ingebedde HSQLDB, dus ik denk dat het niet daar aan ligt.

LuukDb52 gravatar imageLuukDb52 ( 2020-08-20 15:48:35 +0200 )bewerken

Hoi Tom, bedankt weer voor je reactie. Omdat je test veel leek op wat ik ook al gedaan had, heb ik je test ook uitgevoerd met een nieuwe database. Helaas kreeg ik dezelfde foutmelding als eerder vermeld (zie bijlage). Wat gaat er bij mij fout?

LuukDb52 gravatar imageLuukDb52 ( 2020-08-20 16:02:32 +0200 )bewerken

Hallo Luuk, Als je dat wilt doen stuur dan een kopie van de database als bijlage, dan zal ik nog een poging doen. Doe dat niet als de database persoonlijke gegevens bevat.

Tom Kuipers gravatar imageTom Kuipers ( 2020-08-22 13:49:14 +0200 )bewerken

Hoi Tom, ik heb de betreffende database als bijlage toegevoegd. Ik ben hem nog aan het bouwen, dus nog geen data aanwezig. Hoop dat je wat kunt vinden.

LuukDb52 gravatar imageLuukDb52 ( 2020-08-23 20:08:56 +0200 )bewerken

Hallo Luuk: Ik heb jouw database aangepast met een relatie-tabel, twee queries en twee formulieren. Ik weet helaas niet hoe ik de database als bijlage moet toevoegen, ik heb dat nog niet eerder gedaan.....

Tom Kuipers gravatar imageTom Kuipers ( 2020-08-30 22:47:39 +0200 )bewerken

2 Antwoorden

0

beantwoord 2020-08-30 23:09:42 +0200

Tom Kuipers gravatar image

updated 2020-09-03 15:07:42 +0200

Hierbij een bewerking van jouw database met een relatie-tabel, twee queries en daarop gebaseerde formulieren. In de relatie-tabel is zowel een "van-naar" als een "naar-van" veld opgenomen. Dat maakt het mogelijk om de relatie op twee manieren te lezen: "Persoon A is de echtgenoot van Persoon B" OF "Persoon B is de echtgenote van persoon A" Ik hoop dat je er wat aan hebt! C:\fakepath\15982059931313801.odb

Als je de data in de database niet kunt lezen (wat mij steeds niet lukt met gedownloade database...) nog even een aanvullende opmerking: 1. gebruik bij het maken van een relatie niet de muis om een relatie te "tekenen" maar het relatie-symbool in de menu-balk. 2. kies de eerste relatie van persoon naar relatie met de juiste velden en druk op OK . Je ziet dan een 1 : N relatie verschijnen, 3. herhaal nu hetzelfde voor de tweede relatie en je zult zien dat er een tweede 1 : N relatie verschijnt.

Vergeet niet een primary sleutel aan te maken voor de relatie-tabel over de twee relatie-velden (ALTER TABLE "naam relatietabel" ADD PRIMARY KEY ("sleutelveld1","sleutelveld2") (TOOLS -> SQL)C:\fakepath\relatie1.jpg

bewerken markeer ongewenst verwijderen link meer

Commentaren

Hoi Tom,

Bedankt voor je inspanning.Ik heb jouw database kunnen downloaden, maar bij openen van beide formulieren en beide queries kreeg ik de foutmelding dat de tabel 'Partners' niet gevonden werd. Die is inderdaad in het tabellenoverzicht niet te vinden. Heb jij hiervoor gewoon een kopie van de Persoon-tabel gebruikt? Dan kan ik hem even aanmaken.

Alvast dank voor je reactie.

LuukDb52 gravatar imageLuukDb52 ( 2020-09-05 01:02:09 +0200 )bewerken

Dag Luuk, Sorry voor mijn rommelige antwoorden. Zoals ik al opmerkte komen de tabel-definities en de data niet mee wanneer ik een odb meestuur.. Maar ik heb inderdaad jouw tabel-definities gebruikt. Wanneer je deze gebruikt zou e.e.a. weer moeten werken nadat de relaties tussen Persoon en Relaties zijn aangemaakt. Zie daarvoor mij vorige opmerking hierboven. De meegestuurde JPG is een voorbeeld met andere tabellen.

Tom Kuipers gravatar imageTom Kuipers ( 2020-09-05 20:21:30 +0200 )bewerken

Dag Luuk, Ik weet niet waarom de datadefinities en de data niet meekomen, Ik doe waarschijnlijk toch iets niet goed. Ik heb inderdaad jouw tabel-definities gebruikt. Als je deze weer toevoegt en de relaties aanmaakt zoals boven in het tweede deel van mijn antwoord is beschreven, zou e.e.a. moeten werken. (natuurlijk wel even wat gegevens invoeren ;-) )

Tom Kuipers gravatar imageTom Kuipers ( 2020-09-05 20:37:44 +0200 )bewerken
0

beantwoord 2020-08-13 15:52:01 +0200

LuukDb52 gravatar image

updated 2020-08-23 20:08:52 +0200

Hoi Tom,

Bedankt voor je reactie. Volgens mij heb ik precies gedaan wat je beschrijft. Zie nieuwe bijlageC:\fakepath\Foutmelding bij bewerken relatie tussen Persooo-tabel en PersoonPartners-tabel.JPG. Toch geeft Base een foutmelding hierover. Ik heb inmiddels de nieuwste versie van LO (7.0.03) op mijn laptop (Win10, met nieuwste updates) geïnstalleerd. Hoopte dat de foutmelding een bug was, die inmiddels verholpen zou zijn. Helaas dus.

Nog meer ideën?

Alvast dank (ook voor anderen die een mogelijke oplossing kunnen aandragen).

Nieuwe bijlage toegevoegd (ging niet in eerder geplaatst commentaar).C:\fakepath\Foutmelding bij bewerken relatie tussen Persoon-tabel en Partner-tabel.JPG.

20200823 Nieuwe bijlage toegevoegd: C:\fakepath\MediaCatalogus.odb

bewerken markeer ongewenst verwijderen link meer
Login/Registreer om te beantwoorden

Hulpmiddelen Vragen

1 volger

Statistieken

Gevraagd: 2020-07-14 20:35:53 +0200

Bekeken: 60 keer

Laatst bijgewertkt: Sep 03