Avatar billede ingel Nybegynder
06. april 2000 - 09:10 Der er 20 kommentarer og
1 løsning

Acces 2000 - Relationer mm

Hvordan laver man relationer mellem 5 tabeller i en database?
Alle tabeller skal udfyldes fra een formular, som skal "styres" af eet af felterne (udstillingsdato)i den ene tabel. Hvordan gør jeg det?
Det skulle gerne være ved hjælp af guider, ikke programeringssprog.
Kan nogen hjælpe??
Avatar billede uffe_kld Nybegynder
06. april 2000 - 10:06 #1
Der skulle ikke være nogen hindringer for det. Enten vælger Tools(jeg det hedder værktøjer på dansk)->Relationer og angiver dine relationer her. Eller du venter og angiver relationer i en forespørgsel, denne forespørgsel bruger som datakilde i formularen. og i forespørgelse angiver feltet med udstillingsdatoen som betingelse under udstillingsdato
Avatar billede ingel Nybegynder
07. april 2000 - 08:10 #2
Hej!
Jeg har prøvet, men jeg får besked om at relationerne ikke kan oprettes fordi felterne ikke er ens. Det er bare svært det her!!
Avatar billede uffe_kld Nybegynder
07. april 2000 - 08:48 #3
Det nødvendig at felttyperne er ens for de 2 felter, du forbinder fx. lang heltal. Det behøver felterne ikke at være når du opretter relationer under forespørgselen, dog kan du ikke kæde en streng og en tal direkte.
Avatar billede jalle Nybegynder
12. april 2000 - 22:56 #4
Det kan være nødvendigt at oprette flere forespørgsler og så skal du muligvis bruge en underformuler. En underformular bruger hvis de samme data fra een tabel kan opstå flere gange i een anden tabel (hovedtabellen i denne database. Jeg går ud fra at du tager udgangspunkt i en tabel).

Ellers må du fortælle lidt mere om relationerne, før jeg videre kan hjælpe.

