---
title: "Jämföra utloopade priser med det billigaste"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/147223-jämföra-utloopade-priser-med-det-billigaste"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "devotion"
published: "2006-05-22T21:46:47.000Z"
updated: "2006-05-25T10:21:56.000Z"
replies: 15
views: 667
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/147223-jämföra-utloopade-priser-med-det-billigaste"
---

# Jämföra utloopade priser med det billigaste

## #1 — devotion, 2006-05-22T21:46Z

Hej!

Jag loopar ut priser på en artikel från olika leverantörer enligt:

```
Leverantör E-nummer Pris Avtalspris Rabatt Kategori Välj 
Storel 1832821 207,00 kr 64,17 kr 69% Eljo Övrig materiel  
Solar 1832821 206,00 kr 74,16 kr 64% ELJO STD.  
Ahlsell 1832821 202,00 kr 74,74 kr 63% ELJO STRÖMST,TIMRAR,SYST VIP90  
Elektroskandia 1832821 198,00 kr 75,24 kr 62% ELJO AQUA  
Selga 1832821 195,00 kr 78,00 kr 60% Strömställarsystem Eljo
```

Med följande kod

```
If objRS.EOF then %>
	<span>Det fanns inga artiklar</span>
<% Else%>
	<table>
		<caption>S&ouml;kresultat</caption>
			<thead>
				<tr>
					<th>Leverantör</th>
					<th>E-nummer</th>
					<th>Pris</th>
					<th>Avtalspris</th>
					<th>Rabatt</th>
					<th>Kategori</th>
					<th>Välj</th>
				</tr>
			</thead>
			<tbody>
			<% Do until ObjRS.EOF 
			'Bakgrundsfärg
			'*************
			If bgcolor = "#FFFFFF" then bgcolor = "#EFEFEF" else bgcolor = "#FFFFFF"
			%>
				<tr onMouseOver="this.style.backgroundColor='#D3DEF8';" onMouseOut="this.style.backgroundColor='';" bgcolor=<% =bgcolor %>>
					<td><% =objRS("supplierName") %></td>
					<td><% =objRS("articleNumber") %></td>
					<td><% =formatCurrency(objRS("articlePrice")) %></td>
					<td><% =formatCurrency(objRS("articlePriceWithDiscount")) %></td>
					<td><% =objRS("articlediscount") %>%</td>
					<td><% =objRS("categoryName") %></td>
					<td><input name="" type="checkbox" value="" /></td>
				</tr>
				<% 
			objRS.Movenext 
			Loop 
			%>
			</tbody>
	</table>
<% 
End If
```

Funkar ju finfint...

Men jag skulle vilja lägga till en funktion... Jämföra alla priser med det billigaste enligt bifogad bild...

Hur kan man göra det?

Mvh
Henrik

Bilagor:

- [Capture_35.jpg](https://www.webforum.nu/a/10839.jpg)

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

## #2 — emission, 2006-05-22T23:34Z

Den informationen plockar vi ut i SQL-frågan, så det vore fint att få se den. Vilken DBMS?

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

## #3 — devotion, 2006-05-23T06:30Z

Hej!

Misstänkte att det kunde vara så..

DBMS: SQL-Server

SQL-fråga:

```
SELECT tblArticle.articlenumber, tblArticle.articleName, tblPrice.articlePrice,
 tblPrice.articleCategoryNumber, tblArticle.articleUnit, tblCategory.CategoryName, 
tblCategory.categoryNumber, tblDiscount.articleDiscount, tblSupplier.SupplierName, 
CASE WHEN articleDiscount is null 
THEN articlePrice ELSE articlePrice*(1-([articleDiscount]*0.01)) END 
AS articlePriceWithDiscount 
FROM tblArticle 
INNER JOIN tblPrice ON tblArticle.articlenumber = tblPrice.articleNumber 
INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId 
LEFT OUTER JOIN tblDiscount ON tblPrice.articleCategoryNumber = tblDiscount.categoryNumber 
AND tblPrice.articleSupplierId = tblDiscount.supplierId 
LEFT OUTER JOIN tblCategory ON tblPrice.articleSupplierId = tblCategory.supplierId 
AND tblPrice.articleCategoryNumber = tblCategory.categoryNumber 
WHERE tblArticle.articleName = 'EKLK 3G1,5 R50' AND tblSupplier.supplierId IN (4, 3, 5, 1, 2) 
ORDER BY articlePriceWithDiscount
```

Mvh
Henrik

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

## #4 — @nders, 2006-05-23T06:40Z

till att börja med (när sql-frågan är fixad så den verkligen bara returnerar två poster), hade jag lagt till en markering på vilken post som är vilken, princip:

```
select bla, bla, bla, 'LowestPrice' as pricetype....
union all
select bla, bla, bla, 'HighestPrice' ....
```

Sedan kollar du bara i asp-koden vad fältet *pricetype* i recordsetet innehåller.

edit: eller har detta inte att göra med din tråd i SQL-forumet?
\*snurrig\*

mvh

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

## #5 — devotion, 2006-05-23T07:02Z

:)  
Nä, de har inte med varandra att göra.....

