Avatar billede psyclown Nybegynder
08. august 2003 - 15:41 Der er 44 kommentarer og
1 løsning

randomize - noget er helt galt her

Jeg har lavet følgende script:

GameID = 1
NotSeeded = ((Cint(NumberOfTeams) - Cint(NumberOfSeedings)) / 2)
For s = 1 To Cint(NotSeeded)
    Randomize
    SQL_MATCHES = "SELECT TOP 2 * FROM klaner WHERE seeding = 0 AND c_gmid = 0"
    Set rsMatches = conntemp.execute(SQL_MATCHES)

    Teams = 1
    Do While Not rsMatches.EOF
        If Cint(Teams) = 1 Then
            SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid) "&_
                                                    "VALUES (1, '"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"')"
            Set rsCreateMatches = conntemp.execute(SQL_CREATE_MATCHES)

            SQL_UPDATE_HOLD1 = "UPDATE klaner "&_
                                                "SET c_stid = 1 AND c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
            conntemp.execute(SQL_UPDATE_HOLD1)
        ElseIf Cint(Teams) = 2 Then
            SQL_UPDATE_MATCHES = "UPDATE kampe "&_
                                                    "SET hold2 = '"& rsMatches("navn") &"' AND h2cnid = "& Cint(rsMatches("cnid"))
            Set rsUpdateMatches = conntemp.execute(SQL_UPDATE_MATCHES)

            SQL_UPDATE_HOLD2 = "UPDATE klaner "&_
                                                "SET c_stid = 1 AND c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
            conntemp.execute(SQL_UPDATE_HOLD2)
        End If
        Teams = Teams + 1
        rsMatches.MoveNext
    Loop
    GameID = GameID + 1
Next
Response.Redirect "?"

Der der er meningen med scriptet er, at den skal vælge 2 tilfældige klaner fra db'en og lave en kamp imellem de 2 klaner og det skal den gøre alt efter hvor mange hold der er tilmeldt og hvor mange seedede hold der er.

I dette tilfælde er det følgende:
hold tilmeldt: 32
hold seedede: 4

dvs. at den skal finde 28 hold(par vist) og lave 14 kampe.

Problemet er at ikke kører hele scriptet igennem (der er tilsyneladende nogle fejl), men jeg har siddet med det her script i jeg ved ikke hvor lang tid og har prøvet 54 forskellige måder, men den gør det samme hvergang.

Hvis jeg kører scriptet sådan som det er der, kommer tabellen "kampe" til at se sådan ud:

gmid    stid    hold1    h1cnid    scoreh1    hold2    h2cnid    scoreh2    vinder    vcnid
1    1    Klan4    6    0    0    0    0        0
2    1    Klan4    6    0    0    0    0        0
3    1    Klan4    6    0    0    0    0        0
4    1    Klan4    6    0    0    0    0        0
5    1    Klan4    6    0    0    0    0        0
6    1    Klan4    6    0    0    0    0        0
7    1    Klan4    6    0    0    0    0        0
8    1    Klan4    6    0    0    0    0        0
9    1    Klan4    6    0    0    0    0        0
10    1    Klan4    6    0    0    0    0        0
11    1    Klan4    6    0    0    0    0        0
12    1    Klan4    6    0    0    0    0        0
13    1    Klan4    6    0    0    0    0        0
14    1    Klan4    6    0    0    0    0        0

Håber at det er til at se, men det næsten tydeligt at se, at den kun udfylder felterne til den første klan og der bliver jo ikke ret meget kamp ud af det, med kun 1 klan i hver kamp.
Det kan også ses at den vælger den samme klan hvergang (klan4), hvilket ikke burde være muligt, så der må være et eller andet fuldstændigt galt.
Tabellen "klaner" bliver heller ikke opdateret, hvilket den også skulle gøre.

Håber i kan finde rundt i det ellers bare spørg løs!

På forhånd tak!
Avatar billede eagleeye Praktikant
08. august 2003 - 18:35 #1
Du er nød til at lave et script der kan hendte 2 random poster ud fra DB'en som ikke er ens, det er ikke nok bare at skrive randomize.

Jeg har lavet et script som dettte som kan hendte X tilfældige ud, så i stedet for dette:

    Randomize
    SQL_MATCHES = "SELECT TOP 2 * FROM klaner WHERE seeding = 0 AND c_gmid = 0"
    Set rsMatches = conntemp.execute(SQL_MATCHES)



