Kan man räkan antalet poster man får ut via en SQL-sats utan att använda .getrows
Om det går hur gör man då?
18 svar · 403 visningar · startad av icaaq
Kan man räkan antalet poster man får ut via en SQL-sats utan att använda .getrows
Om det går hur gör man då?
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,
ok....tack ska testa när jag kommer hem
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
Kan det ha nått att göra med att jag numera kör med mySQL??
Jo, felmeddelandet pekar åt det hållet.
Har du testat med andra kombinationer av cursortype och locktype?
Jag har testat 3, 3
Men ....vilka andra har du att erbjuda?
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?
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
'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??
-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å?
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.]
Har du nått annat förslag?
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.
Jag får väll göra så da...men det blir imorron ...tack igen ..
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
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