ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
847
847
EMPFEHLEN
-
28.06.05 11:17 #1Meitli Tutorials.de Gastzugang
Hallo Zusammen
Ich stehe schon wieder ein Mal an einem Problem
Ich hab eine Form, wo die aktuell eingetragene Unterlage angezeigt wird. Möchte man Sie bearbeiten, stehen einem die anderen Unterlagen auch zur Verfügung.
Wird eine andere Unterlage ausgewählt, muss logischer weise die Datenbank aktualiesiert werden.
Ich habe es so versucht:
Code :1 2 3 4 5 6
if Request("action") = "upd" then Update Kursunterlagen SET UnterlagenID=Request("UnterlagenID") WHERE KursunterlageID=Request("KursunterlagenID") end if
Meine Form sieht so aus:
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
<form name="form1" method="post" action="kspeicherortupd.asp" onSubmit="return chkForm()" ID="Form1"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="hidden" name="action" value="upd" ID="Hidden1"> </font> <table width="27%" border="0" align="center" cellspacing="1" bordercolor="#CCCCCC" ID="Table1"> <tr bgcolor="#B7C2D0"> <td width="36%"><font face="Arial, Helvetica, sans-serif" size="2"><b>Speicherort:</b></font></td> <td width="64%"> <font face="Arial, Helvetica, sans-serif" size="2"> <select name="sUnter" ID="Select3"> <% Set rsU = KPLcon.Execute("SELECT * FROM Unterlagen WHERE UnterlagenID=" & rs("UnterlagenID") & "") %> <option value=<%=(rs("UnterlagenID"))%> selected> <%response.write(rsU("Unterlagen"))%> <%response.write(rsU("Speicherort")) rsU.Close %> </option> <% Set rsUn = KPLcon.Execute("SELECT * FROM Unterlagen") do until rsUn.EOF%> <option value=<%response.write(rsUn("UnterlagenID"))%>> <%response.write(rsUn("Unterlagen"))%> <%response.write(rsUn("Speicherort"))%> </option> <%rsUn.MoveNext loop rsUn.close %> </select> </font></td> </tr> <tr bgcolor="#B7C2D0"> <td width="36%"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="hidden" name="UnterlagenID" value=<%Response.Write(Request("UnterlagenID"))%> ID="Hidden2"> <input type="hidden" name="KursunterlagenID" value=<%Response.Write(Request("KursunterlagenID"))%> ID="Hidden3"> </font></td> <td width="64%"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="submit" name="Submit" value="Übernehmen" ID="Submit1"> </font></td> </tr> </table> </form>
Doch am Formular kann es nicht liegen, das funktioniert! Wird ein Update unter ASP anderst gemacht?
-
Hi
dies ist komplett falsch!
if Request("action") = "upd" then
Update Kursunterlagen SET UnterlagenID=Request("UnterlagenID")
WHERE KursunterlageID=Request("KursunterlagenID")
end if
Zum einen, wenn Du Variablen verwendest, musst Du diese auch als Variablen zum Einfügen bereitstellen. Das ist in ASP nicht so schön einfach wie in php. Dort MUSS IMMER die Zeichenkette geschlossen werden, wenn eine Variable folgt, geht es in der Anweisung weiter, muss diese wieder geöffnet werden also
Text " & Variable & " Text
Weiterhin muss das Script ausgeführt werden EXECUTE. Ein bloßes Hinschreiben der SQL-Anweisung funktioniert nicht.
Ich gehe jetzt mal davon aus, dass sowohl unterlagenid als auch kursunterlagenid vom Type Integer sind. Hier darf man die Variable nicht einquoten.
Dann nochmal unbedingt auf die Rechtschreibung achten. Einmal schreibst Du KursunterlageID und einmal KursunterlagenID. Hier können sehr schnell ganz dumme Fehler auftreten.
Code :1 2 3 4 5 6
if Request("action") = "upd" then dim SQL SQL = "Update Kursunterlagen SET UnterlagenID=" & Request.Form("UnterlagenID") SQL = SQL & " WHERE KursunterlageID=" & Request.Form("KursunterlagenID") Verbindung.execute(SQL) end if
Solltest Du jetzt noch weitere Felder updaten wollen, z.B. mit Werten aus dem Select-Menü, dann musst Du die Update-Anweisung entspr. dem Feld erweitern.Geändert von Luzie (28.06.05 um 20:50 Uhr)
liebe Grüße, die Luzie
-
29.06.05 11:03 #3Meitli Tutorials.de Gastzugang
Danke erst einmal für deine Antwort, Luzie.
Diese Seite (kspeicherortupd.asp) funktioniert ohne Probleme, betätigt man den Übernehmen Button so wird auch auf die richtige Seite weitergeleitet, doch genau da beginnen die Probleme
, eine Fehlermeldung erscheint (siehe Unten) und die Daten werden nicht updatet.
Ich habe es schon mit einem INSERT Befehl versucht, doch auch dieser wird nicht ausgeführt.
Die Fehlermeldung:
Microsoft OLE DB Provider for ODBC Drivers Fehler "80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in der INSERT INTO-Anweisung.
/kplserver/kspeicherort.asp, line 199
Quelltext des kspeicherort.asp (Zeile 199=Rot)
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
<table width="100%" align="center"border="0" ID="Table2"> <tr align="left" valign="top"> <td height="20" colspan="5"><hr></td> <td ></td> </tr> <tr align="left" valign="top"> <td width="20%"> </td> <td colspan="4" width="80%" height="4"><font face="Arial, Helvetica, sans-serif" size="1" color="#000000"> </font></td> </tr> <tr> <td> </td> <td bgcolor="#000099" colspan="4"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#003366"> </font><font face="Verdana, Arial, Helvetica, sans-serif" size="3" color="#003366"> </font> <font face="Verdana, Arial, Helvetica, sans-serif" size="3" color="#FFFFFF"> Unterlagen von Kurs:</font> <font face="Arial, Helvetica, sans-serif" size="1"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"> <%Response.Write(rs("Bezeichnung"))%> / </font><font face="Arial, Helvetica, sans-serif" size="1"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"> </font><font face="Arial, Helvetica, sans-serif" size="1"><font face="Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"> <%Response.Write(rs("KursID"))%> </font></font></font></font><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"> </font> </font> </td> </tr> <tr align="left" valign="middle"> <td width="20%"> <style type="text/css"> #layerButton { position:absolute; top: 155; left: 5; visibility: visible; } </style> <div id="layerButton"> <table border="0" cellspacing="0" cellpadding="0" width="180" ID="Table3"> <tr> <td width="180" style="background-image:url(background.gif)"><img style="border-color:#F8F8FF"; border-width:1px; border-style:solid; padding:4px" src="auge.gif"></td> </tr> <tr> <td align="left" valign="MIDDLE" style="background-image:url(background.gif)"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <a href="admin.asp"><% If Session("UserGr") = 1 then %> Adminibereich</a></font></b> <% 'Nur wenn Admin end if %> <td></td> </tr> <tr> <td align="left" valign="MIDDLE" style="background-image:url(background.gif)"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <a href="kuebersicht.asp">Kurse</a></font></b> </td> </tr> <tr> <td align="left" valign="MIDDLE" style="background-image:url(background.gif)"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <% If Session("UserGr") <> 3 then %> <a href="keingabe.asp">- Neuer Kurs erfassen</a></font></b> <% 'Nicht wenn Gast end if %> </td> </tr> <tr> <td align="left" valign="MIDDLE" style="background-image:url(background.gif)"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <a href="admin.asp"> </a></font></b><a href="lehrlinge.asp"> <% if Session("UserGr") <> 3 then %> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> Noten/Nachweis</font></b></a><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1"> <% 'Nicht wenn Gast end if %> </font></b> </tr> <tr> <td align="left" valign="MIDDLE" style="background-image: url(file:///U|/Desktop/background.gif)"> </td> </tr> <tr><td align="left" valign="MIDDLE" style="background-image:url(background.gif)"> <b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="Klassenliste.asp">Formulare</a></font></b> </td> </tr> </table> </div> </td> <td rowspan="7" height="32" valign="top" colspan="4" width="850"> <div align="left"> <br> <div align="left"> <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="kdetail.asp?KursID=<%Response.Write(rs("KursID"))%>"> <font color="#0000FF">zurück zu den Kursdetails</font></a></font></p> <% if Request("action") = "del" then Set rsdel = KPLcon.Execute("DELETE FROM Kursunterlagen WHERE KursunterlagenID=" & Request("KursunterlagenID") & "") end if 'Wenn Formular neue Unterlagen hinzufügen abgesendet if Request.Form.Count>0 then [COLOR=Red]Set rs = KPLcon.Execute("INSERT INTO Kursunterlagen (KursID, UnterlagenID) VALUES (" & Request.Form("KursID") & ", " & Request.Form("sUnter") & ")")[/COLOR] end if %> <table width="100%" border="0" ID="Table4"> <tr valign="top"> <td width="76%"> <table width="98%" border="0" ID="Table5"> <tr bgcolor="#B7C2D0"> <th width="11%"> <div align="left"><font face="Arial, Helvetica, sans-serif" size="2">Unterlagen</font></div> </th> <th width="12%"> <div align="left"><font face="Arial, Helvetica, sans-serif" size="2">Speicherort</font></div> </th> <th width="10%"><font face="Arial, Helvetica, sans-serif" size="2">Löschen</font></th> <th width="12%"><font face="Arial, Helvetica, sans-serif" size="2">Bearbeiten</font></th> </tr> <% Set rs = KPLcon.Execute("SELECT * FROM Unterlagen, Kursunterlagen WHERE KursID = " & Request("KursID") & " AND Unterlagen.UnterlagenID = Kursunterlagen.UnterlagenID ORDER BY Unterlagen") do until rs.EOF%> <tr> <td width="11%"> <div align="left"> <font face="Arial, Helvetica, sans-serif" size="2"> <%Response.Write(rs("Unterlagen"))%> </font></div> </td> <td width="12%"> <div align="left"> <font face="Arial, Helvetica, sans-serif" size="2"> <a href=http://<%Response.Write(rs("Speicherort"))%> target=_blank><%Response.Write(rs("Speicherort"))%></a> </font></div> </td> <td width="10%"> <div align="center"><font face="Arial, Helvetica, sans-serif" size="2"><a href="kspeicherort.asp?action=del&KursunterlagenID=<%response.write(rs("KursunterlagenID"))%>&KursID=<%response.write(Request("KursID"))%>" onClick="return sure()"><font color="#FF00FF">Löschen</font></a></font></div> </td> <td width="12%"> <div align="center"><font face="Arial, Helvetica, sans-serif" size="2"><a href="kspeicherortupd.asp?KursunterlagenID=<%=(rs("KursunterlagenID"))%>&KursID=<%=(Request("KursID"))%>"><font color="#0000FF">Bearbeiten</font></a></font></div> </td> <%rs.MoveNext%> </tr> <%loop 'rs.close %> </table> </td> </tr> </table> </div> <form name="form1" method="post" action=""> <table width="100%" border="0" cellspacing="1" bordercolor="#CCCCCC" ID="Table6"> <tr bgcolor="#B7C2D0"> <td width="25%"><font face="Arial, Helvetica, sans-serif" size="2"><b>Unterlagen: </b></font></td> <td width="75%"> <font face="Arial, Helvetica, sans-serif" size="2"> <select name="sUnter" ID="Select4"> <option value="no" selected> <% 'Unterlagen in Auswahlmenu einlesen %> </option> <% Set rs = KPLcon.Execute("SELECT * FROM Unterlagen") do until rs.EOF%> <option value="<%response.write(rs("UnterlagenID"))%>"> <%response.write(rs("Unterlagen"))%> <%response.write(rs("Speicherort"))%> </option> <%rs.MoveNext loop rs.close %> </select> </font></td> </tr> <tr bgcolor="#B7C2D0"> <td width="25%"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="hidden" name="KursID" value=<%Response.Write(Request("KursID"))%> ID="Hidden1"> </font></td> <td width="75%"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="submit" name="Submit" value="Übernehmen" ID="Submit1"> </font></td> </tr> </table> </form> <p align="center"> </p> </div> <p> </p> </td> </tr> </table>
Quelltext (Auschnitt zum Updaten der Daten) des kspeicherortupd.asp
Code :1 2 3 4 5
if Request("action") = "upd" then Set rsupd = KPLcon.Execute("Update Kursunterlagen SET UnterlagenID=" & Request.Form("UnterlagenID") & " WHERE KursunterlagenID=" & Request.Form("KursunterlagenID") & "") end if
Im Anhang habe ich noch zwei Print Screens gemacht, von diesen zwei Files!
Fände es toll wenn jemand kurz Zeit hätte mir meinen grossen
Eintrag durchzusehen und mir einen Lösungsansatz zu geben
-
Hallo
1. Du hast in form action keine Ziel-URL angegeben. So, folglich wird das Formular an die gleiche Seite geschickt.
Dort fragst Du einem nach einem Request("del") zum Löschen und einmal nach dem Form.Count zum Einfügen eines Datensatzes.
Wird das Formular jetzt an die gleiche Seite geschickt, dann ist der Form.Count >0 und das Script versucht ein Insert durchzuführen. Ist das Feldformat einer der beiden Felder nun vom Format text, dass muss ich wieder daran erinnern, dass die Variable gequotet werden muss.
insert into tabelle (feld1,feld2) Values (1,'" & Request.Form("feld2") & "')
Also wenn Du den Form.Count abfragst, dann reagiert das auf alle Formulare, die abgeschickt werden.
Du solltest es Dir einfacher machen um echt mal Grund darein zu bekommen.
Folgend Struktur würde ich dir raten anzulegen.
1. Seite zu Auswahl der Datensätze (Link zum ändern, löschen und einen Link, um einen neuen Datensatz einzufügen.)
1 Formular fürs insert und
1 Formular fürs update (Wenn Du eine Abfrage in einem Script nicht schaffst)
Dann eine 4 Seite erstellen, wo Du die Scripte ausführen lässt
bsp.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
<% dim aktion, sql aktion = Request.Form("aktion") & Request.QueryString("aktion") if aktion <> "" then ' --- Verbindungsaufbau zur Datenbank select case aktion case "insert" SQL = "insert into tabelle (feld1,feld2) Values (.....)" case "update" SQL = "update tabelle set feld1 = ..... where id = ....." case "delete" sql = "delete from Tabelle where id=...." end select Verbindung.execute(sql) verbindung.close set verbindung=nothing Response.redirect "irgendeineSeite.asp" else Response.redirect "Fehlerseite.asp" end if %>
Du musst da jetzt eine Linie oder einen Grund reinbekommen. Die Scripte müssen übersichtlich sein nicht mitten im html-Code stecken.Geändert von Luzie (29.06.05 um 11:52 Uhr)
liebe Grüße, die Luzie
-
29.06.05 12:24 #5Meitli Tutorials.de Gastzugang
Du hast etwas falsch verstanden. Der erste Code funktioniert problemlos, und dort muss auch keine action funktionieren. Die Weiterleitung ist an einem anderen Ort definiert.
Wenn ich im ersten File (speicherort.asp) auf bearbeiten klicke, wird auf das zweite File (speicherortupd.asp )weitergeleitet.
Ändere ich dort die Unterlagen und klicke auf Übernehmen werde ich wieder auf speicherort.asp weitergeleitet (also zurück). Und an diesem Punkt kommt die Fehlermeldung.
Für mich erscheint das nicht logisch, warum erscheint beim ersten Mal keine Fehlermeldung und wenn ich wieder zurück komme erscheint sie?
-
Hi
Zitat von Meitli
das kann durchaus sein, dass ich da was falsch verstanden haben. Ich bin mir auch total sicher, das Du weisst, worum es geht. Ich kann allerdings nicht hellsehen.
Du solltest mal in form action schauen, wohin die URLs hingehen, genauso wie der Link "bearbeiten". Ich kann nur Schlüsse ziehen, wenn ich den Scriptcode sehe und wenn ich den nicht komplett habe, kann ich mir einen Reim aus dem machen, was Du hier postest.liebe Grüße, die Luzie
-
29.06.05 13:09 #7Meitli Tutorials.de Gastzugang
Ich hab dir im Anhang, die vollständigen Scripts angehängt. Wenn du Zeit hast, kannst du sie dir ja mal durch sehen!
Vielleicht ist es danach einfach meine Frage zu beantworten!
Geändert von Meitli (01.07.05 um 10:55 Uhr)
-
Hi
schau Dir diesen Part Deines Scirpts mal an.
Entnommen aus der Seite kspeicherortupd.asp
Die entsprechenden Stellen habe ich mal rot markiert.
Schau, wohin das Formular geschickt wird und schau, wo die Abfrage zum Update gespeichert ist.
<%
if Request("action") = "upd" then
'if Request("sUnter") <> 0 then
'Set rskt = KPLcon.Execute("Update Kursunterlagen SET UnterlagenID=" & Request.Form("UnterlagenID") & " WHERE KursunterlagenID=" & Request.Form("KursunterlagenID") & "")
'else
'Set rsL2 = KPLcon.Execute("DELETE FROM Kursunterlagen WHERE KursunterlagenID = " & Request("KursunterlagenID") & "")
'Set rskt = KPLcon.Execute("INSERT INTO Kursunterlagen (KursunterlagenID, KursID, UnterlagenID) VALUES (" & Request("KursunterlagenID") & ", '" & Request("KursID") & "', '" & Request("UnterlagenID") & "')")
'end if
Set rsupd = KPLcon.Execute("Update Kursunterlagen SET UnterlagenID=" & Request.Form("UnterlagenID") & " WHERE KursunterlagenID=" & Request.Form("KursunterlagenID") & "")
end if
Set rs = KPLcon.Execute("SELECT * FROM Kursunterlagen WHERE KursunterlagenID = " & Request("KursunterlagenID") & "")
%>
</font> </p>
<form name="form1" method="post" action="kspeicherort.asp?KursID=<%response.write(rsK("KursID"))%>" onSubmit="return chkForm()" ID="Form1">
<font face="Arial, Helvetica, sans-serif" size="2">
<input type="hidden" name="action" value="upd" ID="Hidden1">
</font>
Bitte nicht übel nehmen, aber den Scriptcode kannst Du echt beerdigen. Du hast mit Sicherheit weniger Probleme, wenn Du es korrekt neu schreibst.
liebe Grüße, die Luzie
Ähnliche Themen
-
PHP Datenbank aktualisieren
Von fawad im Forum PHPAntworten: 7Letzter Beitrag: 04.05.10, 14:15 -
Datenbank aktualisieren
Von mafu im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 19.06.07, 12:27 -
Mehrere Daten in Datenbank aktualisieren
Von schoko im Forum PHPAntworten: 2Letzter Beitrag: 26.04.07, 21:10 -
Daten aktualisieren in Excel
Von Eispirat im Forum Office-AnwendungenAntworten: 4Letzter Beitrag: 02.10.06, 08:52 -
Daten aktualisieren in DB
Von MsvP@habdichliebhasi im Forum PHPAntworten: 8Letzter Beitrag: 29.06.06, 14:49





Zitieren
Login





