Avatar billede pelskee Nybegynder
08. september 2003 - 10:17 Der er 38 kommentarer og
1 løsning

hidden field value

er der nogen måde jeg kan smide den beregning på et hidden field:
dette vil den ikke æde:

<input name="Freight" type="hidden" id="Freight6" value="<%
value = CInt(Sum_Weight.Fields.Item("WeightTotal").Value)
If value <= 50 Then
response.write formatNumber(rsShippingrates.Fields.Item("50").Value,2)

ElseIf value <= 100 Then
response.write formatNumber(rsShippingrates.Fields.Item("100").Value,2)

ElseIf value <= 250 Then
response.write formatNumber(rsShippingrates.Fields.Item("250").Value,2)

ElseIf value <= 500 Then
response.write formatNumber(rsShippingrates.Fields.Item("500").Value,2)

ElseIf value <= 1000 Then
response.write formatNumber(rsShippingrates.Fields.Item("1000").Value,2)

ElseIf value <= 2000 Then
response.write formatNumber(rsShippingrates.Fields.Item("2000").Value,2)

End If
%>">
Avatar billede pelskee Nybegynder
08. september 2003 - 10:20 #1
2. hvordan ligger jeg resultatet fra ovenstående sammen med: <%= FormatNumber((Sum_Price.Fields.Item("Price_Total").Value), 2)%> så jeg får en Total Total pris
3. hvordan ligger jeg 2.s værdi på et hidden field så jeg kan sende den værdi videre
Avatar billede nmh Nybegynder
08. september 2003 - 10:28 #2
Lav først en variabel R, hvor du samler resultatet op
<%
if ... then
  R=formatNumber(rsShippingrates.Fields.Item("100").Value,2)
elseif ....
.....
%>
Avatar billede pelskee Nybegynder
08. september 2003 - 10:30 #3
done:

<%
value = CInt(Sum_Weight.Fields.Item("WeightTotal").Value)
If value <= 50 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("50").Value,2)

ElseIf value <= 100 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("100").Value,2)

ElseIf value <= 250 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("250").Value,2)

ElseIf value <= 500 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("500").Value,2)

ElseIf value <= 1000 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("1000").Value,2)

ElseIf value <= 2000 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("2000").Value,2)

End If
%>
                                      <input name="Freight" type="hidden" id="Freight6" value="<%=FreightCost%>">
Avatar billede nmh Nybegynder
08. september 2003 - 10:32 #4
aspkode:
totalpris=FormatNumber(Cdbl((Sum_Price.Fields.Item("Price_Total").Value)) + R, 2)

til sidst:
HTMLkode:
<input type=hidden name=total" value="<%=total%>">
Avatar billede nmh Nybegynder
08. september 2003 - 10:41 #5
Sum_Price.Fields.Item("Price_Total").Value
denne størelse er tekst derfor konverterer jeg til tal.
FreightCost er også tekst.
Total=Cdbl(Sum_Price.Fields.Item("Price_Total").Value)+Cdbl(FreightCost)
Nu udskrives total så i det skjulte inputfelt.
Avatar billede mvk Nybegynder
08. september 2003 - 11:36 #6
<input name="Payment" type="hidden" id="Payment6" value="<% Request.Querystring(Betalingsvalg)%>">
virker ikke - jeg sender URL variabel til den side: ...&Betalingsvalg=<%=Request.Form("Betalingsvalg")%>
Avatar billede mvk Nybegynder
08. september 2003 - 11:37 #7
Total til hidden flet har jeg bare lavet sådan:
<input name="Amount" type="hidden" id="Amount" value="<%=TotalTotal%>"></td>
Avatar billede nmh Nybegynder
08. september 2003 - 11:43 #8
<input name="Amount" type="hidden" id="Amount" value="<%=TotalTotal%>"></td>
og det virkede vel?

