Avatar billede lars_hoeberg Praktikant
12. juni 2007 - 17:22 Der er 42 kommentarer og
1 løsning

Tilføj positioner

Hejsa alle.

ang. resultatsystem

Jeg har et lille problem og det kan ikke passe at den løsning jeg har i tankerne er den rigtige...

Jeg har en masse hold, som er opdelt i grupper. Hvert hold har selvfølgelig et ID der tilhører den gruppe de er placeret i. Når alle hold har fået alle resultater tastet ind, skal der skrives positioner på holdene ned i en ny tabel. Altså hvis et hold vinder sin pulje skal dette hold tilføjes med puljenummeret, samt position 1 til den nye tabel, og nummer 2 med position 2 osv.
Jeg har i alt 35 puljer og det kan vel ikke passe jeg skal oprette en forespørgsel til hver eneste gruppe?

Nogen der har en god løsning?
Avatar billede jensen363 Forsker
12. juni 2007 - 17:25 #1
Ved ikke om det løser dit problem, men det lyder som noget du kan løse med en UNION-forespørgsel
Avatar billede lars_hoeberg Praktikant
12. juni 2007 - 17:35 #2
Kan du evt lave et eksempel til mig? Felter er
PoolID, TeamID og total

Tabellen tblResults
Avatar billede jesperfjoelner Nybegynder
12. juni 2007 - 17:36 #3
Det kan vist løses meget nemmere. Skal det gøres hver gang et hold vinder eller på en gang for alle eller hvordan?
Hvordan ser din tabeller ud?
Det kan i hvert også løses med en funktion, der udfører det.
Avatar billede jensen363 Forsker
12. juni 2007 - 17:37 #4
Kan du ikke sende tabellen ( zippet ) ???

mail : ose@post.dk
Avatar billede lars_hoeberg Praktikant
12. juni 2007 - 17:48 #5
Jesper: Den skal bare køres hver gang der er tastet resultater ind, så jeg får positionerne. Jeg har en tabel med totalscore for alle holdene. Disse hold er tilknyttet et "PoolID", som er den pulje de spiller i. Jeg har altså samlet resultater for ALLE hold fra alle puljer i samme tabel. Her skal der så positioner på, alt efter hvilken placering de har fået i deres pulje
Avatar billede lars_hoeberg Praktikant
12. juni 2007 - 17:52 #6
Jensen: DB Sendt
Avatar billede jesperfjoelner Nybegynder
12. juni 2007 - 18:01 #7
Lars > Ok, hvis ikke du og jensen363 har held med det vil jeg gerne forsøge
jesperfjoelner SNABELA hotmail PUNKTUM com
Avatar billede lars_hoeberg Praktikant
12. juni 2007 - 18:06 #8
Db sendt til dig også
Avatar billede lars_hoeberg Praktikant
12. juni 2007 - 21:41 #9
Kommet frem til en evt løsning?
Avatar billede jesperfjoelner Nybegynder
12. juni 2007 - 22:21 #10
Der er kun en enkelt tabel i db'en. Har du med vilje udeladt de andre eller er de ikke lavet endnu?
Hvad er G1, G2 og HCP ?
Avatar billede lars_hoeberg Praktikant
12. juni 2007 - 22:56 #11
Der er jo kun den ene tabel der skal bruges, og som det skal laves ud fra. G1, G2 etc. Står for Game 1, Game 2 etc. Der spilles 6 Games + et handicap (hcp), som så ender i en totalscore. Det eneste relevante felt her er totalen
Avatar billede jesperfjoelner Nybegynder
12. juni 2007 - 23:17 #12
Kan du forklare hvordan der indtastes i tabellen efterhånden som kampene spilles?
Er det G1-G6 der skal lægges sammen løbende?
Avatar billede lars_hoeberg Praktikant
13. juni 2007 - 11:14 #13
Se HELT bort fra G1-G6. Det er kun totalfeltet der skal sorteres efter
Avatar billede lars_hoeberg Praktikant
14. juni 2007 - 09:52 #14
Har I fået kigget på det?
Avatar billede jensen363 Forsker
14. juni 2007 - 09:56 #15
Hej Lars ... jeg har ikke modtaget databasen
Avatar billede lars_hoeberg Praktikant
14. juni 2007 - 10:17 #16
Jeg sendte den til den adresse du skrev. Hent den her i stedet så: http://www.larshoeberg.dk/782784.zip
Avatar billede jensen363 Forsker
14. juni 2007 - 10:22 #17
Hvad er det konkret du vil ???

