07. september 2004 - 22:52
Der er
11 kommentarer og 1 løsning
Hvorfor sletter denne alligevel?
Jeg submitter flg. fra en form som er noget der skal flyttes/slettes fra en tabel til an anden: <% On Error Resume Next if request.servervariables("request_method") = "POST" then ' der er submittet.. dim conn, strConn strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(".")+"/../db.mdb" Set Conn = Server.CreateObject("ADODB.Connection") Conn.open strConn omr = request.form("omr") byg = request.form("byg") emne = request.form("emne") ark = request.form("ark") ent = request.form("ent") tilmeldDato = request.form("tilmeldliste-1-Dato") strSQL = "Insert into liste2(omr,byg,emne,ark,ent,tilmeldDato) values('"& Replace(omr,"'","''") & "','"& Replace(byg,"'","''") & "','"& Replace(emne,"'","''") & "','"& Replace(ark,"'","''") & "','"& Replace(ent,"'","''") & "', '"&tilmeldDato&"')" SQLslet = "DELETE * FROM liste1 WHERE ID=" & Request("ID") Conn.Execute(strSQL) Conn.Execute(SQLslet) Else Response.write("") End If If Err.Number <> 0 Then Response.redirect "fejl.asp" Else response.redirect "tak.asp" end if %> Hvis der ikke bliver skrevet noget i tilmeldDato så smidder den intet i databasen, men sletter det alligevel fra den oprindelige tabel!! Nogen idéer? Fomse:-)
Annonceindlæg fra Academic Work Denmark A/S
07. september 2004 - 22:54
#1
Det er nok fordi du ikke at sat "Tillad nullænge" til ja for kolonnen tilmeldDato. HVis du vil se en fejl koden kan du udkommentere linjen On Error Resume Next: 'On Error Resume Next
07. september 2004 - 22:59
#2
Nope!! ingen "Tillad nullængde" Fejlen er flg når jeg udkommenterer On Error Resume Next: Microsoft JET Database Engine error '80040e07' Data type mismatch in criteria expression. /Lister/Liste1/tilmeldliste1-Dato.asp, line 38
07. september 2004 - 23:00
#3
Det er denne linie: Conn.Execute(strSQL)
07. september 2004 - 23:00
#4
Er det en Dato/klokkeslæt kolonne?
07. september 2004 - 23:01
#5
Jep "Short Date"
07. september 2004 - 23:03
#6
Så skal man nemlig bruge Null som en "tom" dato og der skal ikke ' omkring så koden må rettes lidt til sådan her: tilmeldDato = request.form("tilmeldliste-1-Dato") if tilmeldDato <> "" then tilmeldDato = "'" & tilmeldDato & "'" else tilmeldDato = "Null" end if strSQL = "Insert into liste2(omr,byg,emne,ark,ent,tilmeldDato) values('"& Replace(omr,"'","''") & "','"& Replace(byg,"'","''") & "','"& Replace(emne,"'","''") & "','"& Replace(ark,"'","''") & "','"& Replace(ent,"'","''") & "', "&tilmeldDato&")"
07. september 2004 - 23:06
#7
Jo men problemet er at den ikke må submitte eller slette noget men skal vise "fejl.asp" siden. Det der sker er at den viser "fejl.asp" siden men sletter alligevel...
07. september 2004 - 23:08
#8
ok, så kan du tilføje en redirect: tilmeldDato = request.form("tilmeldliste-1-Dato") if tilmeldDato = "" then response.redirect "fejl.asp"
07. september 2004 - 23:12
#9
Du kan også tilføje et javascript som tjekker alle form felterne er udfyldt når man vil submitte formen. <script> function valider(theform) { if (theform.tilmeldliste-1-Dato.value=='') { alert("Du skal udfylde dato feltet!"); return false; } return true; } </script> og så formen: <form method="post" onsubmit="return valider(this);" action="..."> <input type="text" name="tilmeldliste-1-Dato"> .. .. </form> Så bliver formen kun sendt hvis dato er udfyldt
07. september 2004 - 23:30
#10
Takker:-)
07. september 2004 - 23:30
#11
Smid lige et svar....
07. september 2004 - 23:31
#12
Ok ;)
Kurser inden for grundlæggende programmering