---
title: "if-satser i funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/182020-if-satser-i-funktion"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "devotion"
published: "2010-01-14T19:24:31.000Z"
updated: "2010-01-15T08:19:06.000Z"
replies: 9
views: 799
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/182020-if-satser-i-funktion"
---

# if-satser i funktion

## #1 — devotion, 2010-01-14T19:24Z

Hepp!! :)

Jag har gjort en liten funktion med ett antal villkor.

Såvitt jag kan se, så fungerar det som det skall:

```
function GetExportPrice(fPrice, bInvoice)

	if cDbl(fPrice) = 0 and bInvoice = 1 then GetExportPrice = ""
	if cDbl(fPrice) = 0 and bInvoice = 0 then GetExportPrice = 0
	if cDbl(fPrice) > 0 and bInvoice = 1 then GetExportPrice = fPrice
	if cDbl(fPrice) > 0 and bInvoice = 0 then GetExportPrice = 0
	
End function
```

Men kan man göra det hela snyggare?

Mvh
Henrik :bire

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

## #2 — devotion, 2010-01-14T19:25Z

Hmm...

såg en sak direkt...

```
function GetExportPrice(fPrice, bInvoice)

	if cDbl(fPrice) = 0 and bInvoice = 1 then GetExportPrice = ""
	if cDbl(fPrice) >= 0 and bInvoice = 0 then GetExportPrice = 0
	if cDbl(fPrice) > 0 and bInvoice = 1 then GetExportPrice = fPrice
	
End function
```

Borde väl vara samma sak?

Mvh
Henrik

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

## #3 — Peter S, 2010-01-14T19:41Z

Tja!

Några saker att reflektera över:

1) Inte alla vägar i funktionen returnerar ett deterministiskt värde.
2) Varje if-sats evalueras även om en träff fås tidigt.
3) Tre CDbl()-konverteringar görs i stället för en.

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

## #4 — devotion, 2010-01-14T19:59Z

Jag tänkte väl att det var saker jag inte tänkt på....

Hur hade du gjort det då?

 :)  

Mvh
Henrik

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

## #5 — voigtann1, 2010-01-14T20:21Z

Nåt i denna stil:

```
function GetExportPrice(fPrice, bInvoice)
	Dim f_Price
	f_Price = cDbl(fPrice)
	If f_Price = 0 And bInvoice Then
		GetExportPrice = ""
	Else If f_Price >= 0 And Not bInvoice Then
		GetExportPrice = 0
	Else If f_Price > 0 and bInvoice Then
		GetExportPrice = fPrice ' Om det nu inte skall retuneras som en Dbl, så behöver du inte köra en f_Price
	End If
End function
```

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

## #6 — Peter S, 2010-01-14T20:24Z

...samt kanske lägga till 'Else' med ett returvärde ifall ingen träff fås. Om det valda värdet är något av de andra så kan logiken förenklas ytterligare.

Kan argumenten vara null?

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

## #7 — doggelito, 2010-01-14T20:36Z

Om du vill göra det hela lite mer läsbart så bidrar jag med en variant! :)

```
function GetExportPrice(fPrice, bInvoice)
     Dim f_Price
     f_Price = cDbl(fPrice)

     If f_Price <= 0 Then
          If bInvoice Then 
               GetExportPrice = ""
          Else
               GetExportPrice = 0
          End If
     Else 
          If bInvoice Then 
               GetExportPrice = fPrice
          Else
               GetExportPrice = 0
          End If
     End If
End function
```

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

## #8 — nitro2k01, 2010-01-14T20:46Z

Nämen! Ni gör ju alla "fel". ;)
Om bInvoice = 0 ska exportpriset bli 0 oavsett fPrice. Alltså ska man (för att göra koden mindre och mer läsbar) ha bInvoice i en if ytterst. Alltså:

```
function GetExportPrice(fPrice, bInvoice)
	If bInvoice then
		if cDbl(fPrice) > 0 then GetExportPrice = fPrice else GetExportPrice = ""
	Else
		GetExportPrice = 0
	End If	
End function
```

Dessutom ser jag ingen anledning att ha en omvandlig till Double där. Om ingen kan ge en bra anledning gissar jag att det är säkert att bort cDbl.

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

## #9 — devotion, 2010-01-14T20:47Z

> **[Peter S skrev:](https://www.webforum.nu/p/1494539)**
>
> ...samt kanske lägga till 'Else' med ett returvärde ifall ingen träff fås. Om det valda värdet är något av de andra så kan logiken förenklas ytterligare.
> 
> Kan argumenten vara null?

I mycket sällsynta fall, kanske... Det 'ska' inte kunna det, men man vet ju aldrig....

 :-)

Mvh
Henrik

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

## #10 — devotion, 2010-01-15T08:19Z

Funkish!

Mvh
Henrik

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/182020-if-satser-i-funktion