Jeg ser tre hold hvoraf 2 er placeret i G1 ...
Avatar billede lars_hoeberg Praktikant
14. juni 2007 - 10:31 #18
Der ligger en db nu med lidt flere data
Avatar billede lars_hoeberg Praktikant
14. juni 2007 - 10:34 #19
Der ligger i den nye 4 hold med PoolID 101 og 4 hold med PoolID 102. Der er så her jeg gerne vil have, at der skal dannes en position udfra totalfeltet, og hvor den giver position 1-4 ved de hold der er i PoolID 101 og positioner for dem i PoolID 102
Avatar billede lars_hoeberg Praktikant
14. juni 2007 - 10:37 #20
Se HELT bort fra felterne G1, G2, G3, G4, G5, G6 og HCP. De skal ikke med i nogen udregning her.
Avatar billede jensen363 Forsker
14. juni 2007 - 11:22 #21
SELECT tblTeamResults.PoolID, tblTeamResults.Total, tblTeamResults.TeamID, (Select count([Total]) from tblTeamResults AS T1 WHERE tblTeamResults.Total < T1.Total)+1 AS Placering
FROM tblTeamResults
WHERE (((tblTeamResults.PoolID)=101))
ORDER BY tblTeamResults.Total DESC;
UNION
SELECT tblTeamResults.PoolID, tblTeamResults.Total, tblTeamResults.TeamID, (Select count([Total]) from tblTeamResults AS T1 WHERE tblTeamResults.Total < T1.Total)-3 AS Placering
FROM tblTeamResults
WHERE (((tblTeamResults.PoolID)=102))
ORDER BY tblTeamResults.Total DESC;

Dette var lige hvad jeg havde i ærmet ... kan du selv gennemskue den ...
Avatar billede lars_hoeberg Praktikant
14. juni 2007 - 11:29 #22
Jah, men har jo pænt mange forskellige poolID. Dette var kun et lille udvalg. Det skal helst være sådan, så jeg ikke skal ind og definere allesammen i koden, men at den blot selv skiller dem ad udfra nummeret
Avatar billede lars_hoeberg Praktikant
14. juni 2007 - 13:00 #23
Kan det løses tror du?
Avatar billede jensen363 Forsker
14. juni 2007 - 13:27 #24
Jeg har ikke lige et bedre bud ... kræver nogen modulkodning
Avatar billede jesperfjoelner Nybegynder
14. juni 2007 - 13:33 #25
Jeg er på arbejde, men vil gerne give et bud senere i dag.
Avatar billede jensen363 Forsker
14. juni 2007 - 13:37 #26
Hej Jesper > det er længe siden :-)
Avatar billede lars_hoeberg Praktikant
14. juni 2007 - 14:23 #27
Jesper: Det lyder super. Mange tak
Jensen: Opret et svar så jeg kan give dig lidt points også, som tak for forsøget
Avatar billede jensen363 Forsker
14. juni 2007 - 14:47 #28
No need :-)
Avatar billede jesperfjoelner Nybegynder
14. juni 2007 - 15:17 #29
Hej Jensen363, ja det er sørme længe siden. Jeg venter stadig på at blive headhunted til PostDK :-) (var det ikke der du var?).
Det er pjat, men jeg har været lidt væk herfra en periode.
Avatar billede jensen363 Forsker
14. juni 2007 - 15:24 #30
Jesper > tja ... jeg venter på at blive headhuntet til alt andet en postDK :-)
Avatar billede jesperfjoelner Nybegynder
14. juni 2007 - 21:15 #31
Hoebjerg > Jeg har hentet den nye fil. Har jeg forstået det rigtigt at holdene skal rangordnes indenfor hver poolID? Altså således at alle med poolID=101 først skal behandles og rangordnes. Hvor skal deres position skrives? I en ny tabel?

f.eks.

tabel: tblPositioner
PoolID (long)
Position (long)

Jeg går ud fra at der senere kommer mange forskellige poolID'er?
Avatar billede jesperfjoelner Nybegynder
15. juni 2007 - 10:59 #32
Hvad så når der senere rettes i tabellen - skal indholdet af tblPositioner så slettes og indskrives en gang til i tabellen?
Jeg tror snildt det kan lave med en funktion, der løber resultattabellen igennem.
Avatar billede lars_hoeberg Praktikant
15. juni 2007 - 11:22 #33
Hej Jesper. Ja, det har du forstået korrekt :-) Og ja, der kommer en del forskellig poolID. Det ville være helt fint at der blot oprettes et positionsfelt til den i en ny tabel, eller bare i en forespørgsel.

