Går det att får fram hur många poster ett recordset innehåller utan att loopa ?
längd på ett recordset utan att loopa
12 svar · 331 visningar · startad av mattiasnordin
Du kan förresten läsa lite i denna tråd. Känns något av det igen? Där använder du recordcount.
Japp. Enbart med rs.open och lämplig låstyp / cursortyp.
OT: Det kan vara värt att veta att .Execute-metoden däremot har en ByRef-parameter som kallas RecordsAffected. Den returnerar dock -1 vid SELECT-statements, men returnerar antalet påverkade rader vid t.ex. INSERT, UPDATE eller DELETE.
mattiasnordin skrev:
Thanx killar.
Då loopar jag lite i detta fall :)
Jag skulle nog snarare rekommendera att du använder .Open på Recordset-objektet istället, det är bättre både prestandamässigt och programmeringsmässigt. Du kan använda .Open med rätt konstanter utan att det behöver kosta skjortan i prestanda:
Const adOpenStatic = 3
Const adLockReadOnly = 1
rs.Open sSQL, objConn, adOpenStatic, adLockReadOnly
eller
rs.Open sSQL, objConn, 3, 1
Då ska jag lära mig att börja köra denna variant istället. Är man självlärd så blir man lite bekväm och kör det som alltid har fungerat istället för göra rätt ;)
Object required error på följande kod:
' Access 2002 '
Set Connect = Server.CreateObject( "Adodb.Connection" )
Connect.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath( "/staffdatabase2/staffdatabase_2003.mdb" )
Connect.ConnectionString = "Data Source='" & MdbFilePath & "'"
Connect.open
sql = "SELECT * FROM T_staff "
Const adOpenStatic = 3
Const adLockReadOnly = 1
rsStaff.Open sql, Connect, adOpenStatic, adLockReadOnly
Hmmm... har inte erfarenhet av rätt syntax ännu. Hilfe :)
Hittade felet. Tack killar.
sql = "SELECT * FROM T_staff "
Const adOpenStatic = 3
Const adLockReadOnly = 1
Set rsStaff = Server.CreateObject("ADODB.RecordSet")
rsStaff.Open sql, Connect, adOpenStatic, adLockReadOnly
Observera att 3,1 gör ditt recordset till ReadOnly (adLockReadOnly) och din cursor till Static (adOpenStatic). På svenska innebär det att du inte kan göra ändringar i recordset'et, men dock kan röra dig fritt framåt (.MoveNext) eller bakåt (.MovePrevious), samt med t.ex. AbsolutePosition placera markören på valfritt index i ditt recordset.
Skall du bara flytta framåt i ditt recordset kan du även använda adOpenForwardOnly (som har värdet 0) istället för adOpenStatic, om du skall t.ex. bara dra ut data som en lista.
Läs mer om pekare och låstyper under ADO på MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstcursortypeenum.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstlocktypeenum.asp
Mer om .Open:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthrstopen.asp
Kom ihåg, MSDN Library är din bästa vän. ;)
Bra info. Blev en liten snabbkurs det här. Vem ska jag skicka fakturan till ??? *ler*
Jag har aldrig gjort något mer advancerat än att stegat mig fram i ett recordset så det duger gott. Bra att lära sig något nytt dock.
Jag slapp loopen i alla fall :)

