Avatar billede swing Nybegynder
08. marts 2004 - 12:14 Der er 21 kommentarer og
1 løsning

Beretning af forsendelse ved vægt

Hej Eksperter. Jeg har et problem her, jeg ved ikke rigtigt hvordan jeg griber det an.

Jeg vil gerne beregne forsendelsespris på baggrund af vægt i en shop. Så jeg skal først regne vægten sammen. Den samlede vægt sammenlignes så med data fra en tabel i Access. f.eks:

vare 1 vejer 0,5 kg. vare 2 vejer 0,9 kg = 1,4 kg
i min database har jeg forskellige intervaller f.eks. 0 - 0,9 og 1,0 - 3,5 kg.

vægten er så 1,4 og forsendelse 1,0 - 3,5 kg = 10,25 kr. i forsendelse.

jeg har en tabel der hedder vare og et felt der hedder varevægt
jeg har en tabel der hedder forsendelse med felterne forsendelsespris og vægt

Hvordan griber jeg det an?
Avatar billede fennec Nybegynder
08. marts 2004 - 12:49 #1
"select max(forsendelsespris) as pris from forsendelse where vægt<="& VægtPåPakken
Avatar billede swing Nybegynder
08. marts 2004 - 13:09 #2
Jeg er vist ikke helt med, her er mit recordset:

Set forsendelse = Server.CreateObject("ADODB.Recordset")
forsendelse.ActiveConnection = Conn
forsendelse.Source = "SELECT * FROM forsendelse"
forsendelse.CursorType = 0
forsendelse.CursorLocation = 2
forsendelse.LockType = 1
forsendelse.Open()

forsendelse_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
kategorier_numRows = kategorier_numRows + Repeat1__numRows
%>
<%
'
'Add shipping from a value in a recordset
'The recordset may be pre-filtered based on the CCcart_SubTotal value
'
if not forsendelse.eof then
CCcart_Shipping=forsendelse("forsendelsespris")
end if
%>

Den henter godt nok en forsendelsepris men det er den første i tabellen, jeg vil gerne have den henter den post der svarer til den samlede vægt for alle valgte varer.
Jeg tror den er lidt tricky, smider gerne flere points eller guld til den der kan hjælpe mig med at lave det (snart deadline)
Avatar billede fennec Nybegynder
08. marts 2004 - 13:16 #3
Jeg skal lige være helt sikker på dit format i din tabel med "forsendelsespris". Hvilket format er "vægt" på.
Er det en tekst: "0 - 0,9 kg." eller gemmer du bare et tal????
Avatar billede swing Nybegynder
08. marts 2004 - 13:18 #4
det er tekst
Avatar billede fennec Nybegynder
08. marts 2004 - 13:27 #5
OK, så skal du have et felt til på tabellen. Det skal være et decimal tal og skal indeholde max Kg. værdien for hver interval. Noget i denne retning:

interval    maxKg  pris
"0-1,0 kg."    1,0    15
"1,0-3,5 kg."  3,5    24,5
"3,5-5,0 kg."  5,0    34

"select max(pris) as pris from forsendelse where maxKg<"& VægtPåPakken

Jeg har lige lavet et par ændringer i dine intervaller. For hvis nu pakken vejer 0,95 kg????
Avatar billede swing Nybegynder
08. marts 2004 - 13:46 #6
ok den er oprettet - skal det være tal-langt heltal eller tal - decimal?

og VægtPåPakken hvordan får jeg det ind?
Avatar billede fennec Nybegynder
08. marts 2004 - 13:59 #7
decimal.
VægtPåPakken beregner du ud fra de vare der er købt. Noget i denne retning:

VaegtPaaPakken = 0
set rs = conn.execute("select alle købte vare id'er fra IndkøbsKurven....")
do while not rs.eof
  set rs1 = conn.execute("select vægt from ...... where id="&rs("id"))
  VaegtPaaPakken = VaegtPaaPakken + rs1("vægt")
  rs.movenext
loop

eller hvordan du nu kan få vægten....
Avatar billede swing Nybegynder
08. marts 2004 - 14:26 #8
Ja det er så mit næste problem, de valgte varer er endnu ikke i databasen men i en cookie, CharonCart - kan man requeste indhold af en cookie?

VaegtPaaPakken = 0
set rs = Request.Cookies("CharonCart")

  set rs1 = conn.execute("select varevaegt from varer where id="&rs("CC_ProductID"))
  VaegtPaaPakken = VaegtPaaPakken + rs1("varevaegt")
  rs.movenext
loop

får en fejl i loop uden do
Avatar billede fennec Nybegynder
08. marts 2004 - 14:36 #9
du skal bare have lavet løkken om (do while løkken) så den passer til din cookie. Nu ved jeg ikke hvordan/hvilke data du gemmer i cookien, men du skal bare løbe cookien igennem også finde vægten pr. vare. Du har sikket en løkke et andet sted, hvor du gemmer dataerne fra cookien til databasen. Du kan bruge den samme løkke her....
Avatar billede swing Nybegynder
08. marts 2004 - 14:54 #10
Min cookie:

