Toon posts:

ASP: 1 variable meerder malen optellen

Pagina: 1
Acties:
  • 363 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een pagina gemaakt waarbij ik het volgende doe:

aantal uren x prijs per uur

De uitkomst wordt goed getoont.
Nu ik deze in een repeat region zet wordt ook alles goed uitgerekend.

Nu wil ik de totalen van ieder resultaat optellen.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<% 
While ((Repeat2__numRows <> 0) AND (NOT materiaal.EOF)) 
%>
 <%=(materiaal.Fields.Item("eenheid").Value)%>

<%Response.Write  "€ "&Cstr(FormatNumber(materiaal("prijs"),2))%>

 <%subtotaalm = (materiaal.Fields.Item("eenheid").Value)*(materiaal.Fields.Item("prijs").Value)%>
  
 <%response.write formatnumber(subtotaalm,2)%>

  <% 
  Repeat2__index=Repeat2__index+1
  Repeat2__numRows=Repeat2__numRows-1
  materiaal.MoveNext()
Wend
%>

Wanneer ik nu onderaan de repeat region een optelling doe wordt alleen de laatste waarde van de variable "subtotaalm" getelt en niet alles wat wordt weergegeven.

Kan iemand mij hiermee verder helpen ?

Thx

John

[ Voor 5% gewijzigd door RobIII op 02-03-2007 15:13 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Hoi en welkom op GoT :w

Als je code post, doe dat dan a.u.b. tussen [code] tags, dat maakt het geheel een stuk leesbaarder ;)

Je zult een extra variabele ("totaal" ofzo) moeten maken en die in je lus telkens ophogen met subtotaal.

Visual Basic:
1
totaal += subtotaal

En dan de variabele "totaal" aan (achter) het eind van je lus uitvoeren.

Dus:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Dim subtotaal as decimal
Dim totaal as decimal

While ....
   ....
   subtotaal = a * b
   afdrukken subtotaal
   totaal += subtotaal
   ...
End While
afdrukken totaal

[ Voor 108% gewijzigd door RobIII op 02-03-2007 15:17 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wanneer ik nu de code toe past krijg ik een syntax error.

code:
1
2
3
4
5
6
7
8
Compilatiefout Microsoft VBScript error '800a03ea' 

Syntaxisfout 

/factuur/maken/factuurmaken.asp, line 123 

totaalw += subtotaalw
---------^

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09-10 22:53

TeeDee

CQB 241

VBScript:
1
subtotaalm = subtotaalm & (materiaal.Fields.Item("eenheid").Value)*(materiaal.Fields.Item("prijs").Value)

Probeer het eens op die manier.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb de gedefineerde variable boven aan de pagina staan.
De overige code staat hieronder:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<% 
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) 
%>
  <table width="90%" border="0" align="center">
    <tr>
      <td width="60%"><%=(Recordset1.Fields.Item("onderdeel").Value)%></td>
      <td width="15%"><%=(Recordset1.Fields.Item("aantaluren").Value)%></td>
      <td width="15%">
      <%Response.Write  "€ "&Cstr(FormatNumber(Recordset1("prijs"),2)) %></td>
      <td width="10%"><div align="right">
       <%subtotaalw = (Recordset1.Fields.Item("aantaluren").Value)*(Recordset1.Fields.Item("prijs").Value)%>&#8364;&nbsp;<%response.write formatnumber(subtotaalw,2)%>
<%
totaalw += subtotaalw
%>
 
      </div></td>
    </tr>
  </table>
  <% 
  
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  Recordset1.MoveNext()
Wend
%> <%
Response.Write(totaalw)%>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wanneer ik de + en de = omdraai geeft deze als resultaat het laatst geprint bedrag

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wanneer ik de volgende regel uitvoert in het script krijg ik de melding "False".

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mijn totale pagina ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include virtual="/Connections/grienddb.asp" -->
<%
Dim subtotaal 
Dim totaal
Dim Recordset1__MMColParam
Recordset1__MMColParam = "1"
If (Session("factuurid") <> "") Then 
  Recordset1__MMColParam = Session("factuurid")
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_grienddb_STRING
Recordset1.Source = "SELECT * FROM Querywerzaamhedenoverzicht WHERE factuurnr = '" + Replace(Recordset1__MMColParam, "'", "''") + "'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<%
Dim materiaal__MMColParam
materiaal__MMColParam = "1"
If (Session("factuurid") <> "") Then 
  materiaal__MMColParam = Session("factuurid")