Prøv at sætte dette ind, det ser lidt vildt ud, men det skulle være jo være to helt tilfældige og ikke ens.:


antalRandom = 2
Set rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM klaner WHERE seeding = 0 AND c_gmid = 0", conntemp,1,3
inDB = rs.RecordCount
If inDB > antalRandom then
  Randomize timer
  newId = Int (rnd*inDB)
  strIndex = "," & newid & ","
  indexFound = 1
  Do while indexFound < antalRandom
    Do
      Newid = Int (rnd*inDB)
    Loop while inStr(strIndex,"," & newid & ",") > 0
    strIndex = strIndex & newid & ","
    indexFound = indexFound + 1
  Loop
  strIndex = mid (strIndex,2,len(strIndex)-2)
  strHoldID = ""
  For i = Lbound(myArr) to Ubound(myArr)
    rs.move myArr(i),1
    strHoldID = "," & rs("cnid")
  next
  strHoldID = Mid(strHoldID,2)
end if
Rs.Close
SQL_MATCHES = "SELECT * FROM klaner WHERE cnid IN (" & strHoldID & ")"
Set rsMatches = conntemp.execute(SQL_MATCHES)
Avatar billede psyclown Nybegynder
08. august 2003 - 18:50 #2
prøver
Avatar billede psyclown Nybegynder
08. august 2003 - 18:54 #3
Nu har jeg det her:

GameID = 1
NotSeeded = ((Cint(NumberOfTeams) - Cint(NumberOfSeedings)) / 2)
For s = 1 To Cint(NotSeeded)
    antalRandom = 2
    Set rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open "SELECT * FROM klaner WHERE seeding = 0 AND c_gmid = 0", conntemp,1,3
    inDB = rs.RecordCount
    If inDB > antalRandom then
        Randomize timer
        newId = Int (rnd*inDB)
        strIndex = "," & newid & ","
        indexFound = 1
        Do while indexFound < antalRandom
            Do
                Newid = Int (rnd*inDB)
            Loop while inStr(strIndex,"," & newid & ",") > 0
            strIndex = strIndex & newid & ","
            indexFound = indexFound + 1
        Loop
        strIndex = mid (strIndex,2,len(strIndex)-2)
        strHoldID = ""
        For i = Lbound(myArr) to Ubound(myArr)
            rs.move myArr(i),1
            strHoldID = "," & rs("cnid")
        next
        strHoldID = Mid(strHoldID,2)
    end if
    Rs.Close
    SQL_MATCHES = "SELECT * FROM klaner WHERE cnid IN (" & strHoldID & ")"
    Set rsMatches = conntemp.execute(SQL_MATCHES)

    Teams = 1
    Do While Not rsMatches.EOF
        If Cint(Teams) = 1 Then
            SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid) "&_
                                                    "VALUES (1, '"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"')"
            Set rsCreateMatches = conntemp.execute(SQL_CREATE_MATCHES)

            SQL_UPDATE_HOLD1 = "UPDATE klaner "&_
                                                "SET c_stid = 1 AND c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
            conntemp.execute(SQL_UPDATE_HOLD1)
        ElseIf Cint(Teams) = 2 Then
            SQL_UPDATE_MATCHES = "UPDATE kampe "&_
                                                    "SET hold2 = '"& rsMatches("navn") &"' AND h2cnid = "& Cint(rsMatches("cnid"))
            Set rsUpdateMatches = conntemp.execute(SQL_UPDATE_MATCHES)

            SQL_UPDATE_HOLD2 = "UPDATE klaner "&_
                                                "SET c_stid = 1 AND c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
            conntemp.execute(SQL_UPDATE_HOLD2)
        End If
        Teams = Teams + 1
        rsMatches.MoveNext
    Loop
    GameID = GameID + 1
Next
Response.Redirect "?"

Hvis er rigtigt sat sammen, så for jeg følgende fejl:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'Lbound'

/docc/oversigt/index.asp, line 26

linie 26 > For i = Lbound(myArr) to Ubound(myArr)
Avatar billede eagleeye Praktikant
08. august 2003 - 19:04 #4
der er vist smutte en linje da jeg copy / Pastete det.

Prøv at lave disse linjer:

        strIndex = mid (strIndex,2,len(strIndex)-2)
        strHoldID = ""
        For i = Lbound(myArr) to Ubound(myArr)


