http://cgi.webforum.nu/wf/Forum11/HTML/001355.html
------------------
essentitia preter non sans multiplicandum
18 svar · 349 visningar · startad av icaaq
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]
http://cgi.webforum.nu/wf/Forum11/HTML/001355.html
------------------
essentitia preter non sans multiplicandum
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.
ok....tack ska testa när jag kommer hem :)
------------------
[Har aldrig redigerats av någon den 11 okt 2001]
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]
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]
Jo, felmeddelandet pekar åt det hållet.
Har du testat med andra kombinationer av cursortype och locktype?
------------------
essentitia preter non sans multiplicandum
Jag har testat 3, 3
Men ....vilka andra har du att erbjuda?
------------------
Icaaq, mannen med korven. (!)
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]
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. (!)
'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. (!)
-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
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]
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]
Jag får väll göra så da...men det blir imorron ...tack igen .. :)
------------------
Icaaq, mannen med korven. (!)
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.*
:e Weeeeeeeee
Jag kom en bit på vägen nu iaf...tack PatrikB :)
------------------
Icaaq, mannen med korven. (!)
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