10. maj 2000 - 15:17Der er
19 kommentarer og 1 løsning
Hente data
Jeg har en database med sogn, herred og amt. Jeg har sat databasen til at jeg can slå op "look-up" fra en anden sognedatabase hver gang jeg skal indtaste et sogn. Desværre er jeg ikke klogere end at jeg skal slå den samme record op i herred feltet, og i amt feltet, altså 3 opslag på den samme ting for at indsætte disse automatisk. Er der en her, der kan fortælle mig, hvordan jeg (evt. i form) ved at slå et sogn op og vælge det, kan lade access indsætte det tilhørende amt og herred i de respektive felter automatisk således at jeg ikke skal lave 3 opslag for den ene record? Dette har irriteret mig meget - også at jeg ikke selv kan løse det, men jeg ved jo at eksperterne sidder netop her i panelet :)
Jeg antager, du har tre tabeller, der (noget forenklet) ser sådan her ud:
1) Sogn { SID, Navn } 2) Herred { HID, Navn } 3) Amt { AID, Navn }
Hvis du på Sogn-tabellen har en reference til Herred (altså bare et felt, der indeholder HID på det herred, det givne sogn tilhører) og ligeledes på Herred har en reference (et AID) på det amt, som herredet tilhører, så kan du fx bruge denne SQL til at få navnet på sognet, herredet og amtet ud fra sognets id (SID)
SELECT s.navn,h.navn,a.navn FROM Sogn s, Herred h, Amt a WHERE SID=<sognets id> AND s.hid=h.hid AND h.aid=a.aid;
Hej Roadkill Nej, jeg har alt i samme database, en såkaldt sognedatabase. Men det bruger er en indlægsdatabase, hvor jeg ved at indtaste sognet, får et opslag fra sognedatabasen. Så skriver jeg de første par bogstaver, og kan nu vælge recorden fra sognedatabasen, indsat i indlægsdatabasen, men det samme skal jeg så gøre med herred og amt - altså tre opslag på den samme record i sognedatabasen. Jeg kunne forstille mig at når man allerede står på den record man ønsker fra sognedatabasen, også kunne få den til at udfylde felterne amt og herred, uden at skulle foretage opslaget her igen fra indlægsdatabasen. Forstår du hvad jeg mener, ellers vil jeg gerne uddybe det nærmere..
ja, selve sognedatabasen bruges kun til check af, at det indtastede sogn findes, altså til opslag. Tabellen med indlæg er den der indtastes i, såsom indlæggers navn adresse bla bla, dernæst selve stedet, altså sognet. Jeg har kun sognet at gå ud fra, og bruger derfor sognetabellen (sorry, jeg bliver ved med at anvende ordet database hvor jeg faktisk mener tabel) som opslag for at checke at det findes, hvorefter jeg så indsætter herred og amt for at have den totale stedbetegnelse. Senere sorteres disse data ud i et index med amt, herred og sogn, samt indlæggers nummer.
I opslaget får jeg så oplyst sogn, herred og amt fra sognetabellen. Jeg lader den så indsætte sognets navn i sognefeltet. Men i stedet for at skrive amt og herred manuelt, ville det spare mig tid hvis jeg også kunne indsætte amt og herred fra opslaget jeg netop foretog under sogn.
Du har formentlig slet ikke brug for at indtaste eller registrere Amt og Herred i din Indlægstabel. Hvis du skriver sognet ind her, fortæller Sognebasen - altså den du bruger til opslag - jo hvilket Amt og Herred det pågældende sogn hører til. Så slet felterne med Amt og Herred fra din indlægsbase, så kan du nøjes med at indtaste sognet.
Når du så skal bruge oplysningerne om Amt og Herred - enten i en rapport eller i en form - så henter du dem nemt ved en forespørgsel.
OK, så er jeg med. Når du anvender en ComboBox kan du anvende Column funktionen. Eksempel: Du har Sogn, Amt og Herred i samme tabel, du vælger som den første kolone Sogn i ComboBox, hvis du medtager Amt og Herred i den samme forespørgelse vil Sogn være Column(0), Amt vil være Column(1) og Herred vil være Column(2). Feltetnavnet med sognet (ComboBox) vil nu indeholde alle dine oplysninger. Hvis f.eks. du vil se Amt på det felt hvor Amt skal vises vil din kontrolelementkilden være =SognComboBox.Column(1) og Herred vil være =SognComboBox.Column(2). Prøv det !!!! PS: Husk at angive hvor mange column du anvender (3) på din ComboBox, gør evt. de to sidste usynlige med breden 1 cm;0 cm;0 cm.
Til JGC: Nej, jeg er nødt til at have alle tre felters data med - omåske også mere for overskuelighedens skyld og for at være sikker på at jeg har kontrolleret at det er det rigtige amt og herred jeg befinder mig i.
>KPT: jeg kan se at du er inde på noget at det rigtige og at du er sikker på at det virker, men ville du være flink at fortælle mig hvor det er, jeg skal indsætte f.eks. "=SognComboBox.Column(2)" henne. Skal felterne amt og herred være almindelige tekstfelter uden opslag, og hvis ja, hvor skal ovenstående linie så placeres i sogn-feltet? ..under generelt (hvor?) eller under opslag? .. jeg er temmelig nybegynder hvad angår access :(
For overskuelighedens skyld eller for kontrollen er det lige meget. Hvis du indtaster direkte i tabellen har du ret - så kan du ikke se amt + herred. Men hvis du laver en form, kan du sagtens få vist de relevante oplysninger, lige så snart du har indtastet et sogn. Det svarer fuldstændigt til at indarbejde en postnummertabel i en adresseliste. Jeg gemmer aldrig bynavnet sammen med resten af adresseoplysningerne - det bør ligge sammen med postnumrene i postnummertabellen. Men i min form vil jeg selvfølgelig have vist både postnummer og bynavn - så jeg henter postnummeret fra adressetabellen og bynavnet fra postnummertabellen. Lige så snart jeg har indtastet et postnummer, dukker bynavnet op i min form - så jeg har da overskuelighed nok.
JGC: ok, jeg ved hvad du mener, da du selvfølgelig linker postnummer fra postnr.tabellen til din tabel. Men hvad med relationerne så, der findes f.eks. 4 sogne med navnet Astrup, og jeg får måske alt ialt indtastet 20 Astrup i indlægstabellen, hvordan ved du at det er det rigtige sogn du vælger? Så på en eller anden vis skal jeg sikre mig at det er det rigtige sogn (+ herred og amt) jeg har fat i....
I dit opslag må du så definere mere end én synlig kolonne. Hvis der f.eks. gælder at i et herred ikke kan være flere sogne med samme navn, kan du definere dit opslag således at du får vist både sogn og herred.
Ups - jeg læste vist ikke dit spørgsmål helt. Med hensyn til relationer kommer det an på hvordan din amt-herred-sogn tabel er defineret.
Enten har du et dedikeret id-felt (f.eks. et sognenummer), der entydigt fastslår hvilket sogn der arbejdes med. Så skal din egen tabel (indlægstabellen) indeholde dette sognenummer, og så er både sognenavnet, amts- og herredoplysningerne hentet fra amt-herred-sognetabellen.
Alternativt er primærnøglen i amt-herred-sogn en kombination af herred og sogn eller måske amt, herred og sogn. I det tilfælde kan du ikke lave en entydig relation uden at bruge alle nøglefelterne.
JGC: Jo, hvert sogn har et sognenummer. Men jeg kan jo ikke alle disse udenad, ej heller indtaste dem for at vælge det rette sogn, da jeg så skulle have en liste, og det er for at gøre det så enkelt som muligt at jeg selv mente at en kombobox var det nemmeste, da jeg her med f.eks. 3 kolonner vist ville være sikker på at vælge rigtigt, men blot håbede det var muligt via mit valg at udfylde de 2 resterende felter automatisk (herred og amt).
Du skal bestemt heller ikke kunne sognenumrene i hovedet. Access skal bare bruge dem til at identificere præcis hvilket sogn du vil have fat i. Opslaget kan som nævnt bringes til at vise flere kolonner - eksempelvis sogn + herred - så du skal stadigvæk bare indtaste navnet på sognet, og så evt vælge mellem flere herreder.
Vedr. ComboBox definationen. Den skal dannes på din indtasningsformular. Du kan sende din email adresse til mig Så skal jeg lave et eksempel. Bruger du Access 2000 eller 97 ? Min e-mail er: ktp@mail.dk
Jeg bruger for øvrigt access2000 KPT :-). Glemte at fortælle dig det i emailen.
Synes godt om
Ny brugerNybegynder
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.