:)
God dag!
Har följande kod som inte funkar som jag vill.... (som vanligt ;) )
...och nu kommer koden!
<%
Dim objConn, strSearchField, strSQL, objRS, intCounter, objDict, strEnumber, strArticleName, strUnit, strSupplier, curPrice, strFC, strLowest, strLastENumber, strLastSupplier, objPricesDict, strOrder, bgcolor, strOption, strShow, lngTotalStorel, lngTotalSolar, strQuantity, pricesetting
If session("userId") <> "" Then
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DSN=IntranetSydostel"
objConn.Open
if Request.Cookies("sydostel")("pricesetting") = "" then
pricesetting = 0
else
pricesetting = cint(Request.Cookies("sydostel")("pricesetting"))
end if
if pricesetting = 0 then
' SQL-fråga för priser avtal
strSQL = "SELECT tblArticle.articleName, tblArticle.articleUnit, tblCart.userId, tblCart.quantity, tblDiscount.articleDiscount, tblPrice.articlePrice, tblSupplier.SupplierName, tblArticle.eNumber, 0.01*[articlePrice]*(1-([articleDiscount]*0.01)) AS articlePriceWithDiscount FROM (((tblArticle INNER JOIN tblCart ON tblArticle.eNumber = tblCart.eNumber) INNER JOIN tblPrice ON tblArticle.eNumber = tblPrice.eNumber) INNER JOIN tblDiscount ON tblPrice.articleCategory = tblDiscount.articleCategory) INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId WHERE tblCart.userId = " & session("userId") & " ORDER BY tblArticle.eNumber, 0.01*[articlePrice]*(1-([articleDiscount]*0.01)) ASC"
else
' SQL-fråga för priser netto
strSQL = "SELECT tblArticle.articleName, tblArticle.articleUnit, tblCart.userId, tblCart.quantity, tblDiscount.articleDiscount, tblPrice.articlePrice, tblSupplier.SupplierName, tblArticle.eNumber FROM (((tblArticle INNER JOIN tblCart ON tblArticle.eNumber = tblCart.eNumber) INNER JOIN tblPrice ON tblArticle.eNumber = tblPrice.eNumber) INNER JOIN tblDiscount ON tblPrice.articleCategory = tblDiscount.articleCategory) INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId WHERE tblCart.userId = " & session("userId") & " ORDER BY tblArticle.eNumber, tblPrice.articlePrice ASC"
end if
lngTotalStorel = 0
lngTotalSolar = 0
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 3, 1 ' Recordsetet öppnar vi så här för att kunna få ut ett värde från egenskapen recordcount.
intCounter = 0 ' skapa en liten posträknare som vi sedan räknar upp
Set objDict = Server.CreateObject("Scripting.Dictionary") 'ett dictionaryobjekt
If objRS.EOF then
Response.Write("<span class=""text12px"">Varukorgen är tom!</span><br>")
Else
Response.Write("<br>")
Response.Write("<span class=""text12px"">Följande artiklar finns i varukorgen:<br>")
Response.write "<table width=""780"" border=""0"" cellspacing=""0"" cellpadding=""0"" Class=""tabellRam""><tr class=""tabellhuvud""><td width=""60"" height=""18"" class=""tabellhuvud"">E-nr</td><td width=""250"" class=""tabellhuvud"">Benämning</td><td width=""45"" class=""tabellhuvud"">Enhet</td><td width=""75"" class=""tabellhuvud"">Solar</td><td width=""75"" class=""tabellhuvud"">Storel</td><td width=""75"" class=""tabellhuvud"">Ahlsell</td><td width=""60"" class=""tabellhuvud"">Lägst</td><td width=""60"" class=""tabellhuvud"">Antal</td><td width=""40"" class=""tabellhuvud"">Ändra</td><td width=""40"" class=""tabellhuvud"">ta bort</td></tr>"
Do While not objRS.EOF
strENumber = "" & objRS("ENumber")
strArticleName = "" & objRS("articleName")
strUnit = "" & objRS("articleUnit")
strSupplier = "" & objRS("SupplierName")
strQuantity = "" & objRS("quantity")
if pricesetting = 0 then
curPrice = "" & FormatCurrency(Cdbl(objRS("articlePriceWithDiscount")))
Else
curPrice = "" & FormatCurrency(Cdbl(objRS("articlePrice"))*0.01)
End If
If pricesetting = 0 then
Select case strSupplier
Case "Storel"
lngTotalStorel = lngTotalStorel + Cdbl(objRS("articlePriceWithDiscount"))
Case "Solar"
lngTotalSolar = lngTotalSolar + Cdbl(objRS("articlePriceWithDiscount"))
End Select
Else
Select case strSupplier
Case "Storel"
lngTotalStorel = lngTotalStorel + Cdbl(objRS("articlePrice")*0.01)
Case "Solar"
lngTotalSolar = lngTotalSolar + Cdbl(objRS("articlePrice")*0.01)
End Select
End if
if strENumber <> strLastEnumber then
if intCounter <> 0 then
' aha, här har det gjorts saker förut. Skicka iväg till utskriftsfunktionen.
' markering av det jättesunkiga priset
objDict.Item(strLastSupplier) = Replace(objDict.Item(strLastSupplier), "black", "red")
call writePrices(objDict)
objDict.RemoveAll
end if
set objDict = Server.CreateObject("Scripting.Dictionary")
objDict.Add "eNumber", strENumber
objDict.Add "articleName", strArticleName
objDict.Add "articleUnit", strUnit
intCounter = 1
strLastENumber = strENumber
else
intCounter=intCounter + 1
end if
if not objDict.Exists(strSupplier) then
' Bara en säkerhetskoll att vi inte lägger in något om det redan är inlagt för denna leverantör
select case intCounter
case 1
' weee, det här är det jättebästa priset!
strFC = "green"
objDict.Add "lowest", strSupplier
case else
strFC = "black"
end select
strLastSupplier = strSupplier
objDict.Add strSupplier, "<font color=""" & strFC & """>" & curPrice & "</font>"
end if
objRS.MoveNext
Loop
' Vi måste köra visningskoden här också för att få med den sista produkten.
objDict.Item(strLastSupplier) = Replace(objDict.Item(strLastSupplier), "black", "red")
call writePrices(objDict)
Response.write "<tr class=""text10px_fet""><td width=""60"" height=""18"" ></td><td width=""250""></td><td width=""45"">Summa</td><td width=""75"">" & FormatCurrency(lngTotalSolar) & "</td><td width=""75"">" & FormatCurrency(lngTotalStorel) & "</td><td width=""75""></td><td width=""60""></td><td width=""50""></td></tr>"
Response.Write "</table>"
Response.write "<span class=""statusText"">Samtliga priser är exklusive moms!<br></span>"
if pricesetting = 0 then
Response.Write "<span class=""statusText"">Visar <b>avtalspriser<b></span>"
Else
Response.Write "<span class=""statusText"">Visar <b>Nettopriser<b></span>"
End If
End if
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
Set objDict = Nothing
Set objPricesDict = Nothing
public sub writePrices (objPricesDict)
If bgcolor = "#FFFFFF" then bgcolor = "#EFEFEF" else bgcolor = "#FFFFFF"
Response.write "<tr onMouseOver=""this.style.backgroundColor='#D3DEF8';"" onMouseOut=""this.style.backgroundColor='';"" bgcolor=""" & bgcolor & """><td height=""20"" class=""itabell"">" & objPricesDict.Item("eNumber") & "</td><td class=""itabell"">" & objPricesDict.Item("articleName") & "</td><td class=""itabell"">" & objPricesDict.Item("articleUnit") & "</td>"
if objPricesDict.Exists("Solar") then
Response.write "<td class=""itabell"">" & objPricesDict.Item("Solar") & "</td>"
else
Response.write "<td class=""itabell""><i>Saknas</i></td>"
end if
if objPricesDict.Exists("Storel") then
Response.write "<td class=""itabell"">" & objPricesDict.Item("Storel") & "</td>"
else
Response.write "<td class=""itabell""><i>Saknas</i></td>"
end if
if objPricesDict.Exists("Elektroskandia") then
Response.write "<td class=""itabell"">" & objPricesDict.Item("Elektroskandia") & "</td>"
else
Response.write "<td class=""itabell""><i>Saknas</i></td>"
end if
Response.write "<td class=""itabell"">" & objPricesDict.Item("lowest") & "</td>"
Response.Write "<td class=""itabell""><input class=""formular"" name=""quantity" & objPricesDict.Item("eNumber") & """ Value=" & strQuantity & " type=""text"" size=""4"" maxlength=""4""></td>"
Response.Write "<td class=""itabell""><a href=""#"" onclick=""location.href='../cart/editQuantity.asp?eNumber=" & objPricesDict.Item("eNumber") & "&quantity=' + document.getElementById('quantity" & objPricesDict.Item("eNumber") & "').value;""><img src=""../Images/editQuantity.gif"" alt=""Klicka här för att ändra antal!"" border=""0""></a></td>"
Response.Write "<td class=""itabell""><a href=""deleteArticle.asp?eNumber=" & objPricesDict.Item("eNumber") & """><img src=""../Images/soptunna.gif"" alt=""Klicka här för att ta bort artikeln!"" border=""0""></a></td>"
end sub
Else
Response.Write "Ej inloggad"
End if
%>
Problemet är:
När jag loopar ut recordsetet skrivs rätt värde ut. När jag försöker få ut värdena i suben så stämmer ingenting!
Testade att skriva:
Response.Write strQuantity
i loopen och då listas rätt värde ut
När jag skriver:
& strQuantity &
i suben så kommer felaktiga värden ut
Vad kan detta bero på?
Håller på att bli galen!
Mvh