Toon posts:

[ASP] Sorteren van meerdere arrays

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het ontwikkelen van een competitiesysteem. Aan de hand van een lijst met uitslagen worden de standen bepaald. Ik weet echter niet precies hoe ik deze standen vervolgens kan sorteren, zodat de beste ploeg bovenaan komt te staan.

Mijn idee was het volgende: Voor iedere ploeg maak ik een array aan, met daarin achtereenvolgens:

aantalwedstrijden, aantalgewonnen, aantalgelijk, aantalverloren, aantalpunten, goalsvoor, goalstegen.

Op deze manier ontstaan er dus ongeveer acht arrays. Hoe kan ik deze arrays op de juiste manier sorteren?

Alvast bedankt voor de moeite!

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:18
Waarom 8 arrays en niet 1 array, met alle elementen in die array?

bv:
code:
1
2
3
4
5
6
7
8
struct Ploeg
{
      string     naam;
      int         aantalgewonnen;
      int         aantalgelijk;
}

Ploeg myArray[10]

Pseudo-code

https://fgheysels.github.io/


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 18-05 15:53

Jaspertje

Max & Milo.. lief

Mag ik vragen of je een database gebruikt en zoja welke?

  • bigben04
  • Registratie: December 2001
  • Laatst online: 07-05 10:38
Inderdaad zoals whoami zegt de gegevens in 1 'struct' (in ASP een Record toevallig?) zetten. Vervolgens kan je een eigen sorteerfunctie maken waaraan een array van deze records meegegeven wordt en kan je bijv. het quicksort algoritme implementeren met als aanpassing dat je meerdere voorwaarden hebt (zoals if team[1].punten==team[2].punten then check doelsaldo).

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:18
Als je gegevens uit een DB komen, haal je ze natuurlijk al gesorteerd op uit de databank.

https://fgheysels.github.io/


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 18-05 15:53

Jaspertje

Max & Milo.. lief

whoami schreef op 08 januari 2004 @ 10:50:
Als je gegevens uit een DB komen, haal je ze natuurlijk al gesorteerd op uit de databank.
Ik wacht even het antwoord van de TS af ;)

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

sorteren van een array

neemt niet weg dat een simpel order by statement in je query veel makkelijker en leesbaarder is ;)

kaart != map && bottel != fles
Wacht op antwoord


  • dotcode
  • Registratie: Augustus 2003
  • Laatst online: 25-05 11:09

dotcode

///\00/\\

Een array bevat een methode Sort
Deze krijgt een opject mee van de interface IComparer

nu maar je voor elke collum een object dat de compare voor die collom doe:

C++:
1
2
3
4
5
6
7
8
9
10
public class MyComparer : IComparer
{
        public MyComparer()
        {
        }
        public int Compare(object x, object y)
        {
//doe je dingetje
        }
}


Je kan het ook oplossen in een object, je kan je constuctor het element laten bepalen of een extra functie maken.

Verwijderd

Topicstarter
Ik haal de standen niet op uit een database, slechts de uitslagen worden opgehaald uit een database. Aan de hand van deze uitslagen moet er vervolgens worden gesorteerd.

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 18-05 15:53

Jaspertje

Max & Milo.. lief

Verwijderd schreef op 08 januari 2004 @ 11:00:
Ik haal de standen niet op uit een database, slechts de uitslagen worden opgehaald uit een database. Aan de hand van deze uitslagen moet er vervolgens worden gesorteerd.
Hoe kom je dan wel aan de standen? en welke database gebruik je?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:00

gorgi_19

Kruimeltjes zijn weer op :9

Ik denk dat je ASP 3.0 (probleem TS, volgens titel) verwardt met ASP.Net :)
Verwijderd schreef op 08 januari 2004 @ 11:00:
Ik haal de standen niet op uit een database, slechts de uitslagen worden opgehaald uit een database. Aan de hand van deze uitslagen moet er vervolgens worden gesorteerd.
Hmmm.. In ASP kan je classes maken. Het eerste wat me te binnen schiet om een eigen implementatie van de Quicksort te maken in ASP.

Zie oa http://www.4guysfromrolla.com/webtech/012799-3.shtml

Nog makkelijker is om een eigen recordset te maken, hier alles in te stoppen en vervolgens te sorteren.

[ Voor 68% gewijzigd door gorgi_19 op 08-01-2004 11:14 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Nog makkelijker is om een eigen recordset te maken, hier alles in te stoppen en vervolgens te sorteren.
Hoe doe ik dit precies? In m'n asp-code wordt het aantal gespeelde wedstrijden berekend, evenals het aantal gewonnen etc. Aan de hand hiervan wordt het aantal punten bepaald.

Hoe kan ik deze gegevens (die dus niet in de database staan) in een nieuwe recordset plaatsen?

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 18-05 15:53

Jaspertje

Max & Milo.. lief

en als je dat dan gelukt is, kan je die hele recordset in een array stoppen met

ASP:
1
2
dim bla
bla = recordset.getrows

[ Voor 4% gewijzigd door Jaspertje op 08-01-2004 11:51 . Reden: asp=code... lol ]


  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Verwijderd schreef op 08 januari 2004 @ 11:15:
[...]
Hoe doe ik dit precies? In m'n asp-code wordt het aantal gespeelde wedstrijden berekend, evenals het aantal gewonnen etc. Aan de hand hiervan wordt het aantal punten bepaald.

Hoe kan ik deze gegevens (die dus niet in de database staan) in een nieuwe recordset plaatsen?
Zie mijn topic start voor het creeeren en gebruiken van een nieuwe recordset

Problem Exists Between Chair And Keyboard


Verwijderd

Topicstarter
Het lukt nog niet helemaal om een nieuwe recordset te maken. Ik heb de volgende code gemaakt:

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Const adVarChar = 200
Const adUseClient = 3
Const adOpenStatic = 3

Set rs6 = Server.CreateObject("ADODB.RecordSet")

rs6.fields.append "team",adVarChar,35
rs6.fields.append "aantalwedstrijden",adVarChar,2
rs6.fields.append "aantalgewonnen",adVarChar,2
rs6.fields.append "aantalgelijk",adVarChar,2
rs6.fields.append "aantalverloren",adVarChar,2
rs6.fields.append "aantalpunten",adVarChar,2
rs6.fields.append "goalsvoor",adVarChar,3
rs6.fields.append "goalstegen",adVarChar,3
    
rs6.CursorLocation = adUseClient
rs6.CursorType = adOpenStatic
    
rs6.Open
    
team = rs3("clubnaam") + " " + rs2("teamnummer")

rs6.addNew "team",team
rs6.addNew "aantalwedstrijden",aantalwedstrijden
rs6.addNew "aantalgewonnen",aantalgewonnen
rs6.addNew "aantalgelijk",aantalgelijk
rs6.addNew "aantalverloren",aantalverloren
rs6.addNew "aantalpunten",aantalpunten
rs6.addNew "goalsvoor",goalsvoor
rs6.addNew "goalstegen",goalstegen
        
rs6.Update
rs6.Close


Nu krijg ik echter de volgende foutmelding:

Microsoft VBScript runtime error '800a0411'
Name redefined: 'adVarChar'

/cwa/competitie/standpoule.asp, line 131

Hoe kan ik dit oplossen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:00

gorgi_19

Kruimeltjes zijn weer op :9

Moet je adovbs.inc includen verwijderen of de eerste 3 regels van je script weghalen.

[ Voor 57% gewijzigd door gorgi_19 op 08-01-2004 14:48 . Reden: Poster onder mij had ietsie meer gelijk :P ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

ik vermoed juist dat deze al ge-include is: name redefined krijg je als je een const twee keer declareert ;)

kaart != map && bottel != fles
Wacht op antwoord


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:00

gorgi_19

Kruimeltjes zijn weer op :9

j_du_pee schreef op 08 januari 2004 @ 14:37:
ik vermoed juist dat deze al ge-include is: name redefined krijg je als je een const twee keer declareert ;)
Hmmm.. Goed punt.. :+

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Heb de eerste drie regels van het script weggehaald en adovbs.inc geïnclude, en dat werkt nu perfect... Kan de recordset nu dus weergeven op het scherm. Heb de volgende code gebruikt:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Set rs6 = Server.CreateObject("ADODB.RecordSet")

rs6.fields.append "team",adVarChar,35
rs6.fields.append "aantalwedstrijden",adVarChar,2
rs6.fields.append "aantalgewonnen",adVarChar,2
rs6.fields.append "aantalgelijk",adVarChar,2
rs6.fields.append "aantalverloren",adVarChar,2
rs6.fields.append "aantalpunten",adVarChar,2
rs6.fields.append "goalsvoor",adVarChar,3
rs6.fields.append "goalstegen",adVarChar,3
        
rs6.CursorLocation = adUseClient
rs6.CursorType = adOpenStatic
        
rs6.Open
        
team = rs3("clubnaam") + " " + rs2("teamnummer")
    
rs6.addNew "team",team
rs6("aantalwedstrijden") = aantalwedstrijden
rs6("aantalgewonnen") = aantalgewonnen
rs6("aantalgelijk") = aantalgelijk
rs6("aantalverloren") = aantalverloren
rs6("aantalpunten") = aantalpunten
rs6("goalsvoor") = goalsvoor
rs6("goalstegen") = goalstegen
        
rs6.Update

Ik kan deze recordset dus wel weergeven, maar weet nu niet hoe ik ook kan sorteren...

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

Verwijderd schreef op 08 januari 2004 @ 15:07:
Ik kan deze recordset dus wel weergeven, maar weet nu niet hoe ik ook kan sorteren...
devguru references zijn IMHO vaak de beste resource voor dit soort opzoek dingetjes...

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Verwijderd schreef op 08 januari 2004 @ 15:07:
Heb de eerste drie regels van het script weggehaald en adovbs.inc geïnclude, en dat werkt nu perfect... Kan de recordset nu dus weergeven op het scherm. Heb de volgende code gebruikt:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Set rs6 = Server.CreateObject("ADODB.RecordSet")

rs6.fields.append "team",adVarChar,35
rs6.fields.append "aantalwedstrijden",adVarChar,2
rs6.fields.append "aantalgewonnen",adVarChar,2
rs6.fields.append "aantalgelijk",adVarChar,2
rs6.fields.append "aantalverloren",adVarChar,2
rs6.fields.append "aantalpunten",adVarChar,2
rs6.fields.append "goalsvoor",adVarChar,3
rs6.fields.append "goalstegen",adVarChar,3
        
rs6.CursorLocation = adUseClient
rs6.CursorType = adOpenStatic
        
rs6.Open
        
team = rs3("clubnaam") + " " + rs2("teamnummer")
    
rs6.addNew "team",team
rs6("aantalwedstrijden") = aantalwedstrijden
rs6("aantalgewonnen") = aantalgewonnen
rs6("aantalgelijk") = aantalgelijk
rs6("aantalverloren") = aantalverloren
rs6("aantalpunten") = aantalpunten
rs6("goalsvoor") = goalsvoor
rs6("goalstegen") = goalstegen
        
rs6.Update

Ik kan deze recordset dus wel weergeven, maar weet nu niet hoe ik ook kan sorteren...
Ik wil hetzelfde doen voor mijn club als de topicstarter.
Maar als ik bovenstaande code in mijn pagina zet krijg ik de volgende melding

ADODB.Fields (0x800A0BB9)
De argumenten zijn van het verkeerde type, vallen buiten het toegestane bereik of zijn in conflict met elkaar.


op regel die gelijk is aan nummer 3 van deze code.

Wie kan mij helpen?

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Waarschijnlijk moet jij dan juist ergens de file "adovbs.inc" includen.
Heb je trouwens wel Option Explicit aanstaan?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:00

gorgi_19

Kruimeltjes zijn weer op :9

ADODB.Fields (0x800A0BB9)
De argumenten zijn van het verkeerde type, vallen buiten het toegestane bereik of zijn in conflict met elkaar.
Linkje naar de FAQ
Een klein linkje naar de FAQ. Als je een foutmelding hebt, is het eerste kijken wat die foutmelding betekent; en evt. vertalen naar het Engels. Deze staat bijvoorbeeld letterlijk beschreven.

Verder zal je met de engelse foutmelding waarschijnlijk ook wel een hoop links met Google vinden. :) Succes er mee.

Trouwens, nog welkom op GoT :)

[ Voor 26% gewijzigd door gorgi_19 op 28-04-2004 21:28 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1