Mvh
Henrik

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

## #6 — @nders, 2006-05-23T13:49Z

ok.

Eftersom du sorterar på pris borde ju billigast komma överst och dyrast underst.
Släng in en räknare som räknar upp i loopen, position 1 är billigast och den sista är dyrast. För att se vilken som är sist, kan du jämföra med recordcount (om du öppnar recordsetet på ett sätt som ger dig den egenskapen).

(edit: om du ens behöver veta vilken som är sist då. det behöver du kanske inte? Då är det väl kakbit? :) )

mvh

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

## #7 — devotion, 2006-05-23T17:46Z

Hmmm, nu fattar jag ingenting.... :) 

Hur ska jag kunna jämföra priserna inbördes på det sättet, och presentera det i procent?

Mvh
Henrik

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

## #8 — @nders, 2006-05-23T18:14Z

```
i = 0
while not foo.eof
     i = i+1
     if i = 1 then
          ' detta är det lägsta priset, spara undan i en variabel
          dLowestPrice = cdbl(foo("prisfältet"))
     end if
     ...
wend
...
```

Resten är ju bara matematik...

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

## #9 — emission, 2006-05-23T19:08Z

Med tanke på att det var en rätt komplex sökning så tycker jag nog att @nders variant är bättre än att låta databasen beräkna.

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

## #10 — devotion, 2006-05-23T19:14Z

@nders lösning är finfin....

Håller på att fixa med den just nu... :)  

Mvh
henrik

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

## #11 — devotion, 2006-05-23T19:51Z

Tror jag fått till det.. :)  

Men jag är lite osäker på beräkningen...

dLowestPrice är det lägsta priset som artikeln har. Detta värde är "fast"
dArticleWithDiscount är det variabla värdet som som loopas ut och jämförs

```
formatNumber((1 - (dLowestPrice/dArticlePriceWithDiscount))*100, 1)
```

Känns inte helt rätt....

Särskillt det sista värdet i den bifogade dumpen..

Mvh
henrik

Bilagor:

- [Capture_35.jpg](https://www.webforum.nu/a/10848.jpg)

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

## #12 — devotion, 2006-05-23T20:23Z

Testade även:

```
formatnumber((((dArticlePriceWithDiscount-dLowestPrice)/dArticlePriceWithDiscount)*100), 1)
```

med samma resultat...

om det lägsta priset är 4,44 och det sedan jämförs med 40,25, kan väl inte det senare vara 89% högre... Det är ju nästan 10 ggr så högt..

Mvh
henrik

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

## #13 — emission, 2006-05-23T22:14Z

(dArticlePriceWithDiscount/dLowestPrice-1)\*100

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

## #14 — devotion, 2006-05-24T06:15Z

> **@nders skrev:**
>
> Resten är ju bara matematik...

Hmm det var det där med matten.. ;)   Nu funkar det fint i a f..

Tackar!

Mvh
Henrik

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

## #15 — devotion, 2006-05-25T07:48Z

Hepp!

Anders finfina kod plockar ju ut det lägsta priset jenom att kontrollera när räknaren = 1 

```
i = 1
```

Kan man på något sätt få ut det högsta priset genom att kontrollera när räknaren har det högsta värdet. Typ:

```
i = "högst värde"
```

Edit//
Hmm det verkar som @nders förklarar det i ett inlägg längre upp. Hur jämför jag med recordcount?

<http://www.webforum.nu/showthread.php?p=1197175#post1197175>

Mvh
Henrik

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

## #16 — @nders, 2006-05-25T10:21Z

Du kan ju börja med

```
objRS.Move objRS.RecordCount - 1
dHighestPrice = objRS("price")
objRS.MoveFirst
while not objRS.EOF
     ' etc
```

Då måste du se till att ditt recordset inte är forward-only.

mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/147223-jämföra-utloopade-priser-med-det-billigaste
