---
title: "Räkna antal SQL-poster"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/178947-räkna-antal-sql-poster"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Agneus"
published: "2009-06-10T16:48:42.000Z"
updated: "2009-06-10T20:53:18.000Z"
replies: 7
views: 1706
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/178947-räkna-antal-sql-poster"
---

# Räkna antal SQL-poster

## #1 — Agneus, 2009-06-10T16:48Z

Här kollar jag det totala antalet poster i tabellen. OK

```
'Räknar totala antalet poster i Tabellen
  Dim RS
  Set RS = Conn.Execute("SELECT count(*) AS antalposter FROM Tabellen")

  <%=RS("antalposter")%>
```

Här hämtar jag alla namn från poster som har ett Pnr.
**Hur skriver jag för att ta reda på hur många poster, som hämtas med just detta urval?**

```
Dim strSQL
strSQL = "SELECT Pnr,fnamn,enamn FROM Tabellen WHERE Pnr like 'P%';"
```

Permalänk: https://www.webforum.nu/p/178947

## #2 — nitro2k01, 2009-06-10T17:28Z

Fritt från huvudet och lite googlande... (Dock otestat) Du kan behöva justera koden lite utifrån huruvida arrayer har startindex 0 eller 1, men jag tror att koden i det stora hela ska funka.

```
Dim strSQL, RSm, numRows
Dim arrayResult()
strSQL = "SELECT Pnr,fnamn,enamn FROM Tabellen WHERE Pnr like 'P%';"
Set RS = Conn.Execute(strSQL)

If oRecordSet.EOF
  numRows = 0
Else
  arrayResult = RS.GetRows()
  numRows = UBound(arrayResult)
End If

Response.Write("<div>Hittade " & numRows & " rader</div>")

For i = 1 To numRows
  Response.Write "<div>" & arrayResult(i, "fnamn") & "</div>"
Next
```

Permalänk: https://www.webforum.nu/p/2190257

## #3 — Agneus, 2009-06-10T18:34Z

Ändrade

```
If oRecordSet.EOF
```

till

```
If rs.EOF THEN
```

får felmeddelande "Type mismatch" på raden: arrayResult = RS.GetRows()

Permalänk: https://www.webforum.nu/p/2190271

## #4 — Peter S, 2009-06-10T19:04Z

Dim arrayResult() skall vara Dim arrayResult

Innan du använder arrayResult sedan vill du kontrollera att det verkligen är en array:

```
arrayResult = rs.getrows()
...
if isarray(arrayResult) then
  ...
else
  ' inget resultat
end if
```

Permalänk: https://www.webforum.nu/p/2190277

## #5 — Agneus, 2009-06-10T20:18Z

```
<%@Language=VBScript %>
<%option explicit%>

<%
Dim path
path = Server.MapPath("/db/källor.mdb")
	
Dim Conn 
Set Conn=server.createobject("adodb.connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & path

Dim strSQL, RSm, numRows
Dim arrayResult

strSQL = "SELECT id,Pnr,Fornamn,Efternamn,Dokument,Ar,Plats FROM KällTab WHERE Pnr like 'P%' ORDER BY Efternamn,Fornamn,Pnr asc;"
		
Dim rs
Set rs = Conn.Execute(strSQL)

If rs.EOF THEN
numRows = 0
Else
arrayResult = RS.GetRows()
numRows = UBound(arrayResult)
End If

Response.Write("<div>Hittade " & numRows & " rader</div>")

Dim i
For i = 1 To numRows
Response.Write "<div>" & arrayResult(i, "Fornamn") & "</div>"
Next
%>
```

\____________________________________\_

Resultat:

 Hittade 6 rader

 Microsoft VBScript runtime error '800a000d' 

 Type mismatch: '\[string: "Fornamn"\]' 

 /källor/lista_namn.asp, line 30 
\____________________________________\_

6 rader. Bör vara ca 500 poster.
Vad ska *arrayResult(i, "Fornamn")* visa?
På en 10-gradig skala för ASP kunnande, ligger jag på en 2:a. Så vad betyder Peters resonemang om arrayer, i klartext?

Permalänk: https://www.webforum.nu/p/2190285

## #6 — Peter S, 2009-06-10T20:34Z

```
<%@Language=VBScript %>
<%option explicit%>

<%
Dim path
path = Server.MapPath("/db/källor.mdb")
	
Dim Conn 
Set Conn=server.createobject("adodb.connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & path

Dim strSQL, RSm
Dim arrayResult

strSQL = "SELECT id,Pnr,Fornamn,Efternamn,Dokument,Ar,Plats FROM KällTab WHERE Pnr like 'P%' ORDER BY Efternamn,Fornamn,Pnr asc;"
		
Dim rs
Set rs = Conn.Execute(strSQL)

If not rs.EOF
  arrayResult = RS.GetRows()
End If

RS.Close

if not isarray(arrayResult) then
  response.write "inget resultat"
else
  Response.Write("<div>Hittade " & ubound(arrayResult, 2) & " rader</div>")

  Dim i
  For i = lbound(arrayResult, 2) To ubound(arrayResult, 2)
    Response.Write "<div>" & arrayResult(2, i) & "</div>"
  Next
end if
%>
```

GetRows() returnerar en tvådimensionell array där den första dimensionen motsvarar kolumner och den andra dimensionen rader. Båda dimensionerna är 0-baserade, så t.ex. arrayResult(2, 0) hämtar det tredje fältet i SELECT:en för den första raden.

Permalänk: https://www.webforum.nu/p/2190288

## #7 — preben, 2009-06-10T20:52Z

Arrayer:

Tänkk dig ett fisknät. Första rutan är (0,0) andra är (0,1) tredje är (0,2). Detta är i sidled.

I höjdled är första raden (0,0) , samma som ovan, givetvis. andra raden (1,0) tredje, (2,0)

\*\*\*
Du vet hur många poster i sidled som du laddar. Det är dom i din sql-kod.

id, Pnr, Fornamn, Efternamn, Dokument, Ar, Plats 

ID är plats noll, personnummer är plats ett och förnamn är plats två. Så. För att få reda på första personens förnamn så VET man att den platsen är arrayResult(2,0)

\*\*\*
Så... hur många poster är i sidled? Det vet du men kan med kod räkna

response.write UBound(arrayResult,1)

detta bör resultera i en sexa eftersom första posten är noll och det är sju poster.

Så... hur många poster finns det då!? Det vet man inte, men det går att kolla med kod!

response.write UBound(arrayResult ,2)

Är denna siffra 300 då vet du att det finns 301 poster för första posten är ju noll!

Are you with!?

\*\*\*
UBound = Upper Bound
LBound = Lower Bound ... vilket är rätt meningslöst för det är ju alltid noll. 

I ASP används inte LBound, men det kan vara bra att känna till. Lite kuriosa.

(Kanske det används i avancerade varianter men jag har aldrig stött på det.)

Permalänk: https://www.webforum.nu/p/2190292

## #8 — Agneus, 2009-06-10T20:53Z

:) Nu redovisas de 530 raderna.
Stort tack Nitro, Peter och Preben för hjälpen

Permalänk: https://www.webforum.nu/p/2190293

---

Tråden på webben: https://www.webforum.nu/amne/asp/178947-räkna-antal-sql-poster
