---
title: "hjälp med SIUD ParameterSQL funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/163553-hjälp-med-siud-parametersql-funktion"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "ConnyFox"
published: "2007-08-17T01:19:03.000Z"
updated: "2007-08-18T02:45:23.000Z"
replies: 6
views: 558
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/163553-hjälp-med-siud-parametersql-funktion"
---

# hjälp med SIUD ParameterSQL funktion

## #1 — ConnyFox, 2007-08-17T01:19Z

Har gjort en funktion för att enkelt kunna skriva parameterfrågor och skulle behöva lite kommentarer och kritik på resultatet för att göra den bättre.

Funktionen verkar fungera, har t.ex lyckats inserta lite text i min databas osv.
Dock så vet jag inte hur jag gör för att i select delen få ut en array med all data till den sidan där funktionen kallas, hjälp? :D

Funktionen kan kallas såhär

```
call parameterSQL("select", "minasidor", "namn,rubrik,innehall", "", "ID,namn", "5,data1", "100")
```

där gälten är
parameterSQL(sqlType, table, fields, data, where, whereData, limit)

Och detta är själva funktionen

```
<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Function dbOpen(Connect)
Set Connect = server.createobject("ADODB.Connection")
Connect.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Port=3305;Database=dammtussen;" 
'Connect.Open "Driver={MySQL ODBC 3.51 Driver};Server=83.140.162.135;Port=3306;DATABASE=jj745_webshop3; USER=jj745_connyfox; PASSWORD=57tYmX; OPTION=3;" 

Set Connect = Connect

End Function

Function dbClose(Connect)

Connect.Close
Set Connect = Nothing

End Function

function parameterSQL(sqlType, table, fields, data, where, whereData, limit)

Set cmd = server.createobject("adodb.command")
cmd.activeConnection = connect

arrFields = split(fields, ",")
arrData = split(data, ",")
arrWhere = split(where, ",")
arrWhereData = split(wheredata, ",")

			if where > "" then
				wherepart = "WHERE "
				for i = 0 to ubound(arrWhere)
				wherepart = wherepart & "" & arrwhere(i) & " = ? AND "
				next
				wherepart = left(wherePart, len(wherepart)-4)
			else
				wherepart = ""
			end if
			
			if limit > "" then
				limitPart = " LIMIT " & limit & ""
			end if

	select case sqlType
		case "select"
			MySQL = "SELECT " & fields & " FROM " & table & " " & wherePart & " " & limitpart & ""
			response.write mysql
		case "insert"
			for each p in arrFields
			datapart = datapart & "?,"
			next
		
			mysql = "INSERT INTO " & table & " (" & fields & ") VALUES(" & left(datapart, len(datapart)-1) & ") " & wherePart & " " & limitpart & ""
			
			response.write mysql
		case "update"
			for i = 0 to ubound(arrFields)
			datapart = datapart & "" & arrFields(i) & " = ?, "
			next
			datapart = left(datapart, len(datapart)-2)
			
			
			mysql = "Update " & table & " set " & datapart & " " & wherePart & " " & limitpart & ""
			response.write mysql
		case "delete"
			mysql = "Delete from " & table & " " & wherePart & " " & limitpart & ""
			response.write mysql
	end select

dim strALLdata

if data > "" then
strAllData = strAlldata & data
end if

if data > "" AND wheredata > "" then
strAllData = strAlldata & ","
end if

if wheredata > "" then
strAllData = strAlldata & wheredata
end if

response.write strALLdata

arrExecuteData = split(strALLdata, ",")
cmd.CommandText = MySQL
SET rs = cmd.Execute (, arrExecuteData)
set cmd = nothing

end function

</script>
```

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

## #2 — @nders, 2007-08-17T04:56Z

> **connyfox skrev:**
>
> Dock så vet jag inte hur jag gör för att i select delen få ut en array med all data till den sidan där funktionen kallas, hjälp?

En funktion skall returnera någonting - som du har byggt dina funktioner nu är de sub:ar. 

Du returnerar saker från funktionen genom att sist i funktionen tilldela funktionsnamnet ett värde. Om du ser till att du gör en array av resultatet från din select (ex. mha recordsetobjektets metod GetRows()), så är det bara att du skickar tillbaka den.

```
function parameterSQL(sqlType, table, fields, data, where, whereData, limit)

    ......
    minFetaArray = rs.GetRows()

    parameterSQL = minFetaArray
end function
```

Jag ser också att du *alltid* skapar ett recordset i slutet av funktionen. Det finns ingen anledning att skapa ett recordset till något som inte returnerar några poster.

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

## #3 — ConnyFox, 2007-08-17T16:04Z

Tackar! jag visste givetvis att det var något sådant, dock så försökte jag göra som följande

parameterSQL = rs.getrows

och det fungerade inte.
Tack för svaret!

Övriga förslag på förbättringar osv är givetvis välkommna!

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

## #4 — @nders, 2007-08-17T17:50Z

> parameterSQL = rs.getrows
> 
> och det fungerade inte.

Borde fungera om inte recordsetet är EOF - men jag föredrar att göra som i mitt exempel - så man kan stänga alla objekt efter sig innan retur. "Fungerade inte" är en ruskigt dålig felbeskrivning, för övrigt. Felmeddelande? Exakt hur ser koden ut nu då? Hur kallade du på funktionen när det blev fel?

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

## #5 — ConnyFox, 2007-08-17T18:24Z

Jo det verkar väll fungera nu.. dock så lyckas jag inte använda min array på sidan där jag kallar på funktionen..

skriver jag t.ex

if isArray(parameterSQL) then
...
end if

så får jag felmeddelandet

Fel antal argument eller felaktig egenskapstilldelning.: 'parameterSQL'

vilket väll egentligen inte känns så konstigt.. men hur gör jag?

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

## #6 — @nders, 2007-08-17T18:58Z

Tilldela.

```
foo = parameterSQL(...)
if isArray(foo)
```

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

## #7 — ConnyFox, 2007-08-18T02:45Z

Tack! man har alltid något kvar att lära sig :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/163553-hjälp-med-siud-parametersql-funktion
