S Sammy Medlem sedan maj 2000 202 inlägg Trådstart 22 jan. 2002 17:31 #1 Hur räknar man poster ur flera tabeller?
Nu använder jag detta för att räkna ifrån en tabell:
\<%
Set Connect = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("../../db/databas.mdb")
Connect.Open "Driver={Microsoft Access Driver (\*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "Select Count(IDNR) AS iCount from TABELL1"
Set RS = connect.execute(SQL)
Response.write RS("iCount")
%\>
\<%
Connect.close
Set Connect = nothing
%\>
Min önskan är att kunna räkna poster ifrån 3 tabeller. (tabell1, tabell2 och tabell3)
L LarsG Medlem sedan dec. 2000 12 464 inlägg Varför? Borde du inte slå ihop tabellerna i så fall?
select (select count(*) from tabell1) + (select count(*) from tabell2) + (select count(*) from tabell3)
Nu vet jag inte om Access tillåter att du utelämnar from. Det går ju att lösa med en distinct och vilket tabellnamn som helst där det finns (få) poster
S Sammy Medlem sedan maj 2000 202 inlägg <%
Set Connect = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("../../db/databas.mdb")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "select (select count(\*) from tabell1) + (select count(\*) from tabell2) + (select count(\*) from tabell3)"
Set RS = connect.execute(SQL)
Response.write RS("count")
%\>
\<%
Connect.close
Set Connect = nothing
%\>
Var det så du hade tänkt dig då eller? Det fungerade inte tyvärr...
L LarsG Medlem sedan dec. 2000 12 464 inlägg Och vad får du för fel då?
Response.write RS("count")
fungerar inte då kolumnen inte har något namn i selectsatsen.
Du får använda
Response.write RS(0)
S Sammy Medlem sedan maj 2000 202 inlägg Nej.. det gick inte del heller?
L LarsG Medlem sedan dec. 2000 12 464 inlägg Och vad får du för fel då?
S Sammy Medlem sedan maj 2000 202 inlägg <%
Set Connect = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("../../db/databas.mdb")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "select (select count(*) from tabell1) + (select count(*) from tabell2) + (select count(*) from tabell3)"
Set RS = connect.execute(SQL)
Response.write RS(0)
%>
<%
Connect.close
Set Connect = nothing
%>
Fick som svar att det var ett odefinerat fel?
S Sammy Medlem sedan maj 2000 202 inlägg Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Reserverat fel (|). Det finns inget meddelande för felet.
L LarsG Medlem sedan dec. 2000 12 464 inlägg Imposant. Får du felet vid execute?
Om du testar så här då?
SQL = "select count(*) from
(select 1 from tabell1 union all select 1 from tabell2 union all select 1 from tabell3) as s"
S Sammy Medlem sedan maj 2000 202 inlägg Nej, det fungerade inte heller...
Vet inte vart jag får felet men jag antar att det är vid execute?
Får nog ge upp med att försöka räkna alla poster ur tre olika tabeller? eller?
L LarsG Medlem sedan dec. 2000 12 464 inlägg Det går väl på något sätt
Det finns en sån här lite tråkig variant.
sql = "select count(*) from tabell1 union all select count(*) from tabell2 union all select count(*) from tabell3"
set rs = connect.execute(sql)
count = 0
while not rs.eof
count = rs(0) + count
rs.movenext
wend
i värsta fall får du väl köra det som tre separata frågor.