du bør gemme Request.Querystring(Betalingsvalg)i en variabel, som du kunne kalde Betalingsvalg.
Man plejer at hente de data, der sendes til en asp-side til at begynde med.
Når du så senere vil udskrive den sker det f.eks. således:
<input name="Payment" type="hidden" id="Payment6" value="<%=Betalingsvalg">
Avatar billede nmh Nybegynder
08. september 2003 - 11:44 #9
ups glemte %>.
Altså således:
<input name="Payment" type="hidden" id="Payment6" value="<%=Betalingsvalg%>">
Avatar billede mvk Nybegynder
08. september 2003 - 11:50 #10
når jeg gennem den i en variabel kan jeg så bare gøre sådan:
<%Betalingsvalg=Request.Querystring(Betalingsvalg)%>
og så hente den som du skriver:
<input name="Payment" type="hidden" id="Payment6" value="<%=Betalingsvalg%>">
Avatar billede nmh Nybegynder
08. september 2003 - 12:00 #11
Når du udskriver Betalingsvalg i det skjulte felt, henter du den ikke, men sender værdien ud til brugeren.
Hvis brugeren senere submitter, kan du hente den med ordren
Betalingsvalg=Request.form.("Betalingsvalg")
eller
Betalingsvalg=Request.Querystring.("Betalingsvalg")
afhængig af om hvilken metode, der benyttes, når der submittes.
Avatar billede mvk Nybegynder
08. september 2003 - 12:06 #12
1. jeg skal hente den variabel jeg har sendt med til siden
2. jeg skal sende den videre med en form - POST hvor den skal skrives til en database

sådan står den nu:
<input name="Payment" type="hidden" id="Payment6" value="<%=Betalingsvalg%>">
Avatar billede mvk Nybegynder
08. september 2003 - 12:07 #13
sådan er min form:
<form name="form1" method="POST" action="<%=MM_editAction%>">
                                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                  <tr>
                                    <td width="11">&nbsp;</td>
                                    <td width="184"><input name="sessionID" type="hidden" id="sessionID5" value="<%= Session.SessionID %>">
                                      <input name="Status" type="hidden" id="Status6" value="New">
                                      <input name="customerID" type="hidden" id="customerID6" value="<%=(rsCustomer.Fields.Item("IDcustomer").Value)%>">
                                      <input name="Freight" type="hidden" id="Freight6" value="<%=FreightCost%>">
                                      <input name="Payment" type="hidden" id="Payment6" value="<%=Betalingsvalg%>">
                                      <input name="Amount" type="hidden" id="Amount" value="<%=TotalTotal%>"></td>
                                    <td width="156" align="right" class="productPrice" onClick="MM_openBrWindow('dk_shoppingbag_print.asp?CustomerID=<%=(rsCustomer.Fields.Item("IDcustomer").Value)%>&amp;Forsendelse=<%=(rsShippingrates.Fields.Item("Destination").Value)%>','','scrollbars=yes,resizable=yes,width=460,height=600')"><a href="#"><font color="#DB2222">Print</font></a></td>
                                    <td width="156" align="right"> <input type="submit" name="Submit2" value="G&aring; til betaling" class="buttons"></td>
                                  </tr>
                                </table>
                                <input type="hidden" name="MM_insert" value="form1">
                              </form>
Avatar billede nmh Nybegynder
08. september 2003 - 12:46 #14
Ok, men den ASP-side, som aktiveres, når brugeren trykker submit (det er åbenbart en side, hvis navn er gemt i variablen
MM_editAction) bør så starte med at hente alle data fra de forskellige input-felter:
Status=Request.form("Status")
customerID=Request.form("customerID")
...
således fortsættes, og så har du alle de indsendte data i forskellige variable til videre behandling.
Avatar billede mvk Nybegynder
10. september 2003 - 09:28 #15
jeg bruger denne kode

<%
value = CInt(Sum_Weight.Fields.Item("WeightTotal").Value)
If value <= 50 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("50").Value,2)

ElseIf value <= 100 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("100").Value,2)

ElseIf value <= 250 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("250").Value,2)