Du SKAL huske at for at sammekæde to tabeller, så skal der være en primærnøgle i en tabel og en fremmednøgle i den anden tabel. (hvor primærnøglen kan opstå flere gange.
Avatar billede ingel Nybegynder
14. april 2000 - 08:44 #5
Tak for svarene, men jeg kan ikke få det til at virke
Avatar billede jgc Nybegynder
14. april 2000 - 17:20 #6
Prøv at fortælle hvilke data du har i tabellerne (bare de vigtigste feltnavne pr. tabel).

Jeg kan prøve at gætte et par af dine tabeller, så kan du se om det kan bruges:

Vi (jeg) forestiller mig en udstillingsdatabase hvor følgende skal registreres:

Udstillingens navn, det sted den foregår, navnet på en ansvarlig person, oplysninger om kunstneren bag, startdato, periode, priser (fyld selv på).

Det vil give følgende tabeller:
Udstillinger - information om navnet på udstillingen, perioden (eller datoen), entrepriser etc.

Kontaktpersoner - en navne+adresseliste over udstillingsledere

Steder - en liste med navne+adresser på stederne

Kunstnere - liste over udstillende kunstnere.

Alle ovenstående tabeller skal (bør) have en primærnøgle, for nemheds skyld laver man ofte dette som et autonummerfelt. For at kæde to tabeller sammen skal den ene tabels primærnøgle lægges over i den anden tabel (hvor den kaldes fremmednøgle).
I eksemplet ovenfor er tabellen Udstillinger en hovedtabel, med kontaktpersoner, steder og kunstnere som undertabeller. Her skal udstillingstabellen udover sine egne felter altså også indeholde ID felterne fra alle de tre undertabeller.
Er id felterne af autonummertypen skal fremmednøglerne _ikke_ være autonummer men derimod af typen "tal". I alle andre tilfælde skal fremmednøglen være præcis samme type som den primærnøgle den skal kædes sammen med.

Hvis du giver mig en mail-adresse kan jeg evt. sende dig et eksempel.

Giv ikke op - selvom det ikke er helt let, er det et stærkt værktøj når man får det lært.
Avatar billede jgc Nybegynder
14. april 2000 - 17:31 #7
Tabellerne i eksemplet kan, med fremmednøgler komme til at se således ud (felttyperne angives i []):

Udstillinger:
id_udstilling [autonummer] <-- Primærnøgle
UdstillingsNavn [tekst]
Startdato [dato]
id_sted [tal] <-- fremmednøgle til tabellen steder
id_kontaktperson [tal] <-- fremmednøgle til tabellen kontaktpersoner
id_kunstner [tal] <-- fremmednøgle til tabellen kunstnere
.. (flere felter efter behov)

Steder
id_sted [autonummer] <-- Primærnøgle
Stednavn [tekst]
Stedadresse [tekst]
..

Kontaktpersoner:
id_kontaktperson [autonummer] <-- Primærnøgle
KontaktNavn [tekst]
KontaktAdresse [tekst]
..

Kunstnere:
id_kunstner [autonummer] <-- Primærnøgle
Kunstnernavn [tekst]
Kunstneradresse [tekst]
..


PS: Jeg vil ikke anbefale at bruge datofelter til sammenkædninger/fremmednøgler. Access gemmer nemlig automatisk datoer med klokkeslet, helt ned til sekunderne. Derfor vil Access ikke se 2 poster oprettet samme dag, men efter hinanden som hørende sammen.
Avatar billede ingel Nybegynder
17. april 2000 - 22:28 #8
Tak for alle forslagene, men jeg kan ikke få formularen til at virke, det er noget med forbindelsen mellem tabellerne. Desværre har jeg skrevet udstillingsdato, der skulle have stået udlejningsdato, men det er vel ligegyldigt i den forbindelse?
Mon der var en af jer der kan rette min database til, hvis jeg sender den?
Hilsen Ingel
Avatar billede jgc Nybegynder
18. april 2000 - 11:00 #9
Det er måske nok den nemmeste løsning - men det lærer du jo ikke noget af ;-).
Prøv (hvis du orker) at fortælle lidt mere detaljeret hvad Access skriver som fejlmeddelelse, og hvad du gør når fejlen opstår. Du kan også begynde med at fortælle os dit tabeldesign: Højreklik på tabellerne og vælg designvisning og skriv ned (her) hvad hvert felt hedder, hvilken felttype det har og om det er primærnøgle.
Navnet på felterne står i første kolonne, felttypen i anden, og hvis et felt er primærnøgle er det markeret i den grå margen til venstre med en lille nøgle. Hvis du har mange felter, behøver du ikke nødvendigvis at skrive dem alle, men skriv altid en evt. primærnøgle, samt de felter du gerne vil kæde sammen med andre tabeller.

mvh /Jgc
Avatar billede jalle Nybegynder
19. april 2000 - 00:22 #10
Først og fremmest skal du tilføje et ID felt som skal være autonummeret og primærnøgle. Her kan du få lidt problemer med dataene, men kan løses med at tilføje data i ID-feltet.

Derefter tilføjer du i en fremmed tabellen "Tabelnavn_ID", feltegenskaben her skal være TAL og indekses gøres til ja, tillad dubbelter. Brug jgc-s eksempel og følg det, men HUSK at du aldrig må bruge en dato som primærnøgle.
Avatar billede ingel Nybegynder
21. april 2000 - 17:40 #11

Hej her er det I efterspurgte, håber jeg har forstået det rigtigt??


Kundetabel
KundeId (autonr) -Firmanavn (tekst) -Efternavn (tekst) -Postnr (tekst) -Bynavn (tekst)


Postnr tabel
Postnr (tal) -By. (tekst)


Produkttabel
ProduktId (autonr) -Produktnavn (tekst) -Løbenr. (tekst)


Reklame
ReklameId (autonr) -Annoncemåde (tekst)


Kontrakttabel
KontraktId (autonr) -KundeId (tal) -ProduktId (tal) -ReklameId (tal) -RegistrerDato (dato og klokkeslet) -UdlejningsDato (dato og klokkeslet) -LevAdresse (tekst) -LevPostnr (tekst) -LevBy (tekst)



Der kommer en fejlmeddelelse om egenskaberne skal være ens.

Mvh ingel

Avatar billede jgc Nybegynder
22. april 2000 - 12:32 #12
Hvis du vil kæde Kundetabel og Postnr tabellerne sammen, skal fællesfeltet ganske rigtigt være af samme type.

