06. april 2000 - 09:10Der 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??
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
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.
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.
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.
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.
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
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.
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.
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.
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
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.
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
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
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.