Toon posts:

[ASP] Getallen updaten in de databank

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi iedereen,

Ik ben momenteel een programma aan het schrijven voor een fuif, de bedoeling is dat ze aan de kassa telkens op enter kunnen duwen als er een bezoeker binnenkomt, en andere kunnen dan de statistieken bekijken.

Het enige wat maar niet wilt lukken, is hetzelfde getal in de databank update. Mijn code om in te voegen zit zo:

ASP.NET Visual Basic:
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
<%@language="vbscript"%>
<html >
<table border="0" width="100%" bgcolor="#A52A2A">
<tr>
      <td width="100%">
        <div align="center">
<table border="0" width="75%" bgcolor="#C0C0C0" cellspacing="1" cellpadding="4">
<tr>
              <td width="100%" valign="top">
<center><h1>KASSA systeem</h1></center>
<form name="form1" method="post">
  <b>Geef het aantal bezoekers in :</b><br><br>
    <input type="submit" name="getal" value= "+">
    <input type="submit" name="getal" value= "-"><br><br>
</form>
<p><a href="/bos/index.html"><-- Terug</a></p>
</td></tr></table>
</div></td></tr>

</table>
<%
Set cnverbinding = Server.CreateObject("ADODB.Connection")
strverbindingsstring="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("data.mdb")
cnverbinding.Open strverbindingsstring

set rstuser = cnverbinding.execute("SELECT * FROM tbldata")

dim intgetal
dim inttotaal

rstuser.movelast

inttotaal = rstuser("getal")

if request.form("getal")="+" then
inttotaal = inttotaal + 1
else
inttotaal = inttotaal - 1
end if


SQL="INSERT INTO tbldata(getal) VALUES(" & inttotaal & ")"
set rstuser2 = cnverbinding.execute (SQL)

%>
</html>


Dit geeft dus een fout bij "rstuser.movelast".

code:
1
De rijenset ondersteunt achterwaarts ophalen niet.


Maar zonder die "rstuser.movelast". Pakt hij gewoon het eerste aantal in dat veld, wat dus altijd 0 of 1 ofzo. En Access maakt standaard al een nieuw record aan in het veld, 0, dus klopt rstuser.movelast ook niet, dat zou iets van een rstuser.movelast - 1 moeten zijn.

Dit probleem heb ik ook als ik de gegevens terug wil opvragen, rstuser.EOF = true enzo klopt eigenlijk niet, want laatste is allemaal 0, aangezien access standaard nieuwe record aanmaakt, en rstuser.EOF - 1 = true werkt natuurlijk niet..

Zou iemand me hier een beetje op weg kunnen helpen? Heb gezocht op google achter info over ASP + EOF enzo, maar niets over mijn probleem gevonden.

  • Rath
  • Registratie: April 2002
  • Laatst online: 18-02 10:59
Probeer het eens zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Set rstuser = New ADODB.Recordset
rstuser.Open "SELECT * FROM tbldata", cnverbinding, adOpenDynamic, adLockOptimistic, adCmdText

dim intgetal
dim inttotaal

rstuser.movelast

inttotaal = rstuser("getal")

if request.form("getal")="+" then
inttotaal = inttotaal + 1
else
inttotaal = inttotaal - 1
end if

rstuser.Close
set rstuser = Nothing


zou iets beter moeten zijn (denk ik)

I don't believe we have a society, we have a colony of animals


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 23:33

gorgi_19

Kruimeltjes zijn weer op :9

Kan je niet beter een Update statement uitvoeren?

Update tblData Set getal = getal +1

of

Update tblData Set getal = getal - 1

De rest is een beetje zinloos namelijk, met die movelast enzo

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op woensdag 02 november 2005 @ 19:30:
Kan je niet beter een Update statement uitvoeren?

Update tblData Set getal = getal +1

of

Update tblData Set getal = getal - 1

De rest is een beetje zinloos namelijk, met die movelast enzo
Hier had ik aangedacht, maar aangezien ik nog niet echt "veel" van ASP ken wist ik niet hoe ik moest updaten. Maar klopt het wel wat je daar typt? Want heb al vanalles geprobeert, maar hij blijft fout geven bij jouw regeltjes ;(

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

En welke fout is dat? ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Rath
  • Registratie: April 2002
  • Laatst online: 18-02 10:59
Dan krijg je eerder zoiets :)

code:
1
2
SQL="Update tblData Set getal = getal +1"
set rstuser2 = cnverbinding.execute (SQL)

I don't believe we have a society, we have a colony of animals


Verwijderd

Topicstarter
Oke, ik was de de haakjes vergeten :)

Maar spijtig genoeg doet hij nu gewoon niets, maar geeft ook geen fout. Heb even de SQL laten uitprinten, ik krijg dan gewoon als ik op + duw:

code:
1
Update tbldata Set getal = getal +1


En als ik - duw gewoon dan -1, dus dat klopt wel, maar hij schrijf niets in de databank.

Dit is men code:

ASP.NET Visual Basic:
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
<%@language="vbscript"%>
<html >
<table border="0" width="100%" bgcolor="#A52A2A">
<tr>
      <td width="100%">
        <div align="center">
<table border="0" width="75%" bgcolor="#C0C0C0" cellspacing="1" cellpadding="4">
<tr>
              <td width="100%" valign="top">
<center><h1>KASSA systeem</h1></center>
<form name="form1" method="post">
  <b>Geef het aantal bezoekers in :</b><br><br>
    <input type="submit" name="getal" value= "+">
    <input type="submit" name="getal" value= "-"><br><br>
</form>
<p><a href="/bos/index.html"><-- Terug</a></p>
</td></tr></table>
</div></td></tr>

</table>
<%
Set cnverbinding = Server.CreateObject("ADODB.Connection")
strverbindingsstring="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("data.mdb")
cnverbinding.Open strverbindingsstring

set rstuser = cnverbinding.execute("SELECT * FROM tbldata")

dim intgetal

if request.form("getal")="+" then
SQL="Update tbldata Set getal = getal +1"
else
SQL="Update tbldata Set getal = getal -1"
end if
response.write (SQL)
set rstuser2 = cnverbinding.execute (SQL)
%>
</html>

Verwijderd

Topicstarter
Stomme fout van me, het werktte niet aangezien er een 0 in de databank stond (zo'n record die access zelf aanmaakt). Vlug ff er een 1 ingezet, en alles werkt perfect! Wel nog ff een

code:
1
if Request.Form("getal") <> "" then


voorgezet, anders deed hij al meteen -1 als ik nog maar op de pagina kwam. Bedankt allemaal!
Pagina: 1