ElseIf value <= 500 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("500").Value,2)

ElseIf value <= 1000 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("1000").Value,2)

ElseIf value <= 2000 Then
FreightCost=formatNumber(rsShippingrates.Fields.Item("2000").Value,2)

End If
%>


men kan ikke få lov til at bruge den til at smide videre til databasen med:

<input name="Freight" type="hidden" id="Freight6" value="<%=FreightCost%>">
Avatar billede mvk Nybegynder
10. september 2003 - 09:30 #16
+ en mere:

<% TotalTotal=FormatNumber(Cdbl((Sum_Price.Fields.Item("Price_Total").Value)) + FreightCost, 2) %>
<td align="right" valign="middle" style="border-top:1px solid #000000;"><%=TotalTotal%></td>

kan jeg heller ikke få lov til at skrive i databasen:

<input name="Amount" type="hidden" id="Amount" value="<%=TotalTotal%>">


!!felterne i databasen står til TAL format
Avatar billede nmh Nybegynder
10. september 2003 - 09:36 #17
men så kan du konvertere tekst til tal
x=Clng(x), Cint(x) eller Cdbl(x)
afhængig af tal-typen.
Clng meget store heltal
Cint heltal mellem ca. -32000 og 32000
Cdbl kommatal med mange cifre (for at sige det lidt løst)
Avatar billede mvk Nybegynder
10. september 2003 - 09:52 #18
jeg afsætter lige 50 point mere til dig nmh - du har fanme hjulpet meget

i databasen står de som Lange Heltal

nu har jeg gjort sådan, men det virker stadig ikke:

<% TotalTotal=FormatNumber(Clng((Sum_Price.Fields.Item("Price_Total").Value)) + FreightCost, 2) %>
<td align="right" valign="middle" style="border-top:1px solid #000000;"><%=TotalTotal%></td>
Avatar billede mvk Nybegynder
10. september 2003 - 09:52 #19
<%
value = Clng(Sum_Weight.Fields.Item("WeightTotal").Value)
If value <= 50 Then
FreightCost=formatNumber(Clng(rsShippingrates.Fields.Item("50").Value),2)

ElseIf value <= 100 Then
FreightCost=formatNumber(Clng(rsShippingrates.Fields.Item("100").Value),2)

ElseIf value <= 250 Then
FreightCost=formatNumber(Clng(rsShippingrates.Fields.Item("250").Value),2)

ElseIf value <= 500 Then
FreightCost=formatNumber(Clng(rsShippingrates.Fields.Item("500").Value),2)

ElseIf value <= 1000 Then
FreightCost=formatNumber(Clng(rsShippingrates.Fields.Item("1000").Value),2)

ElseIf value <= 2000 Then
FreightCost=formatNumber(Clng(rsShippingrates.Fields.Item("2000").Value),2)

End If
%>
Avatar billede nmh Nybegynder
10. september 2003 - 10:31 #20
der er ikke nogen grund til at have Clng her
formatNumber(Clng(rsShippingrates.Fields.Item("50").Value),2)
formatNumber-funktionen laver et tal.
Og med Clng får du fjernet decimaler efter kommaet.
her rsShippingrates... faktisk et kommtal?
Hvis det skal gemmes i et felt med lange heltal, får du måske problemer.
prøv med
FreightCost=Clng(rsShippingrates.Fields.Item("50").Value)
Så prøver du at gemme et langt heltal i databasen.

Når du siger, at det ikke virker, hvad er det så der sker?
Avatar billede mvk Nybegynder
10. september 2003 - 10:32 #21
skal jeg så ikke bare lave formatteringen om i databasen (Access) så feltet får en anden standardværdi ?
Avatar billede nmh Nybegynder
10. september 2003 - 10:41 #22
Ja. Hvis du skal gemme tal af form 123,45
så vælg et format, der passer dertil.