Om til dette:

        strIndex = mid (strIndex,2,len(strIndex)-2)
        myArr=split(strIndex,",",-1)
        strHoldID = ""
        For i = Lbound(myArr) to Ubound(myArr)
Avatar billede psyclown Nybegynder
08. august 2003 - 19:14 #5
okay, nu henter den da forskellige klaner...sådan da, men der er stadig ikke noget af det andet der virker, altså den sætter kun den første klan ind i hver kamp osv.

Tabellen kampe ser sådan ud nu:

gmid    stid    hold1    h1cnid    scoreh1    hold2    h2cnid    scoreh2    vinder    vcnid
1    1    Klan9    11    0        0    0        0
2    1    Klan22    24    0        0    0        0
3    1    Klan4    6    0        0    0        0
4    1    Klan6    8    0        0    0        0
5    1    Klan29    31    0        0    0        0
6    1    Klan5    7    0        0    0        0
7    1    Klan7    9    0        0    0        0
8    1    Klan24    26    0        0    0        0
9    1    Klan27    29    0        0    0        0
10    1    Klan4    6    0        0    0        0
11    1    Klan26    28    0        0    0        0
12    1    Klan29    31    0        0    0        0
13    1    Klan11    13    0        0    0        0
14    1    Klan22    24    0        0    0        0
Avatar billede eagleeye Praktikant
08. august 2003 - 19:23 #6
Denne SQL set også forkert ud:

          SQL_UPDATE_MATCHES = "UPDATE kampe "&_
                                                    "SET hold2 = '"& rsMatches("navn") &"' AND h2cnid = "& Cint(rsMatches("cnid"))
            Set rsUpdateMatches = conntemp.execute(SQL_UPDATE_MATCHES)


Der mangler et WHERE på og så skal AND være et komma.
Avatar billede psyclown Nybegynder
08. august 2003 - 19:32 #7
okay, nu har jeg fået det hele til at virke med den første klan, så mangler jeg bare at få det til at virke med den anden klan
Avatar billede psyclown Nybegynder
08. august 2003 - 19:41 #8
har du nogle ideer om hvordan jeg kunne få det til at virke ??
Avatar billede eagleeye Praktikant
08. august 2003 - 19:45 #9
du kan overveje at prøve at lave det om til en SQL som opdater i setdet for med 3-4 SQL sætning så dette:


    Do While Not rsMatches.EOF
        If Cint(Teams) = 1 Then
            SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid) "&_
                                                    "VALUES (1, '"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"')"
            Set rsCreateMatches = conntemp.execute(SQL_CREATE_MATCHES)

            SQL_UPDATE_HOLD1 = "UPDATE klaner "&_
                                                "SET c_stid = 1 AND c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
            conntemp.execute(SQL_UPDATE_HOLD1)
        ElseIf Cint(Teams) = 2 Then
            SQL_UPDATE_MATCHES = "UPDATE kampe "&_
                                                    "SET hold2 = '"& rsMatches("navn") &"' AND h2cnid = "& Cint(rsMatches("cnid"))
            Set rsUpdateMatches = conntemp.execute(SQL_UPDATE_MATCHES)

            SQL_UPDATE_HOLD2 = "UPDATE klaner "&_
                                                "SET c_stid = 1 AND c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
            conntemp.execute(SQL_UPDATE_HOLD2)
        End If
        Teams = Teams + 1
        rsMatches.MoveNext
    Loop
    GameID = GameID + 1


Bliver til:

    Do While Not rsMatches.EOF
      SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid, c_stid, c_gmid, hold2,h2cnid) "&_
        "VALUES (1, '"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")&"'"&_
        "1, " & Cint(GameID) &","

      rsMatches.Movenext

      SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'"& rsMatches("navn") &"'"&_
      ")"
      Set rsCreateMatches = conntemp.execute(SQL_CREATE_MATCHES)
    Loop
    GameID = GameID + 1
Avatar billede psyclown Nybegynder
08. august 2003 - 20:09 #10
okay, nu har jeg sat det her ind i Do While løkken:

SQL_UPDATE_HOLD1 = "UPDATE klaner "&_
                                    "SET c_stid = 1, c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
conntemp.execute(SQL_UPDATE_HOLD1)

SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid, hold2, h2cnid) "&_
                                        "VALUES (1, '"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"', "

rsMatches.MoveNext

linie 47 >> SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"')"
Set rsCreateMatches = conntemp.execute(SQL_CREATE_MATCHES)

SQL_UPDATE_HOLD2 = "UPDATE klaner "&_
                                    "SET c_stid = 1, c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
conntemp.execute(SQL_UPDATE_HOLD2)

Men den kommer med den her fejl:

error '80020009'
Exception occurred.

/docc/oversigt/index.asp, line 47

Kan du finde fejlen, for jeg kan ikke se nogen
Avatar billede eagleeye Praktikant
08. august 2003 - 20:16 #11
du skal ikke havde dette med:

SQL_UPDATE_HOLD2 = "UPDATE klaner "&_
                                    "SET c_stid = 1, c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
conntemp.execute(SQL_UPDATE_HOLD2)


det er i den anden SQL
Avatar billede psyclown Nybegynder
08. august 2003 - 20:18 #12
Den skal jo updaterer begge klaner som den finder, altså både før og efter rsMatches.MoveNext eller ??
Avatar billede psyclown Nybegynder
08. august 2003 - 20:38 #13
det gør heller ikke nogen forskel hvis jeg fjerner den SQL der, det er den her linje det er galt i:

SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"')"
Avatar billede eagleeye Praktikant
08. august 2003 - 20:42 #14
Prøv med den kode som har vist den 08/08-2003 19:45:21, det du har fjernet sidet er hvor den tilføjer det andet hold til SQL sætningen.
Avatar billede eagleeye Praktikant
08. august 2003 - 20:43 #15
PRøv med dette:

    Do While Not rsMatches.EOF
      SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid, c_stid, c_gmid, hold2,h2cnid) "&_
        "VALUES (1, '"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")&"',"&_
        "1, " & Cint(GameID) &","

      rsMatches.Movenext

      SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'"& rsMatches("navn") &"'"&_
      ")"
      Set rsCreateMatches = conntemp.execute(SQL_CREATE_MATCHES)
    Loop
    GameID = GameID + 1
Avatar billede eagleeye Praktikant
08. august 2003 - 20:44 #16
der var et komma for lidt i det først viste
Avatar billede eagleeye Praktikant
08. august 2003 - 20:48 #17
Der mangler vist også denene: rsMatches("cnid")
Prøv med denne så:


    Do While Not rsMatches.EOF
      SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid, c_stid, c_gmid, hold2,h2cnid) "&_
        "VALUES (1, '"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")&"',"&_
        "1, " & Cint(GameID) &","

      rsMatches.Movenext

      SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'"& rsMatches("navn") &"'"&_
      "," & rsMatches("cnid") & ")"
      Set rsCreateMatches = conntemp.execute(SQL_CREATE_MATCHES)
    Loop
    GameID = GameID + 1
Avatar billede psyclown Nybegynder
08. august 2003 - 20:49 #18
Det du har skrevet 08/08-2003 19:45:21 vil jo slet ikke virke, for c_stid og c_gmid findes slet ikke i kampe tabellen, men til gengæld i tabellen klaner.
Avatar billede eagleeye Praktikant
08. august 2003 - 20:50 #19
arh ja det går slet ikke på den måde
Avatar billede psyclown Nybegynder
08. august 2003 - 20:51 #20
det var derfor jeg prøvede at lave det på den anden måde, som skulle virke men ikke gør det :)
Avatar billede eagleeye Praktikant
08. august 2003 - 20:52 #21
Så må du lave den om som den var.

Denne SQL:

          SQL_UPDATE_HOLD1 = "UPDATE klaner "&_
                                                "SET c_stid = 1 AND c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))

Skal AND rettes til ,

          SQL_UPDATE_HOLD1 = "UPDATE klaner "&_
                                                "SET c_stid = 1, c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
Avatar billede eagleeye Praktikant
08. august 2003 - 20:54 #22
Denne SQL skal havde en WHERE på for at den får gemt Hold 2 i den rigtige række. Samt AND -> ,


            SQL_UPDATE_MATCHES = "UPDATE kampe "&_
                                                    "SET hold2 = '"& rsMatches("navn") &"' AND h2cnid = "& Cint(rsMatches("cnid"))
            Set rsUpdateMatches = conntemp.execute(SQL_UPDATE_MATCHES)


Det kan evt være GameID ?? hvis du ikke har flere records med samme GameID


            SQL_UPDATE_MATCHES = "UPDATE kampe "&_
                                                    "SET hold2 = '"& rsMatches("navn") &"', h2cnid = "& Cint(rsMatches("cnid")) & " WHERE gameID = " & gameID
            Set rsUpdateMatches = conntemp.execute(SQL_UPDATE_MATCHES)
