25. januar 2005 - 11:24Der er
11 kommentarer og 1 løsning
Count på eksisterende SQL.
Hvordan tæller jeg antallet af returnerede poster (ArrID) i denne SQL:
StrSQL2="SELECT Arrangement.ArrID, Arrangement.ArrTitel, Gentagelser.PeriodeStart,{ fn HOUR(Gentagelser.Tidstart) }AS Timestart,{ fn MINUTE(Gentagelser.Tidstart) }AS minutstart FROM ((Arrangement INNER JOIN Gentagelser ON Arrangement.ArrID = Gentagelser.ArrID) INNER JOIN GentagelsesDage ON Gentagelser.GentagID = GentagelsesDage.GentagID) WHERE (Gentagelser.PeriodeStart='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') OR (Gentagelser.PeriodeStart<='"&datoDB&"' AND Gentagelser.PeriodeSlut>='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') ORDER BY Gentagelser.Tidstart ASC;"
Det var i den retning, at jeg søgte, men har ikke helt oveblikket over dette på nuværende tidspunkt. Håbede derfor at der var et orakel til stede, som kunne den lige fra hoften..
Du kan gøre sådan her, selvom jeg ikke vil anbefale det, da det belater SQL serveren:
SELECT Arrangement.ArrID, Arrangement.ArrTitel, Gentagelser.PeriodeStart,{ fn HOUR(Gentagelser.Tidstart) }AS Timestart,{ fn MINUTE(Gentagelser.Tidstart) }AS minutstart, (SELECT Arrangement.ArrID, Arrangement.ArrTitel, Gentagelser.PeriodeStart,{ fn HOUR(Gentagelser.Tidstart) }AS Timestart,{ fn MINUTE(Gentagelser.Tidstart) }AS minutstart FROM ((Arrangement INNER JOIN Gentagelser ON Arrangement.ArrID = Gentagelser.ArrID) INNER JOIN GentagelsesDage ON Gentagelser.GentagID = GentagelsesDage.GentagID) WHERE (Gentagelser.PeriodeStart='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') OR (Gentagelser.PeriodeStart<='"&datoDB&"' AND Gentagelser.PeriodeSlut>='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') AS TotalRecords) FROM ((Arrangement INNER JOIN Gentagelser ON Arrangement.ArrID = Gentagelser.ArrID) INNER JOIN GentagelsesDage ON Gentagelser.GentagID = GentagelsesDage.GentagID) WHERE (Gentagelser.PeriodeStart='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') OR (Gentagelser.PeriodeStart<='"&datoDB&"' AND Gentagelser.PeriodeSlut>='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') ORDER BY Gentagelser.Tidstart ASC;
Jeg vil istedet anbefale dig, at lave en getRows på dit record set, og så lave en UBound(array, 2), på det array, der kommer ud af det. Så har du alt din data og du kan nemt tælle dine rækker.
glemte også noget: SELECT Arrangement.ArrID, Arrangement.ArrTitel, Gentagelser.PeriodeStart,{ fn HOUR(Gentagelser.Tidstart) }AS Timestart,{ fn MINUTE(Gentagelser.Tidstart) }AS minutstart, (SELECT COUNT(*) FROM ((Arrangement INNER JOIN Gentagelser ON Arrangement.ArrID = Gentagelser.ArrID) INNER JOIN GentagelsesDage ON Gentagelser.GentagID = GentagelsesDage.GentagID) WHERE (Gentagelser.PeriodeStart='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') OR (Gentagelser.PeriodeStart<='"&datoDB&"' AND Gentagelser.PeriodeSlut>='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') AS TotalRecords) FROM ((Arrangement INNER JOIN Gentagelser ON Arrangement.ArrID = Gentagelser.ArrID) INNER JOIN GentagelsesDage ON Gentagelser.GentagID = GentagelsesDage.GentagID) WHERE (Gentagelser.PeriodeStart='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') OR (Gentagelser.PeriodeStart<='"&datoDB&"' AND Gentagelser.PeriodeSlut>='"&datoDB&"' AND GentagelsesDage.DagID='"&dagid&"') ORDER BY Gentagelser.Tidstart ASC;
Men som sagt, jeg vil anbefale dig at bruge getRows istedet.
Nu koder jeg ikke i ASP, men en af de her burde gøre det: 1. Der burde være en eller anden funtion ala PHPs num_rows funktion 2. Sæt en while lække op der tager værdi count op med 1 hver gang løkken kører, løkken skal så køre så mange gange queryen kører.
Ville egentligt gerne have brugte noget i retningen af RecordCount, men har ikke kunne få det til at virke. Min løsning blev at jeg valgte at lave en tæller i loop i en do while, så hvis der skal være en smule pointmæssig retfærdighed, selv om det ikke helt var et svar i den retning jeg søgte, må jeg jo nok smide pointene efter sw_red_6, Så smid lige et svar, hvis du vil have dem.
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.