Avatar billede reb Nybegynder
25. januar 2005 - 11:24 Der 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;"


Mvh
Rene´
Avatar billede reb Nybegynder
25. januar 2005 - 11:25 #1
Helst samtidig med at jeg selvfølgelig får dataen over i recordsettet, selvfølgelig...
Avatar billede sw_red_6 Nybegynder
25. januar 2005 - 11:27 #2
kan du ikke gennemløbe StrSQL2 i en while og tælle det op?
noget i retning af
while (StrSQL2) {
  poster++
}
Avatar billede sw_red_6 Nybegynder
25. januar 2005 - 11:28 #3
ellers vil jeg sige at du skal lave noget med SELECT count * men det er for længe siden jeg har kigget på det til at jeg kan finde en løsning lige nu
Avatar billede reb Nybegynder
25. januar 2005 - 11:30 #4
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..
Avatar billede ldanielsen Nybegynder
25. januar 2005 - 13:18 #5
Lad mig se hvordan du åbner Recordsettet. Du vil sikkert kunne klare det med Rec.Recordcount
Avatar billede jgp Nybegynder
25. januar 2005 - 13:18 #6
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.
Avatar billede reb Nybegynder
25. januar 2005 - 13:23 #7
idanielsen >> set RS =conn.execute(StrSQL2)

jgp>> Jeg kan ikke lige se hvor forskellen på din SQL er .
Avatar billede jgp Nybegynder
25. januar 2005 - 13:29 #8
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.
Avatar billede ldanielsen Nybegynder
25. januar 2005 - 14:48 #9
Hvad med at sige RS.RecordCount? kan ikke lige overskue om det vil virke
Avatar billede talrinys Nybegynder
25. januar 2005 - 15:01 #10
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.
Avatar billede reb Nybegynder
29. januar 2005 - 20:48 #11
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.

Tak for alle andre indlæg, og forsøg på hjælp.
Avatar billede reb Nybegynder
13. april 2005 - 13:14 #12
Nå ikke, så tager jeg dem da bare retur.  :-)
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