Avatar billede psyclown Nybegynder
08. august 2003 - 20:56 #23
Jeg har stadig dette inde i Do While løkken:

SQL_UPDATE_HOLD1 = "UPDATE klaner "&_
                                    "SET c_stid = 1, c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
conntemp.execute(SQL_UPDATE_HOLD1)

SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid, hold2, h2cnid) "&_
                                        "VALUES (1, '"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"', "

rsMatches.MoveNext

SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"')"
Set rsCreateMatches = conntemp.execute(SQL_CREATE_MATCHES)

SQL_UPDATE_HOLD2 = "UPDATE klaner "&_
                                    "SET c_stid = 1, c_gmid = "& Cint(GameID) &" WHERE cnid = "& Cint(rsMatches("cnid"))
conntemp.execute(SQL_UPDATE_HOLD2)

Der er det hele rettet, så det skulle virke, men der kommer den med en fejl i SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'"& rsMatches("navn") &"', '"& Cint(rsMatches("cnid")) &"')"

Ville det ikke være nemmere hvis det kunne komme til at virke ??
Avatar billede eagleeye Praktikant
08. august 2003 - 21:06 #24
Ok et andet forlag:


  Do While Not rsMatches.EOF
    hold1_navn = rsMatches("navn")
    hold1_cnid = rsMatches("cnid")
    rsMatches.MoveNext
    hold2_navn = rsMatches("navn")
    hold2_cnid = rsMatches("cnid")

    SQL_CREATE_MATCHES = "INSERT INTO kampe (stid, hold1, h1cnid, hold2, h2cnid) VALUES ("
    SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "1, "
    SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'" & hold1_navn & "', "
    SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'" & hold1_cnid & "', "
    SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'" & hold2_navn & "', "
    SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & "'" & hold2_cnid & "' "
    SQL_CREATE_MATCHES = SQL_CREATE_MATCHES & ")"
    conntemp.execute(SQL_CREATE_MATCHES)

    SQL_UPDATE_HOLD1 = "UPDATE klaner SET c_stid = 1, c_gmid = "& GameID &" WHERE cnid = " & hold1_cnid
    conntemp.execute(SQL_UPDATE_HOLD1)

    SQL_UPDATE_HOLD2 = "UPDATE klaner SET c_stid = 1, c_gmid = "& GameID &" WHERE cnid = "& hold2_cnid
    conntemp.execute(SQL_UPDATE_HOLD2)
  Loop
  GameID = GameID + 1
Avatar billede psyclown Nybegynder
08. august 2003 - 21:10 #25
Okay, nu har jeg sat der ind, men det går galt lige efter rsMatches.MoveNext, den skriver:

ADODB.Field error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/docc/oversigt/index.asp, line 58

linie 58:
hold2_navn = rsMatches("navn")

Det tyder på at den kun finder 1 record og at den ikke kan gå videre af den grund.
Avatar billede eagleeye Praktikant
08. august 2003 - 21:15 #26
Ja det lyder noget underlidt har du ikke stadig det andet som finder de to random hold?
Avatar billede psyclown Nybegynder
08. august 2003 - 21:21 #27
Det af dit script eller hva ??
Avatar billede eagleeye Praktikant
08. august 2003 - 21:28 #28
Ja
Avatar billede psyclown Nybegynder
08. august 2003 - 21:31 #29
antalRandom = 2
Set rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM klaner WHERE seeding = 0 AND c_gmid = 0", conntemp,1,3
inDB = rs.RecordCount
If inDB > antalRandom then
    Randomize timer
    newId = Int(rnd * inDB)
    strIndex = ","& newid &","
    indexFound = 1
    Do while indexFound < antalRandom
        Do
            Newid = Int(rnd * inDB)
        Loop while inStr(strIndex,","& newid &",") > 0
        strIndex = strIndex & newid &","
        indexFound = indexFound + 1
    Loop
    strIndex = mid (strIndex,2,len(strIndex)-2)
    myArr=split(strIndex,",",-1)
    strHoldID = ""
    For i = Lbound(myArr) to Ubound(myArr)
        rs.move myArr(i),1
        strHoldID = ","& rs("cnid")
    next
    strHoldID = Mid(strHoldID, 2)
