Avatar billede mrjowns Novice
10. november 2005 - 08:02 Der er 3 kommentarer og
2 løsninger

Optælling og sammenligning - hvordan

Hejsa,

Jeg har to tabeller (Access):

tbl_project
- fld_projectname
- fld_01
- fld_02
- ...
- fld_44

tbl_people
- fld_init
- fld_01
- fld_02
- ...
- fld_44

Prikkerne angiver de mellemliggende felter (03-43). Henholdsvis fld_projectname og fld_init er primærnøgler. I begge tabeller er der i felterne fld_01 til fld_44 angivet "0", "1", "2" eller "3".

Det jeg gerne vil nu, er at finde alle de felter fra tbl_project (1 record) hvor der står 3, alle de felter hvor der står 2, 1 og 0 - og med en sum-funktion. Så skal disse tal sammenlignes med alle records fra tbl_people. Lad mig prøve at illustrere (resultat):

Fra tbl_project
Felter med værdien 3: 15, sum 45
Felter med værdien 2: 16, sum 32
Felter med værdien 1: 10, sum 10
Felter med værdien 0:  3, sum 0

Fra tbl_people
Init  Sum 3  Sum 2  Sum 1  Sum 0
xx1    38      35      8      8
xx2    36      37      7      9
xx3    35      40      12      2

Ideen er altså, at sum(3,2,1,0) og antal fra tbl_project skal sammenlignes med værdierne (sum) fra de samme felter fra tbl_people. Udtrækket fra tbl_people må gerne være sorteret efter "Sum 3" som det ses på illustrationen.

Jeg er klar over, at det formentlig drejer sig om at der skal gang i noget lidt avanceret SQL og noget array, men jeg ved bare ikke lige hvordan jeg skal gribe det an. Håber nogen kan hjælpe!
Avatar billede nielle Nybegynder
10. november 2005 - 17:39 #1
Den første del af dit problem burde kunne klares med noget i denne stil:

<%
Dim antal(4)

sql = "SELECT * FROM tbl_project"
Set rs = Conn.Execute(sql)

Do While Not rs.EOF
    For idx = 0 To 3
        antal(idx) = 0
    Next

    For fldIdx = 1 To 44
        fld_xx = "fld_"
        If fldIdx<10 Then fld_xx = fld_xx & "0"
        fld_xx = fld_xx & fldIdx

        value = rs(fld_xx)
        antal(value) = antal(value) + 1
    Next

    Response.Write "Projekt: " & rs("fld_projectname") & "<br>"

    For idx = 1 To 3
        sum = antal(idx) * idx
        Response.Write "Felter med værdien " & idx & ": " & antal(idx) & ", sum " & sum & "<br>"
    Next

    Response.Write "<br>"

    rs.MoveNext
Loop
%>

Den anden del af dit problem bliver du desværre nødt til at forklare en gang til...
Avatar billede nielle Nybegynder
29. november 2005 - 21:27 #2
Hvad med noget respons?
Avatar billede nielle Nybegynder
08. december 2005 - 22:43 #3
??
Avatar billede mrjowns Novice
10. december 2005 - 10:22 #4
Wow, sorry Nielle! Jo, jeg har fået det hele til at spille. Du får 100p da du hjalp mig med havdelen af løsningen. Tak for hjælpen.

Smider du et svar?
Avatar billede nielle Nybegynder
10. december 2005 - 10:33 #5
Oki :^)
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