Og ja, den skal helst kunne dannes løbende
Avatar billede jesperfjoelner Nybegynder
15. juni 2007 - 12:33 #34
Ok, jeg går ud fra at du har referencer til DAO 3.5 eller 3.6 i din database (standard i A2003 ikke i A2002).

Jeg har oprettet denne tabel:
tblPositioner
poolID (long)
teamID (long)
position (long)

og gjort kombination af alle felter til primær nøgle, så der ikke kan forekommer dubletter.

Jeg har lavet det, så indholdet af tblPositioner slettes til at starten i nedenstående funktion, måske vil du det anderledes, eller måske sletter du det andetsteds fra.

Denne funktion kan køres f.eks. fra en kommandknap eller lignende:

---------------------------------------------------------------

Function CreatePositions()

'Gennemløber tblTeamResults og for hver poolID rangordnes holdene og
'stillingen indskrives i tblPositioner så holdet flest point får nr. 1, næstflest får nr. 2 osv.

Dim db      As DAO.Database
Dim rs      As DAO.Recordset
Dim i      As Long
Dim poolID  As Long

Set db = CurrentDb

'sletter indhold af tblPositioner
db.Execute "DELETE * FROM tblPositioner", dbFailOnError

Set rs = db.OpenRecordset("SELECT poolID,teamID,total FROM tblTeamResults ORDER BY poolID,total DESC")
'i = 1
BeginTrans  'kan undlades men øger hastighed og sikkerhed
Do While Not rs.EOF
   
    If poolID <> rs!poolID Then
        i = 1
    End If
    db.Execute "INSERT INTO tblPositioner (poolID,teamID,position) VALUES (" & rs!poolID & "," & rs!teamID & "," & i & ")", dbFailOnError
    poolID = rs!poolID
    i = i + 1
    rs.MoveNext
Loop
CommitTrans 'kan undlades men øger hastighed og sikkerhed

rs.Close
Set rs = Nothing
Set db = Nothing

End Function

----------------------------------------------------------
Avatar billede lars_hoeberg Praktikant
15. juni 2007 - 13:41 #35
Jamen jeg må jo bukke. Det virker jo bare helt perfekt. Jeg takker mange gange :-)
Avatar billede lars_hoeberg Praktikant
15. juni 2007 - 13:44 #36
Hov, forresten. Holdene kan jo stå lige. Kan det rimelig nemt bygges ind i, at hvis 2 hold står lige skal den så sortere efter total, og derefter et felt som vi kalder "Tie"?
Avatar billede jesperfjoelner Nybegynder
15. juni 2007 - 13:57 #37
Jeg tjekker det lige..
Avatar billede jesperfjoelner Nybegynder
15. juni 2007 - 14:00 #38
Hvad skal der indskrives i feltet "position" hvis to hold er lige?
Skal de dele f.eks. en 3. plads, så placeringerne i en pool ville blive
1,2,3,3,5,6 osv

Sorteringen kan laves når du vil have dataene vist tænker jeg.
Hvad skal der evt. være i felt kaldet "tie" ?
Avatar billede lars_hoeberg Praktikant
15. juni 2007 - 14:11 #39
Nej, i det her tilfælde skal positionerne stadig hedde 1,2,3,4,5 osv. I feltet tie, vil der bare være et tal, så hvis du kan sætte den til at sortere efter total (faldende) og derefter Tie (Faldende).
Avatar billede jesperfjoelner Nybegynder
15. juni 2007 - 14:20 #40
ok, men hvis der er to der har placering nr. 3 hvilket hold skal så have tie=1 og hvilket tie=2
Avatar billede lars_hoeberg Praktikant
15. juni 2007 - 14:20 #41
Tror selv jeg har fundet den, ved blot at føje feltet i enden af din ORDER BY
Avatar billede lars_hoeberg Praktikant
15. juni 2007 - 14:21 #42
Det virker i hvert fald ;-) Men igen MANGE tak for hjælpen
Avatar billede jesperfjoelner Nybegynder
15. juni 2007 - 14:25 #43
Det var så lidt, godt det virker :-)
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