18. april 2007 - 22:54Der er
9 kommentarer og 1 løsning
Spørgsmål
Jeg skal have et skema, hvor man tilføjer nogle navne, adresse og andre personlige oplysninger i en sql database.
På en oversigt skal man kunne se disse oplysninger, hvor oplysningerne bliver sorteret efter udfyldingsdato af skemaet.
En gang i mellem ryger nogle ud af oversigten, dvs slettes af aministratoren. Der skal være en kolonne i oversigten (rækkefølge kolonne), hvor der altid vises et nummer (1,2,3,4 osv.) for tilbageliggende personer. Denne kolonne skal opdateres på denne måde: Hvis man sletter fx personen, der har rækkefølgenummer 8, så øvrige poster i denne kolonne bliver opdateret, sådan at nummer 9 får nu nummer 8 tildelt og vist osv. Dvs. rækkefølge-kollonen skal altid være fra 1 til uendelige (måske 500), og der skal ikke være nogen hul i rækkefølgen, hvis jeg udtrykker mig rigtigt.
Jeg ved ikke hvordan jeg skal løse denne opgave. Fx skal jeg oprette 2 databaser eller en, og om løsningen skal en sql-løsning eller løsningen skal kodes i asp.net?
Der er jo mange måder at løse den opgave på. Umiddelbart ville jeg vælge at benytte en SQL server eller en access database under ASP.NET
Jeg har forstået det sådan, at du blot skal have en fortløbende tæller på de personer der er i databasen pt. Altså en unik ID gør sig jo bedst hvis du ikke ændrer den når dørst den er oprettet. Personligt ville jeg nok ikke lave en fortløbende tæller i databasen, men nærmere give hver record et nummer når jeg opretter visningen i asp.net delen.
Tak for svaret. Det er rigtigt, at jeg skal have en fortløbende tæller af personerne i databasen på ethvert tidspunkt. Jeg er helt ny i sql. Men mener du at løsningen er at oprette en stored procedure, og kan du fortælle mig hvad du mener med "en unik id...."? Hvordan skal jeg give hver record et nummer. Jeg bliver glad hvis du kommer med nogle koder/eksempler.
Hver post i en tabel bør have sin egen unikke ID. Denne id kan du bruge når andre tabeller skal referere til posten og derfor skal den helst ikke ændres når du sletter førliggende poster.
Overvej derfor om det også er nødvendigt at have en tæller der ændres hver gang du tilføjer og sletter poster.
Hvis du så SKAL have en fortløbende tæller, er der 3 måder at gøre det på. 1. Du kan have en kolonne i din database du opdaterer hver gang der tilføjes og sletter poster. Hvis du har mange poster og meget trafik i din database vil jeg IKKE anbefale denne metode. 2. Du kan lægge en pseudo-kolonne i din forespørgsel til databasen. Også en lidt besværlig metode, der kræver en såkaldt sub-query. Se eksempel: SELECT emp_id, lname, fname, job_id, (SELECT COUNT(*) FROM employee e2 WHERE e2.lname <= e.lname AND e2.job_id = 10) AS rownumber FROM employee e WHERE job_id = 10 ORDER BY lname
3. Du kan bare lave din forespørgsel og så lægge numre på kolonnerne i din asp.net applikation.
Det jeg mente med nummer 3, var at du simpelthen bibeholdt den ikke-fortløbende tæller i databasen, men så viste posterne med en fortløbende tæller i ASP delen.
Tabellen : 1 aa 2 bb 5 cc
I HTML delen viser du så blot en counter der tæller op for hver post. 1 : aa 2 : bb 3 : cc
Du kan jo sagtens have en reference til det originale index alligevel <div Index="5" onclick="alert(this.Index);">3 : cc</div>
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.