02. februar 2002 - 09:41Der 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 ?
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
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 ?.
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.
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.
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;
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.