end if
Rs.Close
SQL_MATCHES = "SELECT * FROM klaner WHERE cnid IN ("& strHoldID &")"
Set rsMatches = conntemp.execute(SQL_MATCHES)
Avatar billede eagleeye Praktikant
08. august 2003 - 21:33 #30
PRøv at rette:

    For i = Lbound(myArr) to Ubound(myArr)
        rs.move myArr(i),1
        strHoldID = ","& rs("cnid")
    next


Til:

    For i = Lbound(myArr) to Ubound(myArr)
        rs.move myArr(i),1
        strHoldID = strHoldID  & ","& rs("cnid")
    next
Avatar billede psyclown Nybegynder
08. august 2003 - 21:49 #31
stadig samme fejl
Avatar billede psyclown Nybegynder
08. august 2003 - 22:18 #32
kan du finde nogle fejl ??
Avatar billede eagleeye Praktikant
08. august 2003 - 22:33 #33
Prøv at ændre dette så den udskriver den SQL sætning som skal finde de to hold:

SQL_MATCHES = "SELECT * FROM klaner WHERE cnid IN ("& strHoldID &")"
Set rsMatches = conntemp.execute(SQL_MATCHES)


Til dette:

SQL_MATCHES = "SELECT * FROM klaner WHERE cnid IN ("& strHoldID &")"
Response.write SQL_MATCHES
Response.end
Set rsMatches = conntemp.execute(SQL_MATCHES)
Avatar billede psyclown Nybegynder
09. august 2003 - 08:34 #34
havde ikke set du havde skrevet...jeg fik ikke nogen email, så jeg smuttede bare iseng.

Her er hvad jeg for ud af at udskrive den SQL:
SELECT * FROM klaner WHERE cnid IN (13,12)

Så det ser da ud til at den finder mere end 1 klan alligevel.
Avatar billede eagleeye Praktikant
09. august 2003 - 11:07 #35
Ok, jeg har også hørt fra en anden at han ikke kunne komme på eksperten omkring samme tid som den kommentar jeg lavede så den har nok været lidt ustabil :)

Så den finder altså 2 klaner. Så virker det lidt underlidt at den kommer med den fejl og dog... For den er vel ikke EOF når man trækker det andet hold ud. Prøv lige at rsMatches.MoveNext efter disse to linjker:

    hold2_navn = rsMatches("navn")
    hold2_cnid = rsMatches("cnid")


Sådan her, så den helt sikket EOF of loopet sttopper, eller vil den køre loopet igen og fejle ved hold2.:

    hold2_navn = rsMatches("navn")
    hold2_cnid = rsMatches("cnid")
    rsMatches.Movenext
Avatar billede psyclown Nybegynder
09. august 2003 - 11:14 #36
okay, skal det se sådan ud:

hold1_navn = rsMatches("navn")
hold1_cnid = rsMatches("cnid")
rsMatches.MoveNext
hold2_navn = rsMatches("navn")
hold2_cnid = rsMatches("cnid")
rsMatches.MoveNext

Eller sådan her:

hold1_navn = rsMatches("navn")
hold1_cnid = rsMatches("cnid")
hold2_navn = rsMatches("navn")
hold2_cnid = rsMatches("cnid")
rsMatches.MoveNext

Fik ikke lige fat i det sidste du skrev...tror vidst der er et par stavefejl :)
Avatar billede eagleeye Praktikant
09. august 2003 - 11:18 #37
Som det føste :
hold1_navn = rsMatches("navn")
hold1_cnid = rsMatches("cnid")
rsMatches.MoveNext
hold2_navn = rsMatches("navn")
hold2_cnid = rsMatches("cnid")
rsMatches.MoveNext
Avatar billede psyclown Nybegynder
09. august 2003 - 11:31 #38
okay, nu gør den som den skal og der er kun et par småfejl tilbage.

Sådan ser "kampe" tabellen ud nu:

gmid    stid    hold1    h1cnid    scoreh1    hold2    h2cnid    scoreh2    vinder    vcnid
1    1    Klan7    9    0    Klan22    24    0        0
2    1    Klan6    8    0    Klan27    29    0        0
3    1    Klan5    7    0    Klan17    19    0        0
4    1    Klan10    12    0    Klan20    22    0        0
5    1    Klan13    15    0    Klan15    17    0        0
6    1    Klan4    6    0    Klan21    23    0        0
7    1    Klan14    16    0    Klan24    26    0        0
8    1    Klan11    13    0    Klan31    33    0        0
9    1    Klan9    11    0    Klan26    28    0        0
10    1    Klan12    14    0    Klan30    32    0        0
11    1    Klan8    10    0    Klan28    30    0        0
12    1    Klan19    21    0    Klan23    25    0        0
13    1    Klan25    27    0    Klan29    31    0        0
14    1    Klan25    27    0    Klan29    31    0        0