Så prøv lige at se om ikke det løser problemet.
Avatar billede mvk Nybegynder
10. september 2003 - 10:53 #23
Byte
Heltal
Langt Heltal
Reelt tal
Dobbelt reelt tal
Decimal
.
burde jeg så ikke kune vælge Reelt tal ?
Avatar billede nmh Nybegynder
10. september 2003 - 11:01 #24
jo, eller decimal med to decimaler. Det er jo den slags tal du arbejder med. Så vælg devima, og så kan du derefter fortælle, at det skal være tal med to decimaler.
Og så skal du blot benytte formatnumber og ikke noget med Clng etc her.
value skal dog være et tal enten =Cint... eller =Clng...
Avatar billede mvk Nybegynder
10. september 2003 - 11:27 #25
jeg har nu defineret TotalTotal i databasen til Decimal med 2 decimaler
men den melder fejl når jeg har formatteret det:
<% TotalTotal=formatnumber(((Sum_Price.Fields.Item("Price_Total").Value)) + FreightCost,2) %>

når jeg gør sådan får jeg ikke fejl:
<% TotalTotal=(((Sum_Price.Fields.Item("Price_Total").Value)) + FreightCost) %>
Avatar billede mvk Nybegynder
10. september 2003 - 11:29 #26
jeg prøver at ligge den i databasen fra dette felt:
<input name="Amount" type="hidden" id="Amount" value="<%=TotalTotal%>">
Avatar billede mvk Nybegynder
10. september 2003 - 11:31 #27
kan det være fordi databasen og ASP vil have forskellige tegn som seperator - komma , og punktum . ?
Avatar billede nmh Nybegynder
10. september 2003 - 11:37 #28
ja, måske.
Hvis du kun skal bruge databasen til at gemme i, og alle bereninger m.m. laves i dine asp-sider, så kan du lade felterne i databasen være af typen tekst.
Du skal så blot konvertere din tal til tekst inden du gemmer i databasen. Og den anden vej, når du henter dem, for at regne på dem. Hvis du henter dem for at vise dem i en asp-side, kan du lade dem være som tekst.
x=Cstr(y)
Avatar billede mvk Nybegynder
10. september 2003 - 11:38 #29
okay - skal jeg så konvertere value til String ?
Avatar billede nmh Nybegynder
10. september 2003 - 11:42 #30
nej kun de variable, som er tal og som skal gemmes i databasen. Men det kan også være den vil tage dem uden videre.
Hvis value var en tekst-streng ville value<50 svare til at spørge om "25"<50 og det går ikke.
Avatar billede mvk Nybegynder
10. september 2003 - 11:47 #31
hehe - alt det og så ender jeg med at skrive det som tekst til DBen. Der virker det hele. Hvordan trækker jeg det ud som beløb ?
<%=(rsOrdre.Fields.Item("Amount").Value)%> ved jeg står som eks. 730,00 i DB, men vises som 730
Avatar billede mvk Nybegynder
10. september 2003 - 11:48 #32
undskyld - står som 730,50 i db - og vises som 730
Avatar billede nmh Nybegynder
10. september 2003 - 11:56 #33
hvis det står som 730,50 i databasen så ender det også sådan, med mindre du undervejs har konverteret til heltal.
Avatar billede mvk Nybegynder
10. september 2003 - 12:22 #34
men hvis et tal står som 730,00 kommer det ikke med - så skriver den bare 730
Avatar billede nmh Nybegynder
10. september 2003 - 12:26 #35
ja 730,00 vil blive til 730 hvis det konverters til et tal.
Men hvis du vil have taller 730 skrevet som 730,00
skal du benytte formatnumber(x,2).
Avatar billede mvk Nybegynder
10. september 2003 - 12:58 #36
tak :)
Avatar billede nmh Nybegynder
10. september 2003 - 13:04 #37
vil det sige, at du nu er ved at få det til at virke?
Avatar billede pelskee Nybegynder
10. september 2003 - 15:55 #38
yes - det kører nu. Thanks m8te
Avatar billede nmh Nybegynder
10. september 2003 - 16:00 #39
Fint, jeg takker for point.
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