Søg og slet
Hej eksperter!Softspot hjalp mig i http://www.eksperten.dk/spm/654084 med at søge efter en post, få den vist mhp. at redigere den.
Nu vil jeg gerne kunne søge efter en post, få den vist mhp. at slette den.
Den behøver kun at vise værdien fra to felter (fra to relaterede tabeller) og metoden til at slette den kunne jo ligne den som softspot foreslog – altså med en knap for hver post.
Jeg får denne fejlmeddelelse:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id_dansk='.
/cowi/cowilex_slet_show.asp, line 226
– hvad gør jeg galt?
Er der nogen der kan hjælpe?
Hwks
<%
set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("cowi.mdb")
Conn.Open DSN
if Request.Form("Delete") <> "" then
dim strSQL
dim fld
dim danDeleted
danDeleted = ","
for each fld in Request.Form
' Kontroller om det er et dansk-ord felt
if lcase(left(fld,5)) = "dansk" then
' udtræk id fra navnet på feltet
danid = right(fld,len(fld)-6)
' Kontroller om ordet er blevet slettet
if instr(1,danDeleted, "," & danid & ",") = 0 then
' hvis ikke tidligere opdateret, så gemmes id på ordet, så det
' ikke bliver opdateret flere gange i dette postback
danDeleted = danDeleted & danid & ","
strSQL = "DELETE tbl_danish SET "
strSQL = strSQL & " Dansk='" & Replace(Request.Form("Dansk_" & danid), "'", "''") &"' "
strSQL = strSQL & " WHERE id_dansk ="& danid
Conn.Execute(strSQL)
else
Response.Write("Desværre - det lykkedes ikke at finde den ønskede post til sletning. Prøv igen. ("& fld &")<br>")
end if
end if
' Kontroller om det er et engelsk-ord felt
if lcase(left(fld,7)) = "engelsk" then
' Slet det engelske ord og de tilhørende informationer
' til det engelske ord (klasse og orden)
engid = right(fld,len(fld)-8)
strSQL = "DELETE tbl_english SET "
strSQL = strSQL & " Engelsk='" & Replace(Request.Form("Engelsk_" & engid), "'", "''") & "'"
strSQL = strSQL & " WHERE id_english ="& engid
Conn.Execute(strSQL)
end if
next
end if
%>
<script type="text/javascript">
function syncWords(obj) {
// Opdater alle de andre kontroller med samme navn når en
// kontrols indhold ændrer sig. Dette er nødvendigt da
// ordet refererer til den samme række i tabellen i databasen.
var wordValue = obj.value;
var wordInputs = document.getElementsByName(obj.name);
if(wordInputs.length > 1) {
for(var i = 0; i < wordInputs.length; i++) {
wordInputs[i].value = wordValue;
}
}
}
</script>
<%
searchText = replace(request.form("text"),"'","''")
if searchText = "" then
searchText = replace(request.querystring("search"),"'","''")
end if
strSQL ="SELECT tbl_danish.id_dansk, tbl_danish.Dansk, tbl_english.id_english, tbl_english.Engelsk FROM tbl_danish INNER JOIN tbl_english ON tbl_danish.id_dansk = tbl_english.fr_dansk WHERE"
strSQL = strSQL & " (tbl_danish.Dansk LIKE '%" & searchText & "%')"
strSQL = "DELETE FROM tbl_danish where id_dansk="&request.form("Delete")
Conn.Execute(strSQL)
%>
</p>
<div align="center">
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
<input type="hidden" name="text" value="<%=request.form("text")%>">
<%
Do While Not rs.EOF
%>
<p>Dansk:<br>
<input type="text" value="<%=rs("Dansk")%>" name="Dansk_<%=rs("id_dansk")%>" onchange="syncWords(this)" size="60">
</p>
<p>Engelsk:<br>
<input type="text" value="<%=rs("Engelsk")%>" name="Engelsk_<%=rs("id_english")%>" size="60">
</p>
<p>
<input type="submit" value=" Delete " name="Delete">
</p>
<%
rs.MoveNext
Loop
%>
</form>
<%
' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
</p>
