webForumDet fria alternativet

räkna poster..

ASP

18 svar · 349 visningar · startad av icaaq

Medlem sedan okt. 20005 273 inlägg
Frågan#1

Kan man räkan antalet poster man får ut via en SQL-sats utan att använda .getrows :q

Om det går hur gör man då?

------------------
[Har aldrig redigerats av någon den 11 okt 2001]

Medlem sedan dec. 200012 464 inlägg
#2

http://cgi.webforum.nu/wf/Forum11/HTML/001355.html

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 200032 967 inlägg
#3

Om du öppnar recordsetet med en dynamisk cursor kan du använda objRs.RecordCount för att få reda på antalet poster utan att behöva ställa en separat fråga för det.

Mvh,

------------------
All your base are belong to me.

Medlem sedan okt. 20005 273 inlägg
#4

ok....tack ska testa när jag kommer hem :)

------------------
[Har aldrig redigerats av någon den 11 okt 2001]

Medlem sedan okt. 20005 273 inlägg
#5

jag får bara:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC driver does not support the requested properties.

strSQL = "SELECT personid, F_FirstName, F_LastName FROM persons"&_
				"WHERE F_FirstName = '"&strFNamn&"' AND F_LastName = '"&strEnamn&"'"&_
				" AND F_user_id = "&strMMID
				'Öppnar en connection till db
				Set ObjConn = Server.CreateObject("ADODB.Connection")
					ObjConn.connectionString = "driver={MySQL};UID=root;PWD=;Database=xxxxxx;option=16384"
					ObjConn.Open
						Set ObjRS = Server.CreateObject("ADODB.Recordset")
							[b]ObjRS.Open strSQL, ObjConn, 1, 3[/b]
							'Lägger in hur många personer som stämmer in på SQL-Satsen
							intAntalPerson = ObjRS.RecordCount

Någon lär ju se vad som är fel :q

------------------
Icaaq, mannen med korven. (!)

[Redigerat av icaaq den 16 okt 2001]

Medlem sedan okt. 20005 273 inlägg
#6

Kan det ha nått att göra med att jag numera kör med mySQL??

------------------
Icaaq, mannen med korven. (!)

[Redigerat av icaaq den 16 okt 2001]

Medlem sedan dec. 200012 464 inlägg
#7

Jo, felmeddelandet pekar åt det hållet.

Har du testat med andra kombinationer av cursortype och locktype?

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 20005 273 inlägg
#8

Jag har testat 3, 3
Men ....vilka andra har du att erbjuda?

------------------
Icaaq, mannen med korven. (!)

Medlem sedan dec. 200012 464 inlägg
#9

Om du tittar under cursortype och locktype så står det.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthrstopen.asp

Varför kan du inte använda getrows eller ett frikopplat recordset?

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 16 okt 2001]

Medlem sedan okt. 20005 273 inlägg
#10

oo.....

det jag vill är att kolla om det finns någon person med i tabellen persons med hjälp av strSQL

Finns det en(1) sån ska bara positionstabellen uppdateras ........
Finns det två(2) så ska man välja vilken som ska uppdateras..........
Finns det ingen (0) så ska både persons och positions uppdateras.......

men som sagt ....det vill inte funka...

Jag ska testa lite andra cursortypes :l

------------------
Icaaq, mannen med korven. (!)

Medlem sedan okt. 20005 273 inlägg
#11
		'Kollar om Spelaren finns i Tabellen persons
		strSQL = "SELECT personid, F_FirstName, F_LastName FROM persons "&_
				"WHERE F_FirstName = '"&strFNamn&"' AND F_LastName = '"&strEnamn&"'"&_
				" AND F_user_id = "&strMMID
				'Öppnar en connection till db
					Set Objconn = Server.CreateObject("ADODB.Connection") 
						Objconn.ConnectionString = "driver={MySQL};UID=root;PWD=;Database=medimatch;option=16384"
						Objconn.open
						Set ObjRS = Server.CreateObject("ADODB.RecordSet")
							ObjRS.Open strSQL, ObjConn, 1, 3
							'Lägger in hur många personer som stämmer in på SQL-Satsen
							intAntalPerson = ObjRS.RecordCount
							Response.Write "antal person som finns: "&intAntalPerson
							If intAntalPerson = 1 Then

Nu verkar den funka....för jag får inge felmess men jag får:

antal person som finns: [b]-1[/b]

Jag vet att det finns en post med det jag har postat för det har jag kört i frontmySQL ....

Hur kan det bli -1??

------------------
Icaaq, mannen med korven. (!)

Medlem sedan dec. 200012 464 inlägg
#12

-1 tolkas som att det finns poster men man vet inte hur många.

Kan du inte använda count i din select-sats då?

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 20005 273 inlägg
#13

Jag har testat denna:

strSQL = "SELECT personid, F_FirstName, F_LastName, " & _
" COUNT(*) as intAntal " & _ 
" FROM persons"&_
"WHERE F_FirstName = '"&strFNamn&"' AND F_LastName = '"&strEnamn&"'"&_
" AND F_user_id = "&strMMID

men jag får då:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[TCX][MyODBC]Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is [b]illegal[/b] if there is no GROUP BY clause

:(

OT: Kan jag åka dit för det där ??(feta texten alltså ;) )

[red.] Glömde en liten men ack så viktig ;) [/red.]
------------------
Icaaq, mannen med korven. (!)

[Redigerat av icaaq den 16 okt 2001]

Medlem sedan okt. 20005 273 inlägg
#14

Har du nått annat förslag?

------------------
Icaaq, mannen med korven. (!)

Medlem sedan dec. 200012 464 inlägg
#15

Om man blandar count och andra kolumner så måste man lägga på group by också.
Group by innebär att man gör count för varje unik kombination av de kolumner som ingår.

Men det verkar inte passa i ditt fall då du vill ha personid också och den är väl unik? Jag ser inte hur du kan få ihop det med en fråga i Mysql.

Antingen kan du testa flera varianter av cursortype eller så kan du testa med att lägga in ett anrop till movelast innan du använder recordcount.

Eller använd ett frikopplat recordset eller getrows eller tarversera recordsetet och räkna själv.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 17 okt 2001]

Medlem sedan okt. 20005 273 inlägg
#16

Jag får väll göra så da...men det blir imorron ...tack igen .. :)

------------------
Icaaq, mannen med korven. (!)

Medlem sedan mars 20002 836 inlägg
#17

Testa med att ändra cursorlocation och cursortype och locktype:

Set ObjRS = Server.CreateObject("ADODB.RecordSet")
ObjRS.CursorLocation = 3 '## -- adUseClient
ObjRS.Open strSQL, ObjConn, 3, 1

cya,
PatrikB

------------------
*ordning och reda!, pengar på fredag.*

Medlem sedan okt. 20005 273 inlägg
#18

:e Weeeeeeeee

Jag kom en bit på vägen nu iaf...tack PatrikB :)

------------------
Icaaq, mannen med korven. (!)

Medlem sedan jan. 2001510 inlägg
#19

Själv så loopar jag bara genom alla recordsetet. Har väl fått för mig att det går snabbare?

Har aldrig riktigt kommit underfund med vad som är sbabbaste sättet? Jag är inte heller riktigt säker på vad alla attribut till Open betyder?

Set rs = Conn.Execute(SQL)

Do Until rs.EOF

count = count +1
rs.MoveNext

Loop

rs.MoveFirst

/JANspeed

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