End If
%>
<%
Dim materiaal
Dim materiaal_numRows

Set materiaal = Server.CreateObject("ADODB.Recordset")
materiaal.ActiveConnection = MM_grienddb_STRING
materiaal.Source = "SELECT * FROM Queryartikeloverzicht WHERE factuurnr = '" + Replace(materiaal__MMColParam, "'", "''") + "'"
materiaal.CursorType = 0
materiaal.CursorLocation = 2
materiaal.LockType = 1
materiaal.Open()

materiaal_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>
<%
Dim Repeat2__numRows
Dim Repeat2__index

Repeat2__numRows = -1
Repeat2__index = 0
materiaal_numRows = materiaal_numRows + Repeat2__numRows
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table width="90%" border="0" align="center">
  <tr>
    <td width="60%">Klantnummer: <%= Session("bedrijf") %><br />
Factuurnummer:
  <% =Left (Session("factuurid"),9) %>
  <br />
Factuurdatum:
<%Response.Write Request.Cookies("datum") %></td>
    <td width="15%">&nbsp;</td>
    <td width="15%">&nbsp;</td>
    <td width="10%">&nbsp;</td>
  </tr>
</table>
<p>

<table width="90%" border="0" align="center">
  <tr>
    <td colspan="4"><hr width="100%" size="3" /></td>
  </tr>
  <tr>
    <td width="60%"><strong>Omschrijving</strong></td>
    <td width="15%"><strong>Hoeveelheid</strong></td>
    <td width="15%"><strong>Prijs per eenheid </strong></td>
    <td width="10%"><strong>Subtotaal</strong></td>
  </tr>
  <tr>
    <td colspan="4"><hr width="100%" size="3" /></td>
  </tr>
</table>
<br />
<table width="90%" border="0" align="center">
  <tr>
    <td width="60%"><strong>Werkzaamheden:</strong></td>
    <td width="15%">&nbsp;</td>
    <td width="15%">&nbsp;</td>
    <td width="10%">&nbsp;</td>
  </tr>
</table>

<% 
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) 
%>
  <table width="90%" border="0" align="center">
    <tr>
      <td width="60%"><%=(Recordset1.Fields.Item("onderdeel").Value)%></td>
      <td width="15%"><%=(Recordset1.Fields.Item("aantaluren").Value)%></td>
      <td width="15%">
      <%Response.Write  "€ "&Cstr(FormatNumber(Recordset1("prijs"),2)) %></td>
      <td width="10%"><div align="right">
       <%subtotaalw = (Recordset1.Fields.Item("aantaluren").Value)*(Recordset1.Fields.Item("prijs").Value)%>&#8364;&nbsp;<%response.write formatnumber(subtotaalw,2)%>

 
      </div></td>
    </tr>
  </table>
  <% 
  
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  Recordset1.MoveNext()
Wend
%> 
  <br />
  <table width="90%" border="0" align="center">
  <tr>
    <td width="60%"><strong>Materiaal:</strong></td>
    <td width="15%">&nbsp;</td>
    <td width="15%">&nbsp;</td>
    <td width="10%">
</td>
  </tr>
</table>