Og sådan her ser "klaner" tabellen ud:

cnid    c_stid    c_gmid    cluid    seeding    navn    tag    hp    irc    kontakt_person    kpusrid    betalt
1    0    0    1    1    Klan Test    [Test]    http://www.klantest.dk    #klantest    PsyClown    1    Ja
3    0    0    11    2    Klan1    [Klan1]    http://www.docc.dk    #docc    Spiller4    11    Ja
4    0    0    16    3    Klan2    [Klan2]    http://www.docc.dk    #docc    Spiller9    16    Ja
5    0    0    21    4    Klan3    [Klan3]    http://www.docc.dk    #docc    Spiller14    21    Ja
6    1    6    26    0    Klan4    [Klan4]    http://www.docc.dk    #docc    Spiller19    26    Ja
7    1    3    31    0    Klan5    [Klan5]    http://www.docc.dk    #docc    Spiller24    31    Ja
8    1    2    36    0    Klan6    [Klan6]    http://www.docc.dk    #docc    Spiller29    36    Ja
9    1    1    41    0    Klan7    [Klan7]    http://www.docc.dk    #docc    Spiller34    41    Ja
10    1    11    46    0    Klan8    [Klan8]    http://www.docc.dk    #docc    Spiller39    46    Ja
11    1    9    51    0    Klan9    [Klan9]    http://www.docc.dk    #docc    Spiller44    51    Ja
12    1    4    56    0    Klan10    [Klan10]    http://www.docc.dk    #docc    Spiller49    56    Ja
13    1    8    61    0    Klan11    [Klan11]    http://www.docc.dk    #docc    Spiller54    61    Ja
14    1    10    66    0    Klan12    [Klan12]    http://www.docc.dk    #docc    Spiller59    66    Ja
15    1    5    71    0    Klan13    [Klan13]    http://www.docc.dk    #docc    Spiller64    71    Ja
16    1    7    76    0    Klan14    [Klan14]    http://www.docc.dk    #docc    Spiller69    76    Ja
17    1    5    81    0    Klan15    [Klan15]    http://www.docc.dk    #docc    Spiller74    81    Ja
18    0    0    86    0    Klan16    [Klan16]    http://www.docc.dk    #docc    Spiller79    86    Ja
19    1    3    91    0    Klan17    [Klan17]    http://www.docc.dk    #docc    Spiller84    91    Ja
20    0    0    96    0    Klan18    [Klan18]    http://www.docc.dk    #docc    Spiller89    96    Ja
21    1    12    101    0    Klan19    [Klan19]    http://www.docc.dk    #docc    Spiller94    101    Ja
22    1    4    106    0    Klan20    [Klan20]    http://www.docc.dk    #docc    Spiller99    106    Ja
23    1    6    111    0    Klan21    [Klan21]    http://www.docc.dk    #docc    Spiller104    111    Ja
24    1    1    116    0    Klan22    [Klan22]    http://www.docc.dk    #docc    Spiller109    116    Ja
25    1    12    121    0    Klan23    [Klan23]    http://www.docc.dk    #docc    Spiller114    121    Ja
26    1    7    126    0    Klan24    [Klan24]    http://www.docc.dk    #docc    Spiller119    126    Ja
27    1    14    131    0    Klan25    [Klan25]    http://www.docc.dk    #docc    Spiller124    131    Ja
28    1    9    136    0    Klan26    [Klan26]    http://www.docc.dk    #docc    Spiller129    136    Ja
29    1    2    141    0    Klan27    [Klan27]    http://www.docc.dk    #docc    Spiller134    141    Ja
30    1    11    146    0    Klan28    [Klan28]    http://www.docc.dk    #docc    Spiller139    146    Ja
31    1    14    151    0    Klan29    [Klan29]    http://www.docc.dk    #docc    Spiller144    151    Ja
32    1    10    156    0    Klan30    [Klan30]    http://www.docc.dk    #docc    Spiller149    156    Ja
33    1    8    161    0    Klan31    [Klan31]    http://www.docc.dk    #docc    Spiller154    161    Ja

