IvarMedlem sedan aug. 2002218 inlägg 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 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 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 Jesper T vart ska jag implementera koden?
Jesper TMedlem sedan nov. 20017 144 inlägg 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 '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 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 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 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 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."