webForumDet fria alternativet

If sats

ASPur ASP

9 svar · 385 visningar · startad av Ivar

IvarMedlem sedan aug. 2002218 inlägg
#1

Hej,
Hur kan jag lösa den här If satsen?

If totalPris < 1000 Then
totalPris = Pris + 100
else
totalPris = pris + Pris
end if

Alltså om kunden beställer varor som är mindre en 1000 kr då ska frakt med 100kr
Problemet är att det kan finnas flera beställningar som är typ 750 + 750 = 1500
Då blir det fel

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

pris(1200)
returnerar 1200
pris(800)
returnerar 900

function pris(kr)
Dim frakt : frakt = 100 'Frakt 100kr
    if clng(kr) < 1000 then 'Priset är under 1000kr, lägg på frakt
        pris=clng(kr)+frakt
    else 'Priset är över 1000kr lägg inte på frakt.
        pris=kr
    end if
end function
IvarMedlem sedan aug. 2002218 inlägg
#3

Här är hella koden:

'lagra beställning och kundinformation i databasen.

dbp=Server.MapPath ("t1tant0mat.mdb")

set my_conn = Server.CreateObject("ADODB.Connection")
my_Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + dbp

'***************** lägg in kunden i kunddatabasen ***************************
lista = my_Conn.Execute ("SELECT * FROM kunder ORDER BY KundID Desc;")

KundID = lista("KundID") +1

SQLStmt = "INSERT INTO kunder (KundID, Namn, Adress, Adress2, Postnummer, Ort, Telefonnummer, Email, Kommentarer, IPnr)"
SQLStmt = SQLStmt & " VALUES(" & KundID & ", '" & Session("Namn") & "', '" & Session("Adress") & "', '" & Session("Adress2") & "', '" & Session("Postnummer") & "', '" & Session("Ort") & "', '" & Session("Telefonnummer") & "', '" & Session("Email") & "', '" & Session("Kommentarer") & "', '" & Session("IPnr") & "');"

my_Conn.Execute(SQLStmt)

'************ lägg in beställningen i beställningsdatabasen *******************

Dim order
Dim totalpris
totalpris = 0

For counter = 1 to Session("counter")

	lista = my_Conn.Execute ("SELECT * FROM prislista WHERE ArtikelNummer = '" + Session(counter) + "';")

	pris = Session(CStr(counter) + "a") * lista("Pris")

	'lägg in alla SQL-kommandon i en variabel 
	SQLStmt = "INSERT INTO bestallningar (ArtikelNummer,Benamning, Pris, KundID, Antal, TotalPris)"
	SQLStmt = SQLStmt & " VALUES('" & lista("ArtikelNummer") & "', '" & lista("Benamning")  & "', " & lista("Pris") & ", " & kundID & ", " & Session(CStr(counter) + "a") & ", " & Pris & ");"

	'** mata iväg ordern till databasen **
	my_Conn.Execute(SQLStmt)

	
	
	'** lagra ordern i en variabel **

	order = order & Session(CStr(counter) + "a") & "st. " & lista("ArtikelNummer") & " " & lista("Benamning") & ": " & pris & " kr.<br>" & vbCrLf

Next

'** lagra totalpriset av beställningen
'** här skall ev. fraktkostnader även räknas in

	
	
	
	totalPris = totalPris + Pris 

SQLStmt = "INSERT INTO bestallningar (Benamning, KundID, TotalPris) VALUES ('Totalt:','" & kundID & "','" & totalPris & "');"
my_Conn.Execute(SQLStmt)

order = order & "Totalt: " & " " & totalPris  & " kr."
IvarMedlem sedan aug. 2002218 inlägg
#4

Jesper T vart ska jag implementera koden?

Jesper TMedlem sedan nov. 20017 144 inlägg
#5

Jag orkar inte kolla igenom det nu, dock hade jag lagt på lite för mycket i fraktavgift.
Har ändrat det nu.
För att få den rätta summan (m. eller utan frakt) så klamrar du in din summa i funktionen.

'funktionen kanske högst upp på sidan
Response.write "Totalt pris är: "& pris(800) &" kr inkl. frakt"
IvarMedlem sedan aug. 2002218 inlägg
#6
'lagra beställning och kundinformation i databasen.

dbp=Server.MapPath ("t1tant0mat.mdb")

set my_conn = Server.CreateObject("ADODB.Connection")
my_Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + dbp

'***************** lägg in kunden i kunddatabasen ***************************
lista = my_Conn.Execute ("SELECT * FROM kunder ORDER BY KundID Desc;")

KundID = lista("KundID") +1

SQLStmt = "INSERT INTO kunder (KundID, Namn, Adress, Adress2, Postnummer, Ort, Telefonnummer, Email, Kommentarer, IPnr)"
SQLStmt = SQLStmt & " VALUES(" & KundID & ", '" & Session("Namn") & "', '" & Session("Adress") & "', '" & Session("Adress2") & "', '" & Session("Postnummer") & "', '" & Session("Ort") & "', '" & Session("Telefonnummer") & "', '" & Session("Email") & "', '" & Session("Kommentarer") & "', '" & Session("IPnr") & "');"

my_Conn.Execute(SQLStmt)

'************ lägg in beställningen i beställningsdatabasen *******************

Dim order
Dim totalpris
totalpris = 0