<% 
While ((Repeat2__numRows <> 0) AND (NOT materiaal.EOF)) 
%>
  <table width="90%" border="0" align="center">
    <tr>
      <td width="60%"><%=(materiaal.Fields.Item("Materiaal").Value)%></td>
      <td width="15%"><%=(materiaal.Fields.Item("eenheid").Value)%></td>
      <td width="15%"><%Response.Write  "€ "&Cstr(FormatNumber(materiaal("prijs"),2))%></td>
      <td width="10%"><div align="right">
        <%subtotaalm = (materiaal.Fields.Item("eenheid").Value)*(materiaal.Fields.Item("prijs").Value)%>
  &#8364;&nbsp;
  <%response.write formatnumber(subtotaalm,2)%>
      </div></td>
    </tr>
  </table>
  <% 
  Repeat2__index=Repeat2__index+1
  Repeat2__numRows=Repeat2__numRows-1
  materiaal.MoveNext()
Wend
%>
  <br />
  <table width="90%" border="0" align="center">
  <tr>
    <td width="60%">&nbsp;</td>
    <td width="15%">&nbsp;</td>
    <td width="15%"><strong>Subtotaal</strong></td>
    <td width="10%"><div align="right">
      <%subtotaal = (subtotaalm)+(subtotaalw)%>
      &#8364;&nbsp;<%response.Write formatnumber(subtotaal,2)%>
    </div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><strong>Inzetbelasting</strong></td>
    <td><div align="right"><%omzetb = (subtotaal)/100*19%>
    &#8364;&nbsp;<%Response.Write formatnumber(omzetb,2)%></div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><strong>Totaal bedrag </strong></td>
    <td><div align="right"><%totaal = (omzetb)+(subtotaal)%>&#8364;&nbsp;<%Response.Write formatnumber(totaal,2)%></div></td>
  </tr>
</table>
<p>&nbsp;</p>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
<%
materiaal.Close()
Set materiaal = Nothing
%>

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09-10 22:53

TeeDee

CQB 241

Haal even diep adem. Je kan je berichten bewerken door op de edit knop te drukken, rechts boven je post.

Heb je trouwens mijn mogelijke oplossing al geprobeerd?

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 14:57

sopsop

[v] [;,,;] [v]

+= werkt niet in asp-classic.
Probeer het eens als volgt:
Visual Basic:
1
Totaal = Totaal + SubTotaal

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 02 maart 2007 @ 16:45:
Wanneer ik nu de code toe past krijg ik een syntax error.

code:
1
2
3
4
5
6
7
8
Compilatiefout Microsoft VBScript error '800a03ea' 

Syntaxisfout 

/factuur/maken/factuurmaken.asp, line 123 

totaalw += subtotaalw
---------^
8)7 My bad. Macht der gewoonte :P
+= is ASP.Net syntax, voor classic ASP gebruik je gewoon a = a + 1
Je moet ook wat dingen uit elkaar houden (ook TeeDee). + gebruik je voor getallen, & gebruik je voor strings (concatenation).

Dat houdt in dat 1 + 1 = 2 en 1 & 1 = 11 ;)

[ Voor 10% gewijzigd door RobIII op 02-03-2007 22:50 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

RobIII schreef op vrijdag 02 maart 2007 @ 22:48:
[...]

+= is ASPVB.Net syntax, voor classic ASPvbScript gebruik je gewoon a = a + 1
Je moet ook wat dingen uit elkaar houden

Dat houdt in dat 1 + 1 = 2 en 1 & 1 = 11 ;)
Met een beetje geluk levert 1 + 1 ook nog 11 op in vbScript :P Strings concatenaten mag nl ook met een +
Hierdoor moet je opletten of het getal dat je uit een database haalt ook daadwerkelijk als getal wordt herkend in vbs of dat het als string wordt herkend ;)

kaart != map && bottel != fles
Wacht op antwoord


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor al jullie reacties maar het lukt me helaas niet.
Ik heb in de database een kolom staan met prijzen en een kolom met het aantal uren.
Op de pagina zelf doe ik al prijzen x uren en wordt de uitkomst goed getoont.

Nu ik meerdere regels heb dmv de repeat region wil ik alle uitkomsten bij elkaar optellen maar wil dit niet zo lukken.

Heeft iemand nog een idee/oplossing ?

[ Voor 5% gewijzigd door Verwijderd op 03-03-2007 14:27 ]

Pagina: 1