Avatar billede louie Nybegynder
30. oktober 2001 - 00:07 Der er 10 kommentarer og
1 løsning

Mit sql-statement eksekveres flere gange

Følgende kode indsætter helt normalt i en accessbase. Mit problem er at statementet på mærkværdigvis bliver eksekveret flere gange. Som regel 2, men jeg har set 3 gange også... Det betyder at jeg får en fejl der siger at jeg forsøger at indsætte en duplicate når statementet eksekveres anden gang. Statementet indsætter i basen de 2-3 gange når jeg ikke definerer nogen primær nøgle.

Er der nogle grundregler for hvordan properties på et felt skal sættes når det er henholdsvis required og ikke required?

-----------------------------------
<% @Language=\"VBScript\" %>
<% option explicit %>
<!--#include file=\"pass.inc\"-->
<!--#include file=\"function.inc\"-->

<%
Dim connect
Dim DSN
Dim varId
Dim varNavn
Dim varAdr1
Dim varAdr2
Dim varPostnr
Dim varTlf
Dim varFax
Dim varEmail
Dim SQLSTMNT

Set connect = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= C:\\Inetpub\\wwwroot\\assyst\\assyst.mdb\"
connect.Open DSN

varId = request.form(\"id\")
varNavn = request.form(\"navn\")
varAdr1 = request.form(\"adr1\")
varAdr2 = request.form(\"adr2\")
varPostnr = request.form(\"postnr\")
varTlf = request.form(\"tlf\")
varFax = request.form(\"fax\")
varEmail = request.form(\"email\")


    SQLSTMNT = \"INSERT INTO BRUGER (ID, NAVN, ADR1, ADR2, POSTNR, TLF, FAX, EMAIL) VALUES (\"& _
    varId&\", \'\"&_
    varNavn&\"\', \'\"&_
    varAdr1&\"\', \'\"&_
    varAdr2&\"\', \'\"&_
    varPostnr&\"\', \'\"&_
    varTlf&\"\', \'\"&_
    varFax&\"\', \'\"&_
    varEmail&\"\');\"

    \'response.write(SQLSTMNT)
    connect.Execute(SQLSTMNT)
   
%>

<html>
<head>

    <title>Indsæt bruger</title>
</head>
<body>
<form name=\"bruger\" method=\"post\" action=\"VisBruger.asp\">
<script language=\"VBScript\">
bruger.submit()
</script>
</form>
</body>
</html>

   
Avatar billede keysersoze Ekspert
30. oktober 2001 - 00:15 #1
umiddelbart er der ikke nogen grund til at den skulle køre scriptet to gange (kan det tænkes at der trykkes på reload eller tilbage og det køres igen)

en anden ting er, at det nok ville være smart at lukke forbindelsen til db\'en når du er færdig med at bruge den...
Avatar billede eagleeye Praktikant
30. oktober 2001 - 00:23 #2
er det i en eller to filer?

Hvis det er i en fil skal du havde et fjek på om du kommer ind på siden for at gemme.

evt med:

if Request.ServerVariables(\"REQUEST_METHOD\") = \"POST\" then
Dim connect
Dim DSN
Dim varId
Dim varNavn
Dim varAdr1
Dim varAdr2
Dim varPostnr
Dim varTlf
Dim varFax
Dim varEmail
Dim SQLSTMNT

Set connect = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= C:\\Inetpub\\wwwroot\\assyst\\assyst.mdb\"
connect.Open DSN

varId = request.form(\"id\")
varNavn = request.form(\"navn\")
varAdr1 = request.form(\"adr1\")
varAdr2 = request.form(\"adr2\")
varPostnr = request.form(\"postnr\")
varTlf = request.form(\"tlf\")
varFax = request.form(\"fax\")
varEmail = request.form(\"email\")


    SQLSTMNT = \"INSERT INTO BRUGER (ID, NAVN, ADR1, ADR2, POSTNR, TLF, FAX, EMAIL) VALUES (\"& _
    varId&\", \'\"&_
    varNavn&\"\', \'\"&_
    varAdr1&\"\', \'\"&_
    varAdr2&\"\', \'\"&_
    varPostnr&\"\', \'\"&_
    varTlf&\"\', \'\"&_
    varFax&\"\', \'\"&_
    varEmail&\"\');\"

    \'response.write(SQLSTMNT)
    connect.Execute(SQLSTMNT)
end if  \'hvis formen altid skal vises ellers benyt else...
Avatar billede louie Nybegynder
30. oktober 2001 - 08:58 #3
Jeg prøver lige først at lukke min connection på hver side.
Avatar billede louie Nybegynder
30. oktober 2001 - 09:03 #4
Til eagleeeye: Det er ikke en side der vises, der er en specifik indsætside.
Avatar billede eagleeye Praktikant
30. oktober 2001 - 09:07 #5
du vi en masse kode:

<%
...kode..
%>

<html>
<head>

    <title>Indsæt bruger</title>
</head>
<body>
<form name=\"bruger\" method=\"post\" action=\"VisBruger.asp\">
<script language=\"VBScript\">
bruger.submit()
</script>
</form>
</body>
</html>

Er det en asp fil eller to filer?
Avatar billede eagleeye Praktikant
30. oktober 2001 - 09:10 #6
hvis det er en side skriver du til databasen hver gang siden loades. Koden som skriver til databasen ligger i toppen af din fil (lige meget hvor det ligger) og kan ikke se forskel på om siden bare loades eller om der skal gemmes i databasen.
Avatar billede eagleeye Praktikant
30. oktober 2001 - 09:12 #7
hvis det er to filer må der være noget som gør filen med indsæt koden bliver kaldt mere end en gang.
Avatar billede louie Nybegynder
30. oktober 2001 - 09:21 #8
Jeg kan tilføje, at den indsætter rigtigt når jeg kører lokalt, men når jeg kører sitet fra min IP-adresse er det den laver problemet.
Avatar billede louie Nybegynder
30. oktober 2001 - 22:46 #9
hvordan får jeg givet min point til keysersoze? Det hjalp at lukke forbindelsen. Jeg troede bare ikke det var nødvendigt når man kørte med DSN-less connection.
Avatar billede keysersoze Ekspert
01. november 2001 - 18:17 #10
jeg svarer lige her så :)
Avatar billede louie Nybegynder
01. november 2001 - 18:19 #11
Tak for hjælpen. Simpelt, men det hjalp. Nogen gange kan man ikke se skoven for bare træer.
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