For counter = 1 to Session("counter")

	lista = my_Conn.Execute ("SELECT * FROM prislista WHERE ArtikelNummer = '" + Session(counter) + "';")

	pris = Session(CStr(counter) + "a") * lista("Pris")

	'lägg in alla SQL-kommandon i en variabel 
	SQLStmt = "INSERT INTO bestallningar (ArtikelNummer,Benamning, Pris, KundID, Antal, TotalPris)"
	SQLStmt = SQLStmt & " VALUES('" & lista("ArtikelNummer") & "', '" & lista("Benamning")  & "', " & lista("Pris") & ", " & kundID & ", " & Session(CStr(counter) + "a") & ", " & Pris & ");"

	'** mata iväg ordern till databasen **
	my_Conn.Execute(SQLStmt)

	
	
	'** lagra ordern i en variabel **

	order = order & Session(CStr(counter) + "a") & "st. " & lista("ArtikelNummer") & " " & lista("Benamning") & ": " & pris & " kr.<br>" & vbCrLf

Next

'** lagra totalpriset av beställningen
'** här skall ev. fraktkostnader även räknas in

	
	
	
	
[B]totalPris = totalPris + Pris [/B] 'Här är felet? 

SQLStmt = "INSERT INTO bestallningar (Benamning, KundID, TotalPris) VALUES ('Totalt:','" & kundID & "','" & totalPris & "');"
my_Conn.Execute(SQLStmt)

order = order & "Totalt: " & " " & totalPris  & " kr."

Förslag på lösning ?

Jesper TMedlem sedan nov. 20017 144 inlägg
#7

Vad funkar inte?

...
'** lagra totalpriset av beställningen
'** här skall ev. fraktkostnader även räknas in
[b]
function prislog(kr)
Dim frakt : frakt = 100 
    if clng(kr) < 1000 then 
        prislog=clng(kr)+frakt
    else 
        prislog=kr
    end if
end function
[/b]	
	
	
totalPris = [b]prislog(totalPris+pris)[/b]

SQLStmt = "INSERT INTO bestallningar (Benamning, KundID, TotalPris) VALUES ('Totalt:','" & kundID & "','" & totalPris & "');"
my_Conn.Execute(SQLStmt)

order = order & "Totalt: " & " " & totalPris  & " kr."
IvarMedlem sedan aug. 2002218 inlägg
#8

Jesper T det funkar inte om man har två beställningar typ 795 + 795 borde vara 1590 men det ser ut såhär:
1st. G-1 Kockkniv GLOBAL 21cm rundad: 795 kr.
1st. G-2 Kockkniv GLOBAL 20cm: 795 kr.
Totalt: 895 kr.
Alltså beställningen summeras inte!

Jesper TMedlem sedan nov. 20017 144 inlägg
#9

Inne i loopen så får du lägga till summan i totalPris
totalPris=totalPris+pris
annars så är totalPris fortfarande 0 ju.

IvarMedlem sedan aug. 2002218 inlägg
#10

Stort tack Jesper T

Fungerande kod :

'lagra beställning och kundinformation i databasen.

dbp=Server.MapPath ("t1tant0mat.mdb")

set my_conn = Server.CreateObject("ADODB.Connection")
my_Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + dbp

'***************** lägg in kunden i kunddatabasen ***************************
lista = my_Conn.Execute ("SELECT * FROM kunder ORDER BY KundID Desc;")

KundID = lista("KundID") +1

SQLStmt = "INSERT INTO kunder (KundID, Namn, Adress, Adress2, Postnummer, Ort, Telefonnummer, Email, Kommentarer, IPnr)"
SQLStmt = SQLStmt & " VALUES(" & KundID & ", '" & Session("Namn") & "', '" & Session("Adress") & "', '" & Session("Adress2") & "', '" & Session("Postnummer") & "', '" & Session("Ort") & "', '" & Session("Telefonnummer") & "', '" & Session("Email") & "', '" & Session("Kommentarer") & "', '" & Session("IPnr") & "');"

my_Conn.Execute(SQLStmt)

'************ lägg in beställningen i beställningsdatabasen *******************

Dim order
Dim totalpris
Dim pris
totalpris = 0

For counter = 1 to Session("counter")

	lista = my_Conn.Execute ("SELECT * FROM prislista WHERE ArtikelNummer = '" + Session(counter) + "';")

     totalPris=totalPris+pris

	pris = Session(CStr(counter) + "a") * lista("Pris")

	'lägg in alla SQL-kommandon i en variabel 
	SQLStmt = "INSERT INTO bestallningar (ArtikelNummer,Benamning, Pris, KundID, Antal, TotalPris)"
	SQLStmt = SQLStmt & " VALUES('" & lista("ArtikelNummer") & "', '" & lista("Benamning")  & "', " & lista("Pris") & ", " & kundID & ", " & Session(CStr(counter) + "a") & ", " & Pris & ");"

	'** mata iväg ordern till databasen **
	my_Conn.Execute(SQLStmt)
	
	'** lagra ordern i en variabel **

	order = order & Session(CStr(counter) + "a") & "st. " & lista("ArtikelNummer") & " " & lista("Benamning") & ": " & pris & " kr.<br>" & vbCrLf

Next

'** lagra totalpriset av beställningen
'** här skall ev. fraktkostnader även räknas in

function prislog(kr)
Dim frakt : frakt = 100 
    if clng(kr) < 1000 then 
        prislog=clng(kr)+frakt
    else 
        prislog=kr
    end if
end function
totalPris = prislog(totalpris+ pris)
SQLStmt = "INSERT INTO bestallningar (Benamning, KundID, TotalPris) VALUES ('Totalt:','" & kundID & "','" & totalPris & "');"
my_Conn.Execute(SQLStmt)

order = order & "Totalt: " & " " & totalPris  & " kr."
135 ms totalt · 3 externa anrop · v20260731065814-full.94fcd635
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)