Avatar billede goose Nybegynder
02. februar 2002 - 09:41 Der er 4 kommentarer og
1 løsning

Sortering af personvisning

Jeg har en database hvor der indsat nogle medarbejdere med hver deres stamoplysninger. På administrationssiden vil jeg så gerne give admin muligheden for, at sorterer visningen af disse medarbejdere, altså hvem der skal stå først, anden, tredje o.s.v.
Der bliver løbende oprettet og slettet personale, og dette skal der naturligvis tages højde for.
Kan dette lade sig gøre, og evt. hvordan ?

/Goose
Avatar billede askhoej Praktikant
02. februar 2002 - 10:40 #1
Det du skal gøre er at tilføje et felt i din database, der hedder f.eks frekvens (tænk på den som en rækkefølge).

Når du opretter medarbejdere kan du så give dem en frekvens og sortere efter dem f.eks vil chefferne have høje frekvenser og piccolinen have lave frekvenser.

ID  NAVN            FREKVENS
9  Jens            1000
28  Ditte          200
87  Peter          800

håber det kan bruges ellers så sig til
Avatar billede goose Nybegynder
02. februar 2002 - 15:43 #2
Ja, jeg kan godt se logikken, og den løsning bruger jeg allerede, men det ser ikke særligt "prof" ud når administratoren skal overtage systemmet.
Jeg havde forestillet mig noget med nogle pile eller lign. som man så kunne bruge til at flytte medarbejderen op eller ned i listen, hvis du forstår hvad jeg mener ?.

/Goose
Avatar billede askhoej Praktikant
02. februar 2002 - 20:57 #3
Okay - Det kan du også sagtens gøre med frekvens, har selv haft præcis samme problematik til et stort personsystem og der brugte jeg også pile til at flytte folk op eller ned.

Du gør det ved at ved at lave en funktion (helst en stored procedure), som så bytter frekvens værdi med den overliggende person hvis der bliver rykket op og med den underliggende hvis der bliver rykket ned.

Dette har dog sine ulemper! f.eks. kan to personer ikke have samme frekvens og da man sagtens kunne forestille sig to chefer der er lige stillet hvem skal så have den højeste??

Et andet problem er ved oprettelse af nye person, her vil man typisk placere den nye person nederst altså lavest frekvens. Men hvis der så ligger 200 overliggende personer og den nye person er chef, så tager det rigtig mange tryk på pile for at flytte vedkommende op i toppen.

Hvis det er et administrationssystem med et begrænset antal brugere, ville jeg benytte mig af at man skulle indtaste en værdi - er der flere tusinde brugere så ville jeg for brugervenligheden skyld lave det med pillene.
Avatar billede goose Nybegynder
02. februar 2002 - 21:24 #4
Ja ok, men hvordan ser den funktion ud du omtaler ?
Problemmet er ikke så stort mht. tryk for at få folk op ad listen, typisk er det jo dem på "gulvet" der bliver udskiftet, hvis det er en direktør der skiftes, vil man nok typisk redigere personen i stedet.

/Goose
Avatar billede askhoej Praktikant
02. februar 2002 - 21:47 #5
Lidt hurtigt PL/SQL så kunne den se sådan her ud:

Function MovePerson(iPersonID IN Integer,bDirection IN Boolean)

iFreq Integer;

--Get current frequency
SELECT frequency INTO iFreq FROM person WHERE id = iPersonID;

--True Move person up
If bDirection Then

--Update persons
UPDATE person (frequency) VALUES(iFreq) WHERE frequency = iFreq;
UPDATE person (frequency) VALUES(iFreq+1) WHERE id = iPersonID;

--False Move person down
Else

--Update persons
UPDATE person (frequency) VALUES(iFreq) WHERE frequency = iFreq;
UPDATE person (frequency) VALUES(iFreq-1) WHERE id = iPersonID;

End If;

End;
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
Kurser inden for grundlæggende programmering

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