---
title: "function"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/42151-function"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "gucken"
published: "2002-04-21T11:22:25.000Z"
updated: "2002-04-24T11:38:18.000Z"
replies: 12
views: 289
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/42151-function"
---

# function

## #1 — gucken, 2002-04-21T11:22Z

```php
function antal_lag(div)
	sql = "SELECT Anv_id FROM Users Where div = "& div &""
	set rs=databas.execute (sql)
	do while rs.eof <> true
		x = x +1
		rs.movenext
		
	if x = 40 then
		antal_lag = true
		else
		antal_lag = false
	end if
end function
```

I felmeddelandet står det att den förväntar en program satts på
raden med  end function.
vad menar den med det? från vad jag ser så ska allt vara rätt,
jag har skrivit ut variabeln div och jag vet att den är 15 som den ska vara.

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

## #2 — solbulle, 2002-04-21T11:50Z

Ska det inte vara en: loop innan du avslutar funktionen?

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

## #3 — Erik Juhlin, 2002-04-21T11:51Z

Använder du den koden för o kolla om det är 40 st poster i databasen?

Felet är egentligen att du måste ha Loop med, men jag ser hela funktionen som ett stort fel...

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

## #4 — emission, 2002-04-21T11:53Z

du har glömt loop efter do while-loopen.

Dessutom är det en ineffektiv funktion

```
function antal_lag(div)
    sql = "SELECT COUNT(Anv_id) FROM Users Where div = "& div &" HAVING COUNT(Anv_id)=40"
    set rs=databas.execute (sql)
    antal_lag = (NOT rs.EOF)
end function
```

Förutsatt att din DBMS klarar HAVING. COUNT ska du använda i vilket fall som helst.

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

## #5 — Erik Juhlin, 2002-04-21T11:55Z

Vad är having till för?

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

## #6 — LarsG, 2002-04-21T11:55Z

Det saknas en loop som avslutar do while i din kod.

```
function antal_lag(div)
    sql = "SELECT Anv_id FROM Users Where div = "& div &""
    set rs=databas.execute (sql)
    do while rs.eof <> true
        x = x +1
        rs.movenext
    loop
    if x = 40 then
        antal_lag = true
        else
        antal_lag = false
    end if
end function
```

Det är ineffektivt att koda på det sättet som du har gjort. Det är bättre att lägga så mycket av beräkningarna som möjligt direkt i sql-koden.

```
function antal_lag(div)
    sql = "SELECT count(Anv_id)  FROM Users Where div = "& div 
    set rs=databas.execute (sql)
    antal_lag = cint(rs(0)) = 40
end function
```

Skall funktionen bli sann om det är exakt 40 lag eller om det är minst 40 lag?

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

## #7 — gucken, 2002-04-21T11:56Z

tack, det löste hela biffen, var ett tag sedan jag lekte med det här så hadde vist glömt lite..

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

## #8 — solbulle, 2002-04-21T12:12Z

Schysst svarsfrekvens. ;)

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

## #9 — LarsG, 2002-04-21T12:31Z

> Vad är having till för?

Having behövs egentligen inte, det går alltid att skriva om

```
SELECT antal FROM (select count(anv_id) as antal from Users Where div = 4711) where antal = 40
```

I having så kan du använda aggregatfunktioner vilket inte är tillåtet i where. 

Having används oftast i samband med group by för att begränsa urvalet av grupper, t.ex. 

```
select sum(amount),guest from bill natural join guests
group by guest having sum(amount) > 1000
```

för att få fram alla gäster som har räkningar med ett belopp på mer än 1000.

Egentligen så behövs inte group by heller utan det går också att skriva om. (Lämnas som uppgift till läsaren.)

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

## #10 — gucken, 2002-04-24T10:59Z

Kompileringsfel i Microsoft VBScript (0x800A0400)
Programsats förväntas.
på raden med end function.
jag blir galen, vad menar han?? vad vill han igentligen av mig?

```php
function Lag2(lag1,div)
	'nu ska den hämta ett motståndarlag.
	sql = "SELECT nick FROM User WHERE div = "&div&" ORDER BY Anv_id"
	set rs=databas.execute (sql)
	do while not rs.eof
		lag2 = rs.fields("nick")
		if lag2 = lag1 then rs.movenext
		sql = "SELECT * FROM DivMatch WHERE DivDiv = "&div&" AND DivLag1 = '"&lag1&"' AND DivLag2 = '"&lag2&"'"
		set rec=databas.execute (sql)
		if not rec.eof then
			rs.movenext
		else
		end if
end function
```

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

## #11 — LarsG, 2002-04-24T11:06Z

det saknas en avslutande loop till din do while

```
function Lag2(lag1,div)
    'nu ska den hämta ett motståndarlag.
    sql = "SELECT nick FROM User WHERE div = "&div&" ORDER BY Anv_id"
    set rs=databas.execute (sql)
    do while not rs.eof
        lag2 = rs.fields("nick")
        if lag2 = lag1 then rs.movenext
        sql = "SELECT * FROM DivMatch WHERE DivDiv = "&div&" AND DivLag1 = '"&lag1&"' AND DivLag2 = '"&lag2&"'"
        set rec=databas.execute (sql)
        if not rec.eof then
            rs.movenext
        end if
     loop
end function
```

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

## #12 — gucken, 2002-04-24T11:18Z

tack. 
tror du att du har lust att hjälpa mig med en liten sak privat?
jag vill inte skriva det här i forumet.

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

## #13 — LarsG, 2002-04-24T11:38Z

Du får väl skicka ett privat meddelande så får vi se vad det är.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/42151-function