I din Kundetabel har du "Postnr (tekst)", mens du i Postnr tabellen har "Postnr (tal)". Her skal du rette én af dem. Hvis du får brug for udenlandske postnumre vil jeg anbefale at lade postnr-feltet være af tekst-type - så kan du også skrive N-3423 etc.
Du bør endvidere tjekke om postnr-feltet i Postnr tabellen er primærnøgle. Det betyder at hvert postnummer kun kan stå i én række, og er forudsætningen for at du kan lave sammenkædningen fra Kundetabellen.

Hvis du åbner postnr-tabellen i designvisning, skal der være et lille nøgle-ikon til venstre for postnr-feltet. Er der ikke det, kan du højreklikke i det grå område og klikke på "Primærnøgle" i den menu der kommer frem.

Du kan i øvrigt også kæde Kontrakttabellen sammen med postnummertabellen, således at dit -LevBy felt bliver erstattet af et opslag i postnummertabellen.
Avatar billede ingel Nybegynder
06. maj 2000 - 23:03 #13
Hej igen.
jeg er ikke en ørn til dette her. Det er lykkedes med egenskaberne. Nu er problemet: jeg kan ikke finde ud af at udfylde alle tabellerne fra den samme formular. Hvordan gør jeg det????? Håber meget at I vil hjælpe mig, jeg er kørt helt sur i det.
M v h
ingel
Avatar billede jgc Nybegynder
08. maj 2000 - 13:05 #14
Nu er det jo egentlig et nyt spørgsmål (som derfor burde oprettes og tildeles point) - men hvad pokker...

Det er ikke sikkert at det er en god idé at udfylde alle tabeller fra én formular. Nøjes med de tabeller/felter der hænger logisk sammen.
Når du skal bruge felter fra flere tabeller på én gang, skal du lave en forespørgsel. For at tage et simpelt eksempel: I din form vil du sikkert gerne have vist både postnummer og by på dine kunder. postnummeret står i kundetabellen mens bynavnet skal hentes fra postnummertabellen. Du laver en ny forespørgsel og vælger både kunde og postnummertabellerne som kilder. Hvis dine relationer er defineret korrekt, vil Access selv sørge for sammenkædningen - du skal bare vælge hvilke felter der skal med - formentlig vil det være alle fra kundetabellen (husk at du kan bruge "kunder.*" = alle felter i kunder), samt bynavn fra postnummertabellen (du har ikke brug for postnummerfeltet mere end én gang).

Skal du lave forms med lister - f.eks. en form der viser alle kontrakter for en kunde, bliver det sværere. Prøv at kigge i hjælpfilen, samt i eksempeldatabasen "Northwind.mdb", hvor du kan få mange gode idéer.

Avatar billede ingel Nybegynder
09. maj 2000 - 13:59 #15
Selv om jeg kun behøver at udfylde 2 tabeller fra min formular (kundetabel og kontrakttabel) kan jeg ikke få det til at virke, jeg bliver vist nødt til at opgive mit forehavende............
M.v.h.
ingel
Avatar billede ktp Nybegynder
10. maj 2000 - 13:48 #16
Prøv at købe et hæfte om relationsdatabaser, så du kan få forståelsen af hvad det går ud på når du skal oprette relationer og nøgler.
Avatar billede fie Nybegynder
15. maj 2000 - 09:55 #17
Tak for svarene nu virker det
ingel
Avatar billede ingel Nybegynder
15. maj 2000 - 10:20 #18
Selv tak ingel. Det er nu ikke mig; men alle specialisterne du skal takke.
Jeg tror også at jeg kan få min til at virke snart, så her komme nogle point til jer
Avatar billede jgc Nybegynder
15. maj 2000 - 11:14 #19
ingel: Du skal acceptere ét eller flere af svarene før der gives point.
Avatar billede jgc Nybegynder
15. maj 2000 - 11:16 #20
Til fie: Hvad med dit eget spørgsmål (http://www.eksperten.dk/spm.asp?id=16820) - har du fået det til at virke?
Avatar billede ingel Nybegynder
12. august 2000 - 21:40 #21
Tak alle sammen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester