Tjena, RecordCount heter den propertyn för ADO... Ett sätt som funkar är att stega igenom recordsettet och räkna; Varför inte det naturligaste? dim antal Recordset.RecordCount kan retunerar bara antalet poster om dett är känt för recordsetet. Antalet poster är känt om man använder Statisk cursor eller cursor på klientsidan. Annars retunerar Recordset.RecordCount = 0 för inga poster och Recordset.RecordCount = -1 om det finns poster men antalet är inte känt. Just RecordCount går det troll i, ena dagen fungerar det den andra inte... Om man inte skall loopa igenom recordsetet. Utan bara hämta antalet poster. Är Count ett bättre alternativ: Du kan ju också göra en loop som loppar igenom sig. Att loopa sig igenom recorsdsetet är ju som om tre killar samarbetar VBA, ADO och JET OLEDB provider. JET ropar till ADO som ropar till VBA. VBA samanställer summan.Antal poster i ett RecordSet
undrar hur man kan ta reda på hur många poster det finns i ett recordset. Jag vet att man kan använda sig at COUNT(*) As Antal i SELECT-satsen, men det verkar inte funka att både hämta och räkna antal i samma sats. Så jag tänkte att det kanske går att göra något liknande det här:
<code>
Dim Antal
Antal = RecordSet.NumberofRecords
</code>
Är det någon som vet exakt hur man gör?
Tacksam för svar.
...I'll Take them myself...Sv: Antal poster i ett RecordSet
men visst ska det gå att köra
<code>
SELECT COUNT(*), ID FROM tbl_SomeThing
</code>
iofs får du ju själva värdet för varje post du har i tabellen, men ändockSv: Antal poster i ett RecordSet
do while not RecordSet.eof
Antal=Antal+1
loopSv: Antal poster i ett RecordSet
dim antal = rs.recordset
Det räcker.Sv: Antal poster i ett RecordSet
antal = rs.RecordCount
OM rs är ett recordset dvs
/JohanSv: Antal poster i ett RecordSet
Sv: Antal poster i ett RecordSet
Här är den kod jag använder mig av, denna fungerar dock alltid för mig.
Oavsett om det är mySQL eller jetSQL (access)
<code>
' En client-side cursor
const adUseClient = 3
' Databas connection via ODBC
set mySqlConn = Server.CreateObject("ADODB.Connection")
mySqlConn.Open "dsndb"
' Eller någon annan typ av connectionsträng, föredrar dock dsn lösningar.
' Standard open connection
set rs = Server.CreateObject("ADODB.Recordset")
mySQL = "SELECT * FROM tabell"
rs.Source = mySQL
Set rs.ActiveConnection = mySqlConn
rs.CursorLocation = adUseClient
rs.Open
' och så räknar vi
rscount = rs.RecordCount
' stänger alla connections
rs.Close
mySqlConn.close
set rs = nothing
set mySqlConn = nothing
Response.Write(rscount)
' om du vill räkna i mer avancerade tabeller
' eller enbart lyfta ut unika träffar så
' använd tex. denna SQL sträng
mySQL = "SELECT DISTINCT fält FROM tabell"
</code>
Jag kör win2000 server SP3 (med alla hotfixar, tro det eller ej) och allt fungerar tokbra.
IIS 5.0
mySQL 3.23
Access2002
Om det strular så uppdatera MDAC/ADO
kolla på denna sida om du är osäker
http://msdn.microsoft.com/library/default.asp?url=/downloads/list/dataaccess.asp
Lycka till!
// ericSv: Antal poster i ett RecordSet
<code>
Dim Conn
' Databas connection via ODBC
set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ">>>Connection string<<<"
' Standard open connection
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT Count(*) As Antal FROM tabell", Conn
' och så räknar vi
Response.Write "Antal poster: " & rs("Antal")
' stänger recordset
rs.Close
Set rs = nothing
' stänger connection
Conn.close
Set Conn = Nothing
</code>Sv: Antal poster i ett RecordSet
t.ex
Antal = 0
If RecSet.Eof
Antal = antal + 1
RecSet.MoveNext
End if
då loppar den sig igenom med antal +1 och nästa gång antal + antal + 1
då blir de störe och störe och den loppar igenom ända till den är på sista posten.
Antal = 0 är om man av misstag använder antal som variabel för något annat är de rätt bra att sätta den på 0 värde så de är 0. i tal och blir 1 när den kör loopen istället för kanske bli 150 då den hade värdet 149 på föra uppgiften som den skulle göra.
//MVH Mattias.Sv: Antal poster i ett RecordSet
Tänk dig hur mycket snabbare xdet går om JET killen räknade samman allt och sedan skickar det till VBA genom ADO.
Om man ska lista posterna på sidan och vill visa antalet längst ned på sidan. Så tycker jag ditt sätt till och kan vara bättre än att anropa Count.
Inget sätt är fel. Men några är bättre än andra.