Jeg tror der er noget jeg har regnet forkert, for den skriver 2 af kampen mellem klan25 og klan29 og der bliver ikke skrevet noget ved klan16 eller klan18, så den kamp skulle jo have været der istedet for en af de kampe mellem klan25 og klan29.
Avatar billede eagleeye Praktikant
09. august 2003 - 11:45 #39
16 og 18 har ikke være i "kamp"

Den tager bare to tilfældige hver gang så det jo ikke sikkert alle bliver valgt??
Avatar billede psyclown Nybegynder
09. august 2003 - 11:49 #40
jamen det er jo det der er problemet, for alle sammen skal vælges undtaget dem der er seeded, indtil der ikke er flere at vælge
Avatar billede eagleeye Praktikant
09. august 2003 - 11:57 #41
Ok så prøv at rette:


    antalRandom = 2
    Set rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open "SELECT * FROM klaner WHERE seeding = 0 AND c_gmid = 0", conntemp,1,3
    inDB = rs.RecordCount
    If inDB > antalRandom then
        Randomize timer
        newId = Int (rnd*inDB)
        strIndex = "," & newid & ","
        indexFound = 1
        Do while indexFound < antalRandom
            Do
                Newid = Int (rnd*inDB)
            Loop while inStr(strIndex,"," & newid & ",") > 0
            strIndex = strIndex & newid & ","
            indexFound = indexFound + 1
        Loop
        strIndex = mid (strIndex,2,len(strIndex)-2)
        strHoldID = ""
        For i = Lbound(myArr) to Ubound(myArr)
            rs.move myArr(i),1
            strHoldID = "," & rs("cnid")
        next
        strHoldID = Mid(strHoldID,2)
    end if


Til dette så den husker de før valgte ids:


    antalRandom = 2
    Set rs = Server.CreateObject("ADODB.Recordset")
    if oldIDs = "" then
      SQL = "SELECT * FROM klaner WHERE seeding = 0 AND c_gmid = 0"
    else
      SQL = "SELECT * FROM klaner WHERE seeding = 0 AND c_gmid = 0 AND cnid not in(" & oldIDs & ")"
    end if
    Rs.Open SQL, conntemp,1,3
    inDB = rs.RecordCount
    If inDB > antalRandom then
        Randomize timer
        newId = Int (rnd*inDB)
        strIndex = "," & newid & ","
        indexFound = 1
        Do while indexFound < antalRandom
            Do
                Newid = Int (rnd*inDB)
            Loop while inStr(strIndex,"," & newid & ",") > 0
            strIndex = strIndex & newid & ","
            indexFound = indexFound + 1
        Loop
        strIndex = mid (strIndex,2,len(strIndex)-2)
        strHoldID = ""
        For i = Lbound(myArr) to Ubound(myArr)
            rs.move myArr(i),1
            strHoldID = "," & rs("cnid")
        next
        strHoldID = Mid(strHoldID,2)
        if oldIDs <> "" then oldIDs = oldIDs & ","
        oldIDs = oldIDs & strHoldID
    end if
Avatar billede psyclown Nybegynder
09. august 2003 - 12:10 #42
Jeg blev nød til at lave det her:

strIndex = mid (strIndex,2,len(strIndex)-2)
strHoldID = ""
For i = Lbound(myArr) to Ubound(myArr)
  rs.move myArr(i),1
  strHoldID = "," & rs("cnid")
next

Om til:

strIndex = mid (strIndex,2,len(strIndex)-2)
myArr=split(strIndex,",",-1)
strHoldID = ""
For i = Lbound(myArr) to Ubound(myArr)
    rs.move myArr(i),1
    strHoldID = strHoldID &","& rs("cnid")
next

For at det virkede, men den gør stadig det samme, altså den laver stadig 2 ens til sidst og der er stadig 2 klaner som "ikke kommer i kamp"
Avatar billede eagleeye Praktikant
09. august 2003 - 12:30 #43
Prøv at rette denne if sætning:

If inDB > antalRandom then



Til dette så skulle den ikke få to ens tilsidst.:

If inDB >= antalRandom then
Avatar billede eagleeye Praktikant
09. august 2003 - 12:34 #44
det løser nok begger problemer da de to sidste som er ens jo skulle hvade været de to som ikke er kommet med.
Avatar billede psyclown Nybegynder
09. august 2003 - 12:36 #45
Det er jo super, nu virker det hele.

Du skal have mange tak for din hjælp og mange tak fordi du gad at bruge så meget tid på at hjælpe mig :)

Du har ihvertfald fortjent de point.
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