[ASP] Rare resultaten INSERT statement

Pagina: 1
Acties:

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03-2025

Crayne

Have face, will travel

Topicstarter
Voor ons intranet ben ik bezig met een simpele frontend om elektrische auto's te reserveren. De laatste schakel in de ketting is een ASP pagina die de reservering vastlegt in de database. Deze pagina wordt aangeroepen vanuit een mailtje (Groupwise) met daarin een link met name/value pairs al in de URL meegenomen.

Het idiote is dat ik steeds een error krijg (Error Type: ADODB.Recordset (0x800A0E78) Operation is not allowed when the object is closed) terwijl alle connecties op de juiste plek (volgens mij) worden afgesloten. Verder voert hij de INSERT statement dus *wel* uit, maar 6 keer i.p.v. 1 keer. Dus, om samen te vatten:

Hij klaagt dat hij een bewerking niet kan doen omdat het object closed is, maar hij doet de bewerking wel en zelfs 6 keer. Ik heb echt geen idee waar het zou kunnen zitten, misschien dat jullie een stomme fout mijnerzijds kunnen zien.

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
<%

persoon = request.Querystring("persoon")
datum = request.Querystring("datum")
    dat = cdate(datum)
begintijd = request.Querystring("begintijd")
eindtijd = request.Querystring("eindtijd")
aantal_kms = request.Querystring("aantal_kms")
auto = request.Querystring("auto")

SQL = "SELECT MAX([Reservering_Auto-id]) FROM Reservering_Auto"

set conn = server.createobject("ADODB.Connection")
conn.open "TWMIntranet"
conn.execute "use Intranet"
set res = conn.execute(SQL)

newmax = res(0) + 1

res.close
conn.close

set res = nothing
set conn = nothing

%>

<!-- AFHANDELEN RESERVERING -->

<%

    SQL2 = "INSERT INTO Reservering_Auto ([Reservering_Auto-id], Datum, 
[Persoon-id], Tijd_Begin, Tijd_Eind, Aantal_kms, Auto) VALUES ('" & newmax 
& "' , '"  & dat & "' , '" & persoon & "' , '" & begintijd & "' , '" & eindtijd & "', '" & 
aantal_kms & "', '" & auto & "')"

    set conn2 = server.createobject("ADODB.Connection")
    conn2.open "TWMIntranet"
    conn2.execute "use Intranet"
    set res2 = conn2.execute(SQL2)

    res2.close
    conn2.close

    response.write "De reservering is bevestigd en opgenomen in de database."

%>


Hopelijk zien jullie een fout die ik over het hoofd zie.

Mijn Library Thing catalogus


Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%

    SQL2 = "INSERT INTO Reservering_Auto ([Reservering_Auto-id], Datum, 
[Persoon-id], Tijd_Begin, Tijd_Eind, Aantal_kms, Auto) VALUES ('" & newmax 
& "' , '"  & dat & "' , '" & persoon & "' , '" & begintijd & "' , '" & eindtijd & "', '" & 
aantal_kms & "', '" & auto & "')"

    set conn2 = server.createobject("ADODB.Connection")
    conn2.open "TWMIntranet"
    conn2.execute "use Intranet"
    set res2 = conn2.execute(SQL2)

    res2.close ' <-- deze regel weghalen
    conn2.close

    response.write "De reservering is bevestigd en opgenomen in de database."

%>

H.T.H.

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03-2025

Crayne

Have face, will travel

Topicstarter
*zucht*

Les 1: het lijkt allemaal zo moeilijk.
Les 2: Ik ben dom.

De recordset mag blijkbaar niet worden afgesloten, de connection wel.

Opgelost. Slotje dus maar? *schaapachtige lach*

Mijn Library Thing catalogus


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 01-09 13:54

Crazy D

I think we should take a look.

Even offtopic:
code:
1
2
3
%>
<!-- AFHANDELEN RESERVERING -->
<%

Hiermee stuur je dus als output html commentaar met de tekst AFHANDELEN RESERVERING
Das misschien niet helemaal handig ;) Commentaar doen je met een ' en daarachter het commentaar.

Exact expert nodig?


Verwijderd

Crayne schreef op 04 september 2002 @ 13:19:
De recordset mag blijkbaar niet worden afgesloten, de connection wel.
Ehmm. Da's niet helemaal het probleem. Natuurlijk mag je een recordset wel sluiten. Sterker nog, een recordset sluiten voordat je de connectie sluit is netjes.

Het probleem komt omdat een con.Execute geen open recordset teruggeeft als je een sql insert uitvoert. En als je geen open recordset hebt kun je die ook niet sluiten.

Bij de eerste con.Execute, waarbij je een SELECT doet, krijg je wel een open recordset terug. Deze moet je dus WEL afsluiten.