|
| Sammenkædning i Access Fra : Kurt G |
Dato : 06-03-10 08:32 |
|
Access2007.
Jeg er ved at lave en database over bestyresen for en forening, og her går
ganske mange personer jo igen år efter år.
Jeg har lavet en tabel med alle navne og en anden med alle bestyrelsesposter
samt årstal.
For mig at se er det en mange til mange relation, der skal bruges.
Imidlertid kan jeg ikke få det til at virke; når jeg vil danne relationer,
dannes der en ny (måske kun et spejl) af persontabellen for hvert felt i
bestyrelsestabellen.
Hvordan får jeg det til at virke?
Mvh Kurt
| |
Jan Kronsell (06-03-2010)
| Kommentar Fra : Jan Kronsell |
Dato : 06-03-10 11:18 |
|
Kurt G wrote:
> Access2007.
> Jeg er ved at lave en database over bestyresen for en forening, og
> her går ganske mange personer jo igen år efter år.
> Jeg har lavet en tabel med alle navne og en anden med alle
> bestyrelsesposter samt årstal.
> For mig at se er det en mange til mange relation, der skal bruges.
> Imidlertid kan jeg ikke få det til at virke; når jeg vil danne
> relationer, dannes der en ny (måske kun et spejl) af persontabellen
> for hvert felt i bestyrelsestabellen.
> Hvordan får jeg det til at virke?
>
> Mvh Kurt
Du skal have tre tabeller.
En med personerne, en med besyrelsesposterne og så en trejde tabel med
nøglerne fra de to andre samt årstallet.
Så laver du en én til mange relation mellem hver af de to første og den
sidste. Denne er en såkaldt relationstabel, som "bærer" mange til mange
relationen.
Det er i den sidste tabel, at du registrer, hvem der har besat hvilken post
hvornår.
Når du så skal bruge disse informationer, henter du dem ud med en
forespørgsel, der henter nøgleinformationen fra relationstabellen og de
tilhørende informationer, fx navne på bestyrelsesmedlemmer fra
persontabellen, postens betegnelse mm. fra bestyrelsesposttabellen og endeli
årestallet fra relationstabellen.
Jan
| |
Kurt G (06-03-2010)
| Kommentar Fra : Kurt G |
Dato : 06-03-10 12:44 |
|
Tak for svaret, det vil jeg prøve, om jeg kan få til at virke.
Mvh Kurt
"Jan Kronsell" <kronsell(nomorespam)@adslhome.dk> skrev i en meddelelse
news:4b922bae$0$36567$edfadb0f@dtext01.news.tele.dk...
> Kurt G wrote:
>> Access2007.
>> Jeg er ved at lave en database over bestyresen for en forening, og
>> her går ganske mange personer jo igen år efter år.
>> Jeg har lavet en tabel med alle navne og en anden med alle
>> bestyrelsesposter samt årstal.
>> For mig at se er det en mange til mange relation, der skal bruges.
>> Imidlertid kan jeg ikke få det til at virke; når jeg vil danne
>> relationer, dannes der en ny (måske kun et spejl) af persontabellen
>> for hvert felt i bestyrelsestabellen.
>> Hvordan får jeg det til at virke?
>>
>> Mvh Kurt
>
> Du skal have tre tabeller.
>
> En med personerne, en med besyrelsesposterne og så en trejde tabel med
> nøglerne fra de to andre samt årstallet.
> Så laver du en én til mange relation mellem hver af de to første og den
> sidste. Denne er en såkaldt relationstabel, som "bærer" mange til mange
> relationen.
>
> Det er i den sidste tabel, at du registrer, hvem der har besat hvilken
> post hvornår.
>
> Når du så skal bruge disse informationer, henter du dem ud med en
> forespørgsel, der henter nøgleinformationen fra relationstabellen og de
> tilhørende informationer, fx navne på bestyrelsesmedlemmer fra
> persontabellen, postens betegnelse mm. fra bestyrelsesposttabellen og
> endeli årestallet fra relationstabellen.
>
> Jan
>
| |
Kurt G (06-03-2010)
| Kommentar Fra : Kurt G |
Dato : 06-03-10 14:37 |
|
"Jan Kronsell" <kronsell(nomorespam)@adslhome.dk> skrev i en meddelelse
news:4b922bae$0$36567$edfadb0f@dtext01.news.tele.dk...
> Kurt G wrote:
KLIPPET
> Du skal have tre tabeller.
>
> En med personerne, en med besyrelsesposterne og så en trejde tabel med
> nøglerne fra de to andre samt årstallet.
> Så laver du en én til mange relation mellem hver af de to første og den
> sidste. Denne er en såkaldt relationstabel, som "bærer" mange til mange
> relationen.
>
> Det er i den sidste tabel, at du registrer, hvem der har besat hvilken
> post hvornår.
>
> Når du så skal bruge disse informationer, henter du dem ud med en
> forespørgsel, der henter nøgleinformationen fra relationstabellen og de
> tilhørende informationer, fx navne på bestyrelsesmedlemmer fra
> persontabellen, postens betegnelse mm. fra bestyrelsesposttabellen og
> endeli årestallet fra relationstabellen.
>
> Jan
Jeg bliver nok nødt til at vise, hvad jeg har gjort, for at komme videre.
Jeg havde oprindelig to tabeller:
PERSONER med følgende felter:
Id : Auto
Navn : Tekst
By : Tekst
BESTYRELSEN:
Id : Auto
Aar : Tal
Formand : Tal
Næstformand : Tal
Sekretær : Tal
Kasserer : Tal
M1 : Tal
M1 : Tal
M3 : Tal
M4 : Tal
M5 : Tal
Sup1 : Tal
Sup2 : Tal
Rev1 : Tal
Rev2 : Tal
Arkivar : Tal
Oprindeligt havde jeg forstillet mig, at jeg kunne nøjes med PERSONER og
BESTYRELSEN.
Så ville jeg i BESTYRELSEN f.eks. i Formand skrive et 1-tal for at angive
navn 1 i PERSONER som formand det pågældende år. Jeg ville altså bruge
PERSONER som opslag til at indsætte navnene.
Hvordan kan det lade sig gøre?
Mvh Kurt
| |
Jan Kronsell (06-03-2010)
| Kommentar Fra : Jan Kronsell |
Dato : 06-03-10 17:11 |
|
Kurt G wrote:
> "Jan Kronsell" <kronsell(nomorespam)@adslhome.dk> skrev i en
> meddelelse news:4b922bae$0$36567$edfadb0f@dtext01.news.tele.dk...
>> Kurt G wrote:
> KLIPPET
>> Du skal have tre tabeller.
>>
>> En med personerne, en med besyrelsesposterne og så en trejde tabel
>> med nøglerne fra de to andre samt årstallet.
>> Så laver du en én til mange relation mellem hver af de to første og
>> den sidste. Denne er en såkaldt relationstabel, som "bærer" mange
>> til mange relationen.
>>
>> Det er i den sidste tabel, at du registrer, hvem der har besat
>> hvilken post hvornår.
>>
>> Når du så skal bruge disse informationer, henter du dem ud med en
>> forespørgsel, der henter nøgleinformationen fra relationstabellen og
>> de tilhørende informationer, fx navne på bestyrelsesmedlemmer fra
>> persontabellen, postens betegnelse mm. fra bestyrelsesposttabellen og
>> endeli årestallet fra relationstabellen.
>>
>> Jan
>
> Jeg bliver nok nødt til at vise, hvad jeg har gjort, for at komme
> videre. Jeg havde oprindelig to tabeller:
>
> PERSONER med følgende felter:
> Id : Auto
> Navn : Tekst
> By : Tekst
>
> BESTYRELSEN:
> Id : Auto
> Aar : Tal
> Formand : Tal
> Næstformand : Tal
> Sekretær : Tal
> Kasserer : Tal
> M1 : Tal
> M1 : Tal
> M3 : Tal
> M4 : Tal
> M5 : Tal
> Sup1 : Tal
> Sup2 : Tal
> Rev1 : Tal
> Rev2 : Tal
> Arkivar : Tal
>
> Oprindeligt havde jeg forstillet mig, at jeg kunne nøjes med PERSONER
> og BESTYRELSEN.
> Så ville jeg i BESTYRELSEN f.eks. i Formand skrive et 1-tal for at
> angive navn 1 i PERSONER som formand det pågældende år. Jeg ville
> altså bruge PERSONER som opslag til at indsætte navnene.
>
> Hvordan kan det lade sig gøre?
>
Du skal have følgende tabeller:
PERSONER med følgende felter:
Id : Auto
Navn : Tekst
By : Tekst
BESTYRELSEN:
ID: Auto
Funktion: Tekst
POSTER (eller hvad du nu vil kalde den)
PersonId: Tal (long integer)
BestyrelsesId: Tal (long integer)
År: Tal
I denne tabel skal alle felterne tilsammen udgøre en sammensat nøgle.
Relationerne mellem dem går mellem Id i Poster og det tilsvarende Id i hhv.
Personer og Bestyrelsen.
I PERSONER indtaster du alle de relevante personer. Disse får nu hver sit ID
nummer
I BESTYRELSEN indtaster du de relevante besyrelsesposter: Formand,
Næstformand, Sekretær, Kasserer, M1 M2, M3, M4, M5, Sup1, Sup2, Rev1, Rev2,
Arkivar. Disse får nu hvert sit Id-nummer.
I POSTER indtaster du ID-nummeret på en på en bestyrelsespost, nummeret på
en person, og det år, vedkommende havde den pågældende post. Fortsæt med de
øvrige poster/personer i alle de aktuelle år.
Når du så vil have det vist, kan du lave en forespørgsel, som i SQL ser ud
som følger:
SELECT POSTER.År, BESTYRELSE.Funktion, PERSONER.Navn, PERSONER.Adresse,
PERSONER.By
FROM BESTYRELSE INNER JOIN (PERSONER INNER JOIN POSTER ON PERSONER.ID =
POSTER.PersonId) ON BESTYRELSE.Id = POSTER.BestyrelsesId;
Den struktur, du selv har foreslået kan du ikke få til at fungere. I hvert
fald ikke på en hensigtsmæssig måde, da den ikke giver mulighed for at
bestyrelsens sammensætning kan ændres. Mange til mange relationer skal altid
håndteres ved oprettelse af en ekstra tabel. Det gøres på designtidspunktet
som en del af normaliseringsprocessen eller direkte i en E/R diagrammering.
Jan
| |
Kurt G (07-03-2010)
| Kommentar Fra : Kurt G |
Dato : 07-03-10 12:11 |
|
Det har jeg nu prøvet og fået til at virke.
Og ikke nok med det, jeg har også fattet systemet.
Tak for hjælpen.
Mvh Kurt
"Jan Kronsell" <kronsell(nomorespam)@adslhome.dk> skrev i en meddelelse
news:4b927e7f$0$36568$edfadb0f@dtext01.news.tele.dk...
> Kurt G wrote:
>> "Jan Kronsell" <kronsell(nomorespam)@adslhome.dk> skrev i en
>> meddelelse news:4b922bae$0$36567$edfadb0f@dtext01.news.tele.dk...
>>> Kurt G wrote:
>> KLIPPET
>>> Du skal have tre tabeller.
>>>
>>> En med personerne, en med besyrelsesposterne og så en trejde tabel
>>> med nøglerne fra de to andre samt årstallet.
>>> Så laver du en én til mange relation mellem hver af de to første og
>>> den sidste. Denne er en såkaldt relationstabel, som "bærer" mange
>>> til mange relationen.
>>>
>>> Det er i den sidste tabel, at du registrer, hvem der har besat
>>> hvilken post hvornår.
>>>
>>> Når du så skal bruge disse informationer, henter du dem ud med en
>>> forespørgsel, der henter nøgleinformationen fra relationstabellen og
>>> de tilhørende informationer, fx navne på bestyrelsesmedlemmer fra
>>> persontabellen, postens betegnelse mm. fra bestyrelsesposttabellen og
>>> endeli årestallet fra relationstabellen.
>>>
>>> Jan
>>
>> Jeg bliver nok nødt til at vise, hvad jeg har gjort, for at komme
>> videre. Jeg havde oprindelig to tabeller:
>>
>> PERSONER med følgende felter:
>> Id : Auto
>> Navn : Tekst
>> By : Tekst
>>
>> BESTYRELSEN:
>> Id : Auto
>> Aar : Tal
>> Formand : Tal
>> Næstformand : Tal
>> Sekretær : Tal
>> Kasserer : Tal
>> M1 : Tal
>> M1 : Tal
>> M3 : Tal
>> M4 : Tal
>> M5 : Tal
>> Sup1 : Tal
>> Sup2 : Tal
>> Rev1 : Tal
>> Rev2 : Tal
>> Arkivar : Tal
>>
>> Oprindeligt havde jeg forstillet mig, at jeg kunne nøjes med PERSONER
>> og BESTYRELSEN.
>> Så ville jeg i BESTYRELSEN f.eks. i Formand skrive et 1-tal for at
>> angive navn 1 i PERSONER som formand det pågældende år. Jeg ville
>> altså bruge PERSONER som opslag til at indsætte navnene.
>>
>> Hvordan kan det lade sig gøre?
>>
> Du skal have følgende tabeller:
>
> PERSONER med følgende felter:
> Id : Auto
> Navn : Tekst
> By : Tekst
>
> BESTYRELSEN:
> ID: Auto
> Funktion: Tekst
>
> POSTER (eller hvad du nu vil kalde den)
> PersonId: Tal (long integer)
> BestyrelsesId: Tal (long integer)
> År: Tal
>
> I denne tabel skal alle felterne tilsammen udgøre en sammensat nøgle.
>
> Relationerne mellem dem går mellem Id i Poster og det tilsvarende Id i
> hhv. Personer og Bestyrelsen.
>
> I PERSONER indtaster du alle de relevante personer. Disse får nu hver sit
> ID nummer
> I BESTYRELSEN indtaster du de relevante besyrelsesposter: Formand,
> Næstformand, Sekretær, Kasserer, M1 M2, M3, M4, M5, Sup1, Sup2, Rev1,
> Rev2, Arkivar. Disse får nu hvert sit Id-nummer.
> I POSTER indtaster du ID-nummeret på en på en bestyrelsespost, nummeret på
> en person, og det år, vedkommende havde den pågældende post. Fortsæt med
> de øvrige poster/personer i alle de aktuelle år.
>
> Når du så vil have det vist, kan du lave en forespørgsel, som i SQL ser ud
> som følger:
>
> SELECT POSTER.År, BESTYRELSE.Funktion, PERSONER.Navn, PERSONER.Adresse,
> PERSONER.By
> FROM BESTYRELSE INNER JOIN (PERSONER INNER JOIN POSTER ON PERSONER.ID =
> POSTER.PersonId) ON BESTYRELSE.Id = POSTER.BestyrelsesId;
>
> Den struktur, du selv har foreslået kan du ikke få til at fungere. I hvert
> fald ikke på en hensigtsmæssig måde, da den ikke giver mulighed for at
> bestyrelsens sammensætning kan ændres. Mange til mange relationer skal
> altid håndteres ved oprettelse af en ekstra tabel. Det gøres på
> designtidspunktet som en del af normaliseringsprocessen eller direkte i en
> E/R diagrammering.
>
> Jan
>
>
>
>
| |
Jan Kronsell (07-03-2010)
| Kommentar Fra : Jan Kronsell |
Dato : 07-03-10 12:28 |
|
Kurt G wrote:
> Det har jeg nu prøvet og fået til at virke.
> Og ikke nok med det, jeg har også fattet systemet.
> Tak for hjælpen.
Velbekomme. Du er velkommen til at læse mere om Databasedesing her, hvis du
er interesseret.
www.kronsell.net/databasedesign.htm
Jan
| |
|
|