Avatar billede fomse Nybegynder
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:-)
Avatar billede eagleeye Praktikant
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
Avatar billede fomse Nybegynder
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
Avatar billede fomse Nybegynder
07. september 2004 - 23:00 #3
Det er denne linie: Conn.Execute(strSQL)
Avatar billede eagleeye Praktikant
07. september 2004 - 23:00 #4
Er det en Dato/klokkeslæt kolonne?
Avatar billede fomse Nybegynder
07. september 2004 - 23:01 #5
Jep "Short Date"
Avatar billede eagleeye Praktikant
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&")"
Avatar billede fomse Nybegynder
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...
Avatar billede eagleeye Praktikant
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"
Avatar billede eagleeye Praktikant
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
Avatar billede fomse Nybegynder
07. september 2004 - 23:30 #10
Takker:-)
Avatar billede fomse Nybegynder
07. september 2004 - 23:30 #11
Smid lige et svar....
Avatar billede eagleeye Praktikant
07. september 2004 - 23:31 #12
Ok ;)
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