webForumDet fria alternativet

ADO recordset.PageCount returnerar -1

ASP

14 svar · 552 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Frågan#1

Hej....

Försöker labba lite med ADO recordset.PageCount.
Får det inte att fungera...

response.write rs.PageCount &"<hr>"

returnerar -1.

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/_mattias övrigt/temp/gb.asp, line 118

If the provider does not recognize this property, a value of -1 will be returned.

Använder följande.

Set Connect = Server.CreateObject( "Adodb.Connection" )
Connect.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath( "gb_2002.mdb" )
Connect.ConnectionString = "Data Source='" & MdbFilePath & "'"
Connect.open

Hur får jag det att fungera? Jag har sett ett annat skript som använde funktionen och jag försöker göra något liknande :)

Medlem sedan juni 200032 967 inlägg
#2

Då har du öppnat recordsetet på fel sätt.

Medlem sedan maj 20012 080 inlägg
#3

Hej igen @nders.

StrSql = "SELECT * FROM gbook"
set rs = connect.execute(StrSql)

while not rs.eof 
response.write rs("Name") &"<br>"
rs.movenext
wend

if rs.EOF and rs.BOF then '  Nothing Found %>
	<P><font face="Verdana, Arial, Helvetica" size=2>No One has signed the book</p></font>
<% exit Sub
End If 

' Something found
TotalRows = rs.RecordCount 

rs.PageSize = NumPages
TotalPages = rs.PageCount            '(DETTA ÄR LINE 125)

response.write TotalRows &"<hr>"
response.write rs.PageCount &"<hr>"

Returnerar:

mattias ndfs
jkjkl
jjk
-1
--------------------------------------------------------------------------------
-1
--------------------------------------------------------------------------------

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/_mattias övrigt/temp/gb.asp, line 125

När jag loopar mitt recordset och printar ut så fungerar det. Men page funktionen fungerar inte. Säger det er något?

Medlem sedan juni 200032 967 inlägg
#4

Ja, det säger oss att du öppnat ditt recordset på fel sätt. :)
Du måste ange låstyp och cursortyp när du öppnar ditt recordset för att kunna använda recordcount och pagecount.

Söken sie, bitte. :)

mvh

Medlem sedan maj 20012 080 inlägg
#5

Hittar en massa information... men fattar inte riktigt.

Set Connect = Server.CreateObject( "Adodb.Connection" )
Connect.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath( "gb_2002.mdb" )
Connect.ConnectionString = "Data Source='" & MdbFilePath & "'"
Connect.open
	StrSql = "SELECT * FROM gbook"
	Set rs = Server.CreateObject("ADODB.RecordSet")
	RecSet.Open StrSql, Conn, 1, 2

????

Medlem sedan juni 200032 967 inlägg
#6

Läs här om låstyper och cursortyper, så kan du säkert få ihop det.

mvh

Medlem sedan maj 20012 080 inlägg
#7
Set Connect = Server.CreateObject( "Adodb.Connection" )
Connect.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath( "gb_2002.mdb" )
Connect.ConnectionString = "Data Source='" & MdbFilePath & "'"
Connect.open
	StrSql = "SELECT * FROM gbook"
	Set rs = Server.CreateObject("ADODB.RecordSet")
	RecSet.Open StrSql, Connect, 2, 1

Returnerar:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/_mattias övrigt/temp/gb.asp, line 90

Medlem sedan juni 200032 967 inlägg
#8

RecSet är ju inte samma som rs, ju. :)

Medlem sedan maj 20012 080 inlägg
#9

Bra att du inte ger upp @nders ;)

Set Connect = Server.CreateObject( "Adodb.Connection" )
Connect.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath( "gb_2002.mdb" )
Connect.ConnectionString = "Data Source='" & MdbFilePath & "'"
Connect.open
	StrSql = "SELECT * FROM gbook"
	Set rs = Server.CreateObject("ADODB.RecordSet")
	rs.Open StrSql, Connect, 2, 1 	'2=adOpenDynamic, 1=adLockReadOnly

Ger nu (igen):

mattias ndfs
jkjkl
jjk
-1
--------------------------------------------------------------------------------
-1
--------------------------------------------------------------------------------

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/_mattias övrigt/temp/gb.asp, line 126

Medlem sedan juni 200032 967 inlägg
#10

Provat med 3:an (adOpenStatic)?

Medlem sedan maj 20012 080 inlägg
#11

B I N G O...

Set Connect = Server.CreateObject( "Adodb.Connection" )
Connect.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath( "gb_2002.mdb" )
Connect.ConnectionString = "Data Source='" & MdbFilePath & "'"
Connect.open
	StrSql = "SELECT * FROM gbook"
	Set rs = Server.CreateObject("ADODB.RecordSet")
	rs.Open StrSql, Connect, 3, 1 	'3=adOpenStatic, 1=adLockReadOnly

Kunde inte fått detta att fungera utan hjälp. Nu sak jag försöka lära mig hur resten av ADO fungerar... återkommer väl antar jag :r

Medlem sedan maj 20012 080 inlägg
#12

Men...

set rs = rs.NextRecordset

Ger...

ADODB.Recordset error '800a0cb3'

Current provider does not support returning multiple recordsets from a single execution.

/_mattias övrigt/temp/gb.asp, line 140

Jag är inte 100% med i matchen ännu... Vet inte riktigt vad det är för sport vi spelar om jag ska vara helt ärlig :)

Medlem sedan dec. 1999707 inlägg
#13

Kommer inte ihåg hur det där fungerar exakt. Jag brukar köa med mina gamla funktioner. Kanske kan testa med dom? :o

	Function ExecSql(ByVal sSql, ByVal sCS)
		'response.write sSql & "<br>" & vbCrLf:response.flush
		Dim oConn, oRec

		Set oRec = Server.CreateObject("ADODB.Recordset")
		oRec.CursorLocation = 3				' adUseClient
		oRec.Open sSql, sCS
		Set oRec.ActiveConnection = Nothing
		Set ExecSql = oRec
		Set oRec = Nothing

	End Function

	Function ExecSqlConnected(ByVal sSql, ByVal sCS)
		'response.write sSql : response.flush
		Dim oRec
		
		Set oRec = Server.CreateObject("ADODB.Recordset")
		oRec.CursorLocation =	2	' adUseServer
		oRec.CursorType =		1	' adOpenDynamic
		oRec.LockType =			3	' adLockOptimistic
		oRec.Open sSql, sCS
		Set ExecSqlConnected = oRec
		Set oRec = Nothing

	End Function
Medlem sedan dec. 1999707 inlägg
#14

Oj, jag var för sent ute. :)

Medlem sedan maj 20012 080 inlägg
#15

Böt ut "set rs = rs.NextRecordset" mot "rs.movenext" och det fungerar. Duger tillsvidare. För trött för att tänka nu :(

262 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)