---
title: "Skicka ett RecordSet som värde från funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/117319-skicka-ett-recordset-som-värde-från-funktion"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "daniel_ra"
published: "2004-12-04T14:41:41.000Z"
updated: "2004-12-04T18:58:39.000Z"
replies: 11
views: 284
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/117319-skicka-ett-recordset-som-värde-från-funktion"
---

# Skicka ett RecordSet som värde från funktion

## #1 — daniel_ra, 2004-12-04T14:41Z

Kan jag på något vis returnera ett Recordset från en funktion
som jag kan använda utanför.

tänkte mig att jag bara skall ange en sql-fråga som parameter till funktionen och sedan få tillbaka ett recordset som jag kan använda hur som helst utanför funktionen.

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

## #2 — Viktor, 2004-12-04T14:43Z

Långt ifrån en ASP expert men borde inte detta fungera?

```
Public Sub Hello()
     Dim rs As Recordset
     rs=getRecord("SELECT * FROM users")
     ' Använd rs här
End Sub

Public Function getRecord(ByVal query As String) As Recordset
     Dim rs As Recordset
     ' kör din sql kod och fyll ditt recordset
     getRecord=rs
End Sub
```

/Viktor

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

## #3 — OveRRidE, 2004-12-04T14:54Z

Det är fungerar alldeles utmärkt, Viktor, förutom att man inte kan deklarera datatyper i VBScript, vilket gör att man får ta bort 'As Recordset' (som förövrigt bör föregås av ADODB.) från de ställen där du deklarerar ett recordset.

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

## #4 — daniel_ra, 2004-12-04T15:00Z

får det inte att fungera, nåt fel gör jag men jag kan inte komma på vad.

```

sqlfraga = "select * from tabell"

dim test as Recordset
				
test=hamta(sqlfraga)

function hamta(varde)

call opendb()

sql = varde

set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.CursorLocation = 3
RecSet.open sql, Connect

hamta = RecSet

call closedb()

end function
```

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

## #5 — OveRRidE, 2004-12-04T15:03Z

För det första, ett felmeddelande hade varit bra. Men jag gissar fortfarande på den här raden; 

```
dim test as Recordset
```

Om du läser mitt ovanstående inlägg så förstår du.

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

## #6 — daniel_ra, 2004-12-04T15:06Z

men om jag bara skriver

```
sqlfraga = "select * from tabell"

test=hamta(sqlfraga)
```

får jag detta felmeddelande

vAsp Scripting Error
Error: 450 Wrong number of arguments or invalid property assignment: 'test'
File: 
Source: Microsoft VBScript runtime error
Line: 128
Code: test=hamta(sqlfraga)

förstår inte vad det betyder

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

## #7 — OveRRidE, 2004-12-04T15:08Z

Äsch, givetvis! Jag missade det viktigaste!

Du måste ha 'Set' framför de ställen där du skall tilldela ett recordset. T.ex;

```
set rs = hamta("SELECT * FROM tblBaluba")
'och
set rs = Server.Createobj...[..]
```

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

## #8 — OveRRidE, 2004-12-04T15:10Z

Alltså;

```
sqlfraga = "select * from tabell"
dim test as Recordset
set test=hamta(sqlfraga)

function hamta(varde)
   call opendb()

   sql = varde
   set RecSet = Server.CreateObject("ADODB.Recordset")
   RecSet.CursorLocation = 3
   RecSet.open sql, Connect
   set hamta = RecSet
   [b]set RecSet = Nothing[/b]   
   call closedb()
   

end function
```

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

## #9 — daniel_ra, 2004-12-04T15:15Z

men om man bara skriver såhär:

```
set test=hamta(sql)
```

vad blir test för objekt då?

jag kan iallafall inte loopa igenom test eller kolla hur många rader det är eller för den delen skriva ut innehållet.

```
Error: 438 Object doesn't support this property or method: 'test.Recordcount'
File: 
Source: Microsoft VBScript runtime error
Line: 128
Code: response.tWrite(test.Recordcount)
```

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

## #10 — daniel_ra, 2004-12-04T15:26Z

nu har jag skrivit exakt som du föreslog men jag får fortfarande nåt felmeddelande på raden

```
dim test as Recordset
```

Error: 1025 Expected end of statement
File: 
Source: Microsoft VBScript compilation error
Line: 125
Code: dim test as Recordset

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

## #11 — Troxy, 2004-12-04T16:19Z

Men alltså det ska inte stå dim test as Recordset! Bara dim test...

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

## #12 — OveRRidE, 2004-12-04T18:58Z

Ja, all öl igår har npg slagit ut alldeles för många hjärnceller i dag. Givetvis skall det se ut såhär, precis som Troxy säger, dessutom finns det ju faktiskt inte något Connection-objekt som motsvarar din deklaration som heter 'Connect'. 

Gör såhär istället; 

```
sql = "select * from tabell"
dim rs
set rs = GetRs(sql)

function GetRs(sql)
   Dim conn, rs
   set conn = getConn() '#returnerar ett ADODB.Connection-objekt

   set rs = Server.CreateObject("ADODB.Recordset")
   rs.CursorLocation = 3
   rs.CursorType = 1
   rs.open sql, conn
   set GetRs = rs

   set rs = Nothing
   Set conn = Nothing   

end function

'# förslag på hur GetConn() kan se ut:
function GetConn()
   Dim conn
   Set conn = Server.Createobject("ADODB.Connection")
   conn.open "Provider=Microsoft.Jet.... [..]"
   Set GetConn = conn
   Set conn = nothing
end function
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/117319-skicka-ett-recordset-som-värde-från-funktion