<%
CONST CC_ProductID = 0
CONST CC_Quantity = 1
CONST CC_Name = 2
CONST CC_Price = 3
CONST CC_UniqueKey = 4
if Request.Cookies("CharonCart") = "" then
dim CCcart(5,50)
else
CCcart=CookieToCart("CharonCart")
end if

CCcart_SubTotal=0
CCcart_numItems=0
CCcart_Shipping=0
CCcart_Discount=0
CCcart_SalesTax=0
isFound=false
for i=0 to ubound(CCcart,2)
if CCcart(CC_ProductID,i) <> "" then
isFound=true
CCcart_SubTotal=CCcart_SubTotal + (CCcart(CC_Quantity,i)*CCcart(CC_Price,i))
CCcart_numItems=CCcart_numItems + 1
end if
next
function CCcart_LineTotal
CCcart_LineTotal=CCcart(CC_Quantity,i)*CCcart(CC_Price,i)
end function
function CCcart_GrandTotal
CCcart_GrandTotal=CCcart_SubTotal + CCcart_Shipping + CCcart_SalesTax - CCcart_Discount
end function

function CartToCookie(thearray,cookiename)
on error resume next
mystring=""
for j=0 to ubound(CCcart,2)
if CCcart(CC_ProductID,j) <> "" then
for i=0 to 5
mystring=mystring & CCcart(i,j) & "^"
next
mystring=left(mystring,len(mystring)-1)
mystring=mystring & "|"
end if
next
mystring=left(mystring,len(mystring)-1)
Response.Cookies(cookiename)=mystring
end function

function CookieToCart(cookiename)
dim myarray(5,50)
mystring=Request.Cookies(cookiename)
productarray=split(mystring,"|")
for j=0 to ubound(productarray)
itemarray=split(productarray(j),"^")
for i=0 to 5
if itemarray(i) <> "" then
myarray(i,j)=itemarray(i)
else
myarray(i,j)=null
end if
next
next
CookieToCart=myarray
end function

%>
Avatar billede fennec Nybegynder
08. marts 2004 - 15:57 #11
Nå du gemmer "kurven" i databasen, hvordan gør du så nu?
Avatar billede swing Nybegynder
08. marts 2004 - 16:04 #12
Jeg gemmer ikke "kurven" i databasen. Jeg sender en bekræftigelse via mail men selve ordren kommer ikke i databasen.
Avatar billede fennec Nybegynder
08. marts 2004 - 16:06 #13
Den må indeholde alle vare, der er bestilt.
hvordan skriver du dem i mailen?
Avatar billede swing Nybegynder
08. marts 2004 - 16:18 #14
<% for i=0 to ubound(CCcart,2)

if CCcart(CC_ProductID,i) <> "" then

bodyStr = bodyStr & CCcart(CC_Quantity,i) & " stk " & CCcart(CC_Name,i) & "<br>"
end if
next
%>
Avatar billede fennec Nybegynder
08. marts 2004 - 16:27 #15
Total vægt noget ligende dette:

<%
VaegtPaaPakken = 0
for i=0 to ubound(CCcart,2)
  if CCcart(CC_ProductID,i) <> "" then
    set rs = conn.execute("select vægt from vare where id="& CCcart(CC_ProductID,i))
    VaegtPaaPakken = VaegtPaaPakken + (rs("vægt") * CCcart(CC_Quantity,i))
  end if
next
%>
Avatar billede swing Nybegynder
08. marts 2004 - 17:44 #16
Jeg får en fejl

Der er en syntaksfejl, fordi der mangler et komma. i forespørgselsudtrykket "maxKg<0,9".

Når jeg skriver f.eks. 1,5 i databasen i feltet MaxKg skifter den til 1
altså uden decimaler

Feltet står til
tal - decimaler
Avatar billede swing Nybegynder
08. marts 2004 - 18:07 #17
Jeg rensede cachen så kom fejlen ikke mere

Men hvis jeg kun vælger 1 vare der vejer 1,0 eller under så får jeg ingen forsendelspris, vælger jeg 2 varer på f.eks. 2,0 tilsammen så får jeg det rigtige.

Ellers virker det hele max dejligt :-)
Avatar billede swing Nybegynder
08. marts 2004 - 18:12 #18
manglede =

i "select max(forsendelsespris) as pris from forsendelse where vægt<"& VægtPåPakken

Jeg takker sgu rigtigt meget, kanon hjælp :-)
Avatar billede swing Nybegynder
08. marts 2004 - 20:33 #19
Så mangler jeg bare et svar så du kan få dine velfortjente point :-)
Avatar billede fennec Nybegynder
09. marts 2004 - 08:09 #20
:o)
Avatar billede swing Nybegynder
09. marts 2004 - 08:47 #21
Hmm hvordan tilføjer jeg mon flere points
Avatar billede swing Nybegynder
09. marts 2004 - 08:51 #22
ahh sådan :-)

Endnu engang tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester