Avatar billede cpccorp Juniormester
28. august 2004 - 11:33 Der er 13 kommentarer og
1 løsning

Fordel data i grupper af 4

Hvordan vil et script se ud hvis jeg skal have noget data fordelt i gruppper med f.eks 4 elementer
Avatar billede eagleeye Praktikant
28. august 2004 - 12:50 #1
Hvordan mener du?
Avatar billede cpccorp Juniormester
28. august 2004 - 13:09 #2
Jo hvis nu jeg har følgende..

Data 1
Data 2
Data 3
osv
Data x

Så skal disse data deles op i grupper - tilfældigt - af eks. 4 data enheder i hver
Avatar billede tofte Juniormester
29. august 2004 - 17:06 #3
Hvad gør du, hvis der eks er 6 sæt data, det er jo lidt svært at dele med 4, eller det sker måske ikke?
Avatar billede cpccorp Juniormester
29. august 2004 - 18:04 #4
Så mange med fire om muligt, hvorefter resten hvis antal = 3 bare er i en gruppe for sig. Hvis de sidste er 6 deles bør de deles i 2 grupper a 3

Vil det være for svært
Avatar billede tofte Juniormester
29. august 2004 - 18:20 #5
<%
    sub save_par(data_str)
        if not str="" then
            data_str=left(data_str,(len(data_str)-1))
            Response.Write data_str&"<BR>"
        end if
    end sub
   
    set conn=Server.CreateObject("ADODB.Connection")
    conn.Provider="Microsoft.Jet.OLEDB.4.0"
    conn.Open(Server.Mappath("db.mdb"))
       
    sql="SELECT * FROM hold"
    set RS_db =conn.Execute(sql)
   
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Fields.Append "id", 4,6
    RS.Fields.Append "sort", 4, 6
   
    RS.Open
    randomize
    while not RS_db.eof
        RS.Addnew
        RS("id") = RS_db("id")
        RS("sort") = rnd(50000)
        RS.Update
        RS_db.movenext
    wend
    max=4
    if rs.RecordCount = 6 then max=3
    RS.Sort = "sort"
    rs.MoveFirst
    count = 0
    str=""
    while not rs.EOF
        'Response.Write count
        str=rs("id")&","&str
        count = count +1   
        if count = max then
            save_par str
            count = 0
            str=""
        end if
       
        rs.MoveNext
       
    wend
   
    'og resten, hvis der er en rest
    save_par str
    rs.Close
    rs_db.close
    %>

har lavet en funktion som hedder save_par, den udskriver bare de parrede hold, den kan du jo bare lave om, så den kommer til at passe.
Avatar billede cpccorp Juniormester
29. august 2004 - 19:16 #6
Kan du forklare det lidt nærmere
Avatar billede tofte Juniormester
30. august 2004 - 08:41 #7
ups, har vist fundet en lille fejl i scriptet, de sidste 6 deles ikke korrekt. Ser lige på det engang i eftermiddag. Der skal du også nok få en beskrivelse af, hvad den gør
Avatar billede cpccorp Juniormester
30. august 2004 - 12:34 #8
Tak...
Avatar billede tofte Juniormester
30. august 2004 - 22:26 #9
lige en tilrettet version

sub save_par(data_str)
        if not str="" then
            data_str=left(data_str,(len(data_str)-1))
            Response.Write data_str&"<BR>"
        end if
    end sub
   
    set conn=Server.CreateObject("ADODB.Connection")
    conn.Provider="Microsoft.Jet.OLEDB.4.0"
    conn.Open(Server.Mappath("db.mdb"))
       
    sql="SELECT * FROM hold"
    set RS_db =conn.Execute(sql)
   
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Fields.Append "id", 4,6
    RS.Fields.Append "sort", 4, 6
   
    RS.Open
    randomize
    while not RS_db.eof
        RS.Addnew
        RS("id") = RS_db("id")
        RS("sort") = rnd(50000)
        RS.Update
        RS_db.movenext
    wend
    max=4
    if rs.RecordCount = 6 then max=3
    RS.Sort = "sort"
    rs.MoveFirst
    count = 0
    tcount=0
    str=""
    while not rs.EOF
        'Response.Write count
        str=rs("id")&","&str
        count = count +1   
        tcount=tcount+1
        if count = max then
            save_par str
            count = 0
            str=""
            if (rs.RecordCount - tcount)= 6 then max=3
        end if
       
        rs.MoveNext
       
    wend
   
    'og resten, hvis der er en rest
    save_par str
    rs.Close
    rs_db.close
Avatar billede tofte Juniormester
30. august 2004 - 22:30 #10
Det jeg gør, er i alt sin enkelthed at tilknytte et tilfældigt genereret tal til alle poster i databasen, så sorterer jeg posterne via de tilfældigt genererede nummer. Herved opnår jeg, at posterne ligger tilfældigt efter hinanden. Efterfølgende er der så bare tilbage at bladre posterne igennem, og efter hver 4(eller 3 hvis der nu kun er seks tilbage), så køres funktionen save_par, som så gør et eller andet ved de sammenknyttede poster.

Håber det er forklaring nok, ellers må du jo lige skrive, hvis der er noget du ikke forstår.
Avatar billede cpccorp Juniormester
30. august 2004 - 23:36 #11
Jamen så prøver jeg det, du kan det der...jeg har i øvrigt postet et nyt spørgsmål, i samme dur..
Som du nok har kunnet ane er det en turneringplanlægger, som jeg har tænkt mig at lægge online.

Her er det nye spørgsmål http://www.eksperten.dk/spm/534499

PS Jeg tester dette her i morgen
Avatar billede cpccorp Juniormester
27. september 2004 - 16:12 #12
Gemmer den dataene i en tabel
Avatar billede tofte Juniormester
27. september 2004 - 18:14 #13
nej det undskriver dem bare, du skal bare ændre i sub'en Save_par
Avatar billede cpccorp Juniormester
27. september 2004 - 18:22 #14
Det er denne linie ikke:

Response.Write data_str&"<BR>"
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