03. juni 2002 - 12:12Der er
16 kommentarer og 1 løsning
Hægtet liste eller lignende
Jeg har en masse data liggende i en organisationsstruktur i Access, hvor jeg skal tilkendegive hvem der "ejer" en given post, således at der kan genereres et organisationsdiagram. Visio 2002 laver diagrammet udfra data i Access... No problemo... Men jeg har behov for en form for hægtet liste til både at vise hvem der er "far" til en given post, samt vise hvem den givne post er "far" til.. Altså en form for træstruktur. Når jeg opretter en person, vælger jeg også hvem der er "far" til denne, altså hvem der er over ham i organisationen. Kan man så vha. VB el. lign. få Access til automatisk at sige at faren ejer "barnet"? Således at der automatisk laves en reference fra i farens post til barnet, når man laver en reference fra barnet til faren.. Does this make any sense?
Dette skal gerne, ifølge mit meget begrænsede kendskab til java, virke som en form for hægtet liste, hvor man kan sige this.child = ??? eller this.child.child = ???
Hi Well you could use the treeview control to display the information but it is ging to take a bit of programming to traverse down (up) the tree to get he right information
>> terry Jeg kan lave org. charts i Visio ret nemt, så jeg tror ikke at jeg har lyst til at forsøge mig med treeview.. Ellers tak for tilbudet. >> thomasjepsen Jeg ved godt hvem der er "far".. Det erklærer jeg når jeg opretter posten. Jeg vælger "Owned By" i en dropdown box. Men jeg vil gerne have den til at lægge barnets ID op i faren, når jeg vælger "Owned By". Visio skal bruge ejeren til at lave diagrammet udfra, men jeg vil gerne have at vide hvem "faren" er far til, altså det omvendte - helst ved kun at definere relationen den ene vej.. Pseudo: If EjesAf=ParentID Then Parent.Ejer=ChildID U.K.
Du har altså ét felt, som angiver "Owned By" ! Så skal du altså bare lave den omvendte funktion:
Public Function GetChild(Parent as Long) as Long GetChild= DLookup("[ID]","DinTabel","[Owned By] = " & Parent) End Function
Men sig mig: Kan der i princippet ikke være flere 'fædre' til det samme 'barn'? Kan flere poster ikke have samme værdi stående i "Owned By"? Eller VED du bare, at det ikke sker?
>>thomasjepsen I diagrammet vil én far kunne have mange børn, men et barn har ALTID kun én far..(en ansat har kun én chef, men chefen har mange ansatte) Men helt specifikt skal jeg kunne generere mange forskellige diagrammer, da der er mange poster (ca. 125), så af hensyn til overskuelighed, laver jeg queries, der kun viser ansatte i f.eks. USA (disse kan godt have en chef i DK).. Men hvis jeg laver en query, der kun viser US-ansatte, får jeg ikke den danske mellemleder med.. Derfor siger jeg WHERE Land=US OR (ME.Child.Land=US - det er jeg lidt usikker på, hvordan jeg skal gøre??) Så bør den i teorien tage danskeren med, hvis han har US-ansatte? Derfor skal jeg altså vide hvilke børn en far har.. Hjalp det?
IF you are you only interested in finding the children to a parent then make a query where you make a join between the primary key and foreign key. Select the fields you want and then in the criteria field for the child.land enter US.
Det er oftest således, at jeg skal lave charts for f.eks. en enkelt afdeling - for at bevare overblikket. Derfor laver jeg queries, der udvælger f.eks. Marketing: Select... From.... Where Name=Marketing OR Person.OwnedBy=Marketing (problemet er det næste led) OR Person.OwnedBy.OwnedBy=Marketing (altså 3., 4. og 5. led) M.a.o. Vis mig ALT under Marketing.. Men da 3, 4 og 5 led ikke er direkte OwnedBy Marketing, giver det mig en masse problemer..
1) du kan lave en vba procedure der giver dig ALLE parrent 2) du kan vedligeholde et felt i din db - eks Mother der angiver hvilken rod den aktuelle node tilhører
Jeg fik bedst performance med løsning 2) - selvom det ikke er korekt normalisering.
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.