webForumDet fria alternativet

Räkna poster fel

ASP

14 svar · 404 visningar · startad av Thompa__85

Medlem sedan aug. 2002600 inlägg
Frågan#1

Hejsan!
Har problem att få mitt "räkna-poster" script att fungera med MySQL..

SQL="SELECT COUNT(mail_id) AS Antal, intTillid, intLast FROM mail WHERE intTillid = " & Session("id") & " AND intLast=0"
Set RS2=Server.CreateObject("ADODB.Recordset")
RS2.open SQL, Connect, 3,3

Men får felmesset:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

ODBC driver does not support the requested properties.

/top.asp, line 25

Och skriver jag ut SQL så blir de:
SQL: SELECT COUNT(mail_id) AS Antal, intTillid, intLast FROM mail WHERE intTillid = 1 AND intLast=0

Hur ska jag få det att fungera??

Medlem sedan dec. 20003 887 inlägg
#2

ODBC stödjer inte adOpenKeyset eller adLockOptimistic? Prova att ändra i din connectionstring till

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[i]C:\databas.mdb[/i]"

Eller byt till

RS2.Open SQL, Connect

Då öppnas recordset:et forwardonly och readonly och det bör ju fungera.

Medlem sedan dec. 200012 464 inlägg
#3

ange

option=16384

i din connection-sträng

Medlem sedan aug. 2002600 inlägg
#4

Engine^ skrev:

ODBC stödjer inte adOpenKeyset eller adLockOptimistic? Prova att ändra i din connectionstring till

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[i]C:\databas.mdb[/i]"

Eller byt till

RS2.Open SQL, Connect

Då öppnas recordset:et forwardonly och readonly och det bör ju fungera.

Det första kan jag inte, eftersom jag jobbar mot en MySQL databas.

Men testade det andra, och fick detta felmess:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

/top.asp, line 25

??

Medlem sedan dec. 20003 887 inlägg
#5

Aha...

SQL = "SELECT COUNT(mail_id) AS Antal, intTillid, intLast FROM mail " & _
      "WHERE intTillid = " & Session("id") & " AND intLast=0 " & _
      "GROUP BY intTillid, intLast"

Det kanske kan hjälpa till.

Medlem sedan dec. 200012 464 inlägg
#6

Ja just det. Ta bort intTillid, intLast från select-listan.

Medlem sedan aug. 2002600 inlägg
#7

Engine^ skrev:

Aha...

SQL = "SELECT COUNT(mail_id) AS Antal, intTillid, intLast FROM mail " & _
      "WHERE intTillid = " & Session("id") & " AND intLast=0 " & _
      "GROUP BY intTillid, intLast"

Det kanske kan hjälpa till.

Sådär, inga felmess!
men skriver ut det så här:
<%=Antal%>

Men den skriver inte ut något :/

Så här skrivs sql´n ut:
SQL: SELECT COUNT(mail_id) AS Antal, intTillid, intLast FROM mail WHERE intTillid = 1 AND intLast=0 GROUP BY intTillid, intLast

Medlem sedan dec. 200012 464 inlägg
#8
SQL = "SELECT COUNT(mail_id) AS Antal FROM mail WHERE intTillid = 1 AND intLast=0 "
set rs = connect.execute(sql)
response.write rs("antal")
Medlem sedan aug. 2002600 inlägg
#9

Men, testade samma kod på en annan sida:

SQL = "SELECT COUNT(id) AS Antal,user, kon, alder, loggain, id, intFoto FROM anv WHERE intFoto = 1 ORDER BY loggain desc"
Set RS = Connect.Execute(SQL)

Men får:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

/main.asp, line 142

Medlem sedan dec. 200012 464 inlägg
#10

Vadå samma kod?

Samma typ av fel i alla fall.

Medlem sedan aug. 2002600 inlägg
#11

LarsG skrev:

Vadå samma kod?

Samma typ av fel i alla fall.

Oj, menade samma sätt att räkna poster, på en annan SQL-sats!
Men har pillat lite.. och fått den att säga:
ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/main.asp, line 0

Och så här ser min SQL-sats ut:

SQL = "SELECT COUNT(id) AS Antal, user, kon, alder, loggain, id, intFoto FROM anv WHERE intFoto = 1 GROUP BY loggain DESC"
Set RS = Connect.Execute(SQL)

Och det är när jag skriver ut som jag får felmesset! <%=rs("Antal")%>

:(

Medlem sedan nov. 20017 144 inlägg
#12

Finns det något där då?

if not RS.EOF then
Response.write rs("Antal")
else
Response.write "Här var´e tomt!"
end if
Medlem sedan dec. 200012 464 inlägg
#13

Din group by är helt fel. Alla kolumner i select-listan som inte är med i en aggregatfunktion måste vara med i group by.

SQL = "SELECT COUNT(id) AS Antal, user, kon, alder, loggain, id, intFoto FROM anv WHERE intFoto = 1 GROUP BY user, kon, alder, loggain, id, intFoto DESC"
Set RS = Connect.Execute(SQL)
Medlem sedan aug. 2002600 inlägg
#14

LarsG skrev:

Din group by är helt fel. Alla kolumner i select-listan som inte är med i en aggregatfunktion måste vara med i group by.

SQL = "SELECT COUNT(id) AS Antal, user, kon, alder, loggain, id, intFoto FROM anv WHERE intFoto = 1 GROUP BY user, kon, alder, loggain, id, intFoto DESC"
Set RS = Connect.Execute(SQL)

Okej, fixat de, men samma fel. Fixade Jesper T´s kod, och då skriver den ut Här va de tomt..
Men asså jag vet ju att det finns poster, eftersom den skriver ut dom några rader upp :/

Skickar med ett txt dokument på dom rörande koderna så får ni se! Tack på förhand!

Medlem sedan aug. 2002600 inlägg
#15

Fixat! Tack vare Ampy ;)

<%
rs.movefirst
Response.write rs("Antal")
%>

Ampy:
eftersom du har loopat igenom hela recordsetet finns det ingen rad/post kvar, därför kunde du inte skriva ut antal, vad movefirst gör är att den hoppar tillbaka till första steget så då kan du skriva ut antalet

Tack ampy!

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)