Avatar billede ugotabe_kidding Nybegynder
03. juni 2002 - 12:12 Der 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 = ???
03. juni 2002 - 12:37 #1
Kan du ikke bare lave en VBA-funktion som fortæller dig hvem der er "far".

Public Function GetParent(Child as Long) as Long
  GetParent = DLookup("[Far]","DinTabel","[ID] = " & Child)
End Function

[Far] er navnet på "far"-feltet i tabellen
"DinTabel" er navnet på tabellen
[ID] er dit nøglefelt i tabellen


Derved vil du altid kunne spørge:
GetParent(3424)
eller
GetParent(GetParent(3445))
Avatar billede terry Ekspert
03. juni 2002 - 12:41 #2
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
Avatar billede ugotabe_kidding Nybegynder
03. juni 2002 - 12:52 #3
>> 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.
03. juni 2002 - 13:04 #4
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?
Avatar billede terry Ekspert
03. juni 2002 - 13:14 #5
Something I dont quite understand here!
"Men jeg vil gerne have den til at lægge barnets ID op i faren, når jeg vælger "Owned By". "

When I reda this it sounds as though a "father" can only have ONE child! Is that correct?
Avatar billede ugotabe_kidding Nybegynder
03. juni 2002 - 13:26 #6
>>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?
03. juni 2002 - 13:34 #7
Men hvis en Parent kan have flere Children, så kan du jo aldrig unikt finde ét Child til en given person!

Men du kan lave en forespørgsel, som udtrækker det hele:

SELECT Personer.Navn AS chef, Personer_1.Navn AS Ansat
FROM Personer INNER JOIN Personer AS Personer_1 ON Personer.ID = Personer_1.OwnedBy;
Avatar billede terry Ekspert
03. juni 2002 - 13:37 #8
Which tables/fields do you have?

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.
Avatar billede ugotabe_kidding Nybegynder
03. juni 2002 - 13:43 #9
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..
Avatar billede nih Novice
03. juni 2002 - 13:56 #10
Jeg har engang 'leget' lidt med samme problem.

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.

Niels
Avatar billede terry Ekspert
03. juni 2002 - 15:11 #11
any chance of seeing some tables and data?
Avatar billede ugotabe_kidding Nybegynder
03. juni 2002 - 15:18 #12
>>>terry
Øjeblik... Så skal jeg være der..
Avatar billede ugotabe_kidding Nybegynder
03. juni 2002 - 15:31 #13
Jeg kan sende dig DB'en.. Det er lidt svært at liste alle tabeller mv. her..
Avatar billede terry Ekspert
03. juni 2002 - 15:41 #14
OK! dkTeBrSa@europe.lego.com
Zip it please if you can
Avatar billede ugotabe_kidding Nybegynder
03. juni 2002 - 15:44 #15
Sendt
Avatar billede terry Ekspert
03. juni 2002 - 15:52 #16
received
Avatar billede ugotabe_kidding Nybegynder
28. juli 2002 - 11:49 #17
Lukker spg.
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