Cyberlord |
|
---|
Group: Administrator Level: heavy Spammer
Posts: 3610 Joined: 3/11/2004 IP-Address: saved
| Hallo,
die SQL-Anweisungen sind nicht ganz richtig.
fürs Löschen: sSQL = "DELETE * FROM t_Musikvideos WHERE ID = "& id Set oRS = oConn.Execute(sSQL)
fürs Einfügen: Set oRs = oConn.Execute ("INSERT INTO t_musikvideos (Titel) VALUES ('Test')")
lg
|
12/18/2006 11:32:13 PM | |
Guest |
|
---|
Group: blocked
Posts: 1877 IP-Address: saved
| Super danke das mit dem löschen klappt jetzt aber mit dem verändern kenn ich micht aus:
Hier der Fehler
Fehlertyp: Microsoft JET Database Engine (0x80004005) Die von Ihnen vorgenommenen Änderungen an der Tabelle konnten nicht vorgenommen werden, da der Index, Primärschlüssel oder die Beziehung mehrfach vorkommende Werte enthalten würde. Ändern Sie die Daten in den Feldern, die gleiche Daten enthalten, entfernen Sie den Index, oder definieren Sie den Index neu, damit doppelte Einträge möglich sind, und versuchen Sie es erneut. /daba12_1.asp, line 78
hier dazu der Codeauschnitt
If request.querystring("action") = "edit" Then id = request.querystring("id") if IsNumeric(id) Then id = int(id) Else id = 0 Set oRs = oConn.Execute (" INSERT INTO t_musikvideos (Titel) VALUES ('Test') ") response.write SQL Set oRs = oConn.Execute (SQL) End If
Danke für deine Hilfe
coffee
|
12/19/2006 11:27:23 AM | |
Cyberlord |
|
---|
Group: Administrator Level: heavy Spammer
Posts: 3610 Joined: 3/11/2004 IP-Address: saved
| Hallo,
die Spalte Titel ist "unique" bzw. ein Primärschlüssel. Das heißt, daß der jeweilige Wert nur 1x vorkommen darf. Das kannst du in Access ändern. Einfach den Primärschlüssel löschen.
lg
|
12/19/2006 5:21:01 PM | |
coffee |
|
---|
Group: User Level: Gelegenheitsposter
Posts: 14 Joined: 12/9/2006 IP-Address: saved
| nein leider gleicher fehler
ich weiß leider nicht wie ich das anstellen kann aber kann man nicht jeden datensatz mit einem formular verknüpfen wo man dann verschiedene sachen verändern kann.
Kann ich auch ein formular mit html erstellen?
Danke für deinen tollen Support
|
12/20/2006 9:53:06 AM | |
Cyberlord |
|
---|
Group: Administrator Level: heavy Spammer
Posts: 3610 Joined: 3/11/2004 IP-Address: saved
| Kenne deine Datenbank leider nicht , deshalb kann ich dir nicht genauer sagen woran es liegt.
Formulare erstellst du immer mit HTML. Formularfelder liest du in ASP mit request.form("name") aus.
lg
|
12/21/2006 8:01:40 PM | |
coffee |
|
---|
Group: User Level: Gelegenheitsposter
Posts: 14 Joined: 12/9/2006 IP-Address: saved
| Okay Danke
Wie geht das genau mit request.form?
Die DB genauer beschrieben: Name: Musikvideos Tabelle: t_Musikvideos Felder: ID, Titel
Hier mein HTML:
<HTML> <HEAD> <TITLE>Eingabeformular</TITLE> </HEAD>
<BODY> <H1><CENTER>Veränderung</CENTER></H1>
<FORM Action="/daba12_1.asp" Method="post"> <HR> Veränderung der Daten: <TABLE> <TR> <TD>ID:</TD> <TD><INPUT TYPE="text" name="ID"></TD> </TR> <TR> <TD>Titel:</TD> <TD><INPUT TYPE="text" name="Title"></TD> </TR> </TABLE> <HR> <INPUT TYPE="submit" name="change" value="Datensatz change"> <INPUT TYPE="reset" value="Zurücksetzen"> </FORM> </BODY> </HTML>
Wie kann ich jetzt dieses HTML mit der ASP zusammenhängen, damit ich im HTML die Daten verändern kann
Hier nochmals das ASP:
<% Option explicit %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD>
<BODY> <% Dim sConnectionString Dim oConn Dim sSQL Dim sreplace Dim oRS Dim sColor Dim id
set oConn = Server.CreateObject ("ADODB.Connection") sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath ("Musikvideos.mdb") oConn.Open sConnectionString
sSQL="SELECT ID,Titel FROM t_Musikvideos" Set oRS = Server.CreateObject("ADODB.Recordset") oRS.Open sSQL, oConn, 3, 3 %> <table border="1" cellpadding="1" cellspacing="1" style="font-family:arial;font-size:10pt;"> <tr bgcolor="black" style="color:white;"> <td>ID</td> <td>Titel_ALT</td> <td>Titel_NEU</td> </tr> <%
sColor ="white" Do While NOT oRS.EOF If sColor = "silver" Then sColor = "white" Else sColor = "silver" End If
sreplace = oRS("Titel") sreplace = Replace(sreplace, "_ok", "", 1, -1, vbTextCompare) sreplace = UCase(Left(sreplace, 1)) & Mid(sreplace, 2, Len(sreplace)-1) sreplace = Replace(sreplace, "_", " ") %> <tr bgcolor="<% =sColor %>"> <td><% =oRS("ID") %></td> <td><% =oRS("Titel") %></td> <td><% =sreplace %></td> </tr>
<td><a href="?action=delete&id=<%=oRS("ID") %>">löschen</a></td> <td><a href="?action=edit&id=<%=oRS("ID") %>">verändern</a></td>
<% oRS.MoveNext
Loop
If request.querystring("action") = "delete" Then id = request.querystring("id") if IsNumeric(id) Then id = int(id) Else id = 0 sSQL = "DELETE * FROM t_Musikvideos WHERE ID = "& id Set oRS = oConn.Execute(sSQL) End If
If request.querystring("action") = "edit" Then id = request.querystring("id") if IsNumeric(id) Then id = int(id) Else id = 0 Set oRs = oConn.Execute (" INSERT INTO t_musikvideos (Titel) VALUES ('Test') ") response.write SQL Set oRs = oConn.Execute (SQL) End If
%>
oRS.Close set oRS = Nothing oConn.Close set oConn = Nothing %> </table> <br> <br> </BODY> </HTML>
Danke für deine Hilfe
lolipop 999
|
12/22/2006 2:23:17 PM | |
Cyberlord |
|
---|
Group: Administrator Level: heavy Spammer
Posts: 3610 Joined: 3/11/2004 IP-Address: saved
| Du mußt die Daten zuerst auslesen und dann in das Formular darstellen.
Datensatz auslesen: "SELECT * FROM t_Musikvideos WHERE id = 123"
Formular: <form action="/dabal2_1.asp" method="post"> <input type="text" name="id" value="<%= oRs("ID") %>"> <input type="text" name="titel" value="<%= oRs("Titel") %>"> <input type="hidden" name="action" value="edit"> </form>
Am Anfang die Abfrage für die Übermittelten Daten: id = request.form("id") titel = request.form("titel")
SQL: "UPDATE t_Musikvideos SET Titel = '"& titel &"' WHERE ID = "& id
Schau dir mal ein paar andere Scripte an wie das genauer funktioniert.
lg
|
12/22/2006 7:11:18 PM | |
coffee |
|
---|
Group: User Level: Gelegenheitsposter
Posts: 14 Joined: 12/9/2006 IP-Address: saved
| hier mein ansatz:
<HTML> <HEAD> <TITLE>Eingabeformular</TITLE> </HEAD>
<BODY> <H1><CENTER>Veränderung</CENTER></H1> <% Dim sConnectionString Dim oConn Dim sSQL Dim sreplace Dim oRS Dim sColor Dim id
set oConn = Server.CreateObject ("ADODB.Connection") sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath ("Musikvideos.mdb") oConn.Open sConnectionString
sSQL="SELECT ID,Titel FROM t_Musikvideos WHERE ID = " & Request.Form("ID")" Set oRS = Server.CreateObject("ADODB.Recordset") oRS.Open sSQL, oConn, 3, 3 %>
<% if rs.Supports (adUpdate) Then rs.Fields("Titel") = Request.Form("Titel") rs.Update Else Response.Write("<h2>Es ist ein Fehler aufgetreten !</h2>") End if %>
<FORM Action="/daba12_1.asp" Method="post"> <HR> Veränderung der Daten: <TABLE> <TR> <TD>ID:</TD> <TD><INPUT TYPE="text" name="ID"></TD> </TR> <TR> <TD>Titel:</TD> <TD><INPUT TYPE="text" name="Title"></TD> </TR> </TABLE> <HR> <INPUT TYPE="submit" name="change" value="Datensatz change"> <INPUT TYPE="reset" value="Zurücksetzen"> </FORM> </BODY> </HTML>
hier mein Fragenstellung genauer:
Ich möchte in liste.asp einen Link in jeder Zeile der dort auszugebenden Tabelle und dort wiederum auf die ID eines Datensatzes einbinden, der dann auf edit.asp verweist. Als Parameter möchte ich die ID des Datensatzes übergeben. In edit.asp habe ich dann ein Formular, welches die Werte des Datensatzes anzeigt. Diese sollen änderbar sein. Nach abschicken der neuen Werte im Formular sollen die neuen Werte in die Datenbank eingetragen werden und mit einer meldung bestätigt werden.
Vielleicht ist es jetzt ein bisschen klarer
Danke für deine Hilfe
coffee
|
12/23/2006 9:50:38 AM | |
coffee |
|
---|
Group: User Level: Gelegenheitsposter
Posts: 14 Joined: 12/9/2006 IP-Address: saved
| also ich habe jetzt ein bisschen nachgelesen und ich weiß jetzt wie ich jede ID mit dem Formular zum verändern, verlinken kann.
Hier der Code:
<% Option explicit %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD>
<BODY> <% Dim sConnectionString Dim oConn Dim sSQL Dim sreplace Dim oRS Dim sColor Dim id
set oConn = Server.CreateObject ("ADODB.Connection") sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath ("Musikvideos.mdb") oConn.Open sConnectionString
sSQL="SELECT ID,Titel FROM t_Musikvideos" Set oRS = Server.CreateObject("ADODB.Recordset") oRS.Open sSQL, oConn, 3, 3 %> <table border="1" cellpadding="1" cellspacing="1" style="font-family:arial;font-size:10pt;"> <tr bgcolor="black" style="color:white;"> <td>ID</td> <td>Titel_ALT</td> <td>Titel_NEU</td> </tr> <%
sColor ="white" Do While NOT oRS.EOF If sColor = "silver" Then sColor = "white" Else sColor = "silver" End If
sreplace = oRS("Titel") sreplace = Replace(sreplace, "_ok", "", 1, -1, vbTextCompare) sreplace = UCase(Left(sreplace, 1)) & Mid(sreplace, 2, Len(sreplace)-1) sreplace = Replace(sreplace, "_", " ") %> <tr bgcolor="<% =sColor %>"> <td><% =oRS("ID") %></td> <td><% =oRS("Titel") %></td> <td><% =sreplace %></td> </tr>
<td><a href="?action=delete&id=<%=oRS("ID") %>">löschen</a></td> <td><a href="formular2.asp?ID=<%=oRS("ID") %>">verändern</a></td>
<% oRS.MoveNext
Loop
If request.querystring("action") = "delete" Then id = request.querystring("id") if IsNumeric(id) Then id = int(id) Else id = 0 sSQL = "DELETE * FROM t_Musikvideos WHERE ID = "& id Set oRS = oConn.Execute(sSQL) End If %>
oRS.Close set oRS = Nothing oConn.Close set oConn = Nothing %> </table> <br> <br> </BODY> </HTML>
Nur leider bekomme ich beim öffenen des Formulars immer diese Fehlermeldung:
Fehlertyp: Kompilierungsfehler in Microsoft VBScript (0x800A0409) Nicht abgeschlossene Zeichenfolgenkonstante /formular2.asp, Zeile 21, Spalte 75 sSQL="SELECT ID,Titel FROM t_Musikvideos WHERE ID = " & Request.Form("ID")"
Hier der code des Formulars:
<HTML> <HEAD> <TITLE>Eingabeformular</TITLE> </HEAD>
<BODY> <H1><CENTER>Veränderung</CENTER></H1> <% Dim sConnectionString Dim oConn Dim sSQL Dim sreplace Dim oRS Dim sColor Dim id
set oConn = Server.CreateObject ("ADODB.Connection") sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath ("Musikvideos.mdb") oConn.Open sConnectionString
sSQL="SELECT ID,Titel FROM t_Musikvideos WHERE ID = " & Request.Form("ID")" Set oRS = Server.CreateObject("ADODB.Recordset") oRS.Open sSQL, oConn, 3, 3 %>
<% if rs.Supports (adUpdate) Then rs.Fields("Titel") = Request.Form("Titel") rs.Update Else Response.Write("<h2>Es ist ein Fehler aufgetreten !</h2>") End if %>
<FORM Action="/daba12_1.asp" Method="post"> <HR> Veränderung der Daten: <TABLE> <TR> <TD>ID:</TD> <TD><INPUT TYPE="text" name="ID"></TD> </TR> <TR> <TD>Titel:</TD> <TD><INPUT TYPE="text" name="Title"></TD> </TR> </TABLE> <HR> <INPUT TYPE="submit" name="change" value="Datensatz change"> <INPUT TYPE="reset" value="Zurücksetzen"> </FORM> </BODY> </HTML>
Es sollten eigentlich ID und Titel in di vorgegebenen Felder von der liste.asp an das formular.asp übergeben werden, damit sie nachher bearbeiten kann.
Danke für die Hilfe
coffee
|
12/26/2006 12:48:27 PM | |
Cyberlord |
|
---|
Group: Administrator Level: heavy Spammer
Posts: 3610 Joined: 3/11/2004 IP-Address: saved
| Daten kannst du immer entweder mit GET oder POST übergeben.
GET: <a href="list.asp?id=<%= RS("ID") %>">Link</a>
POST: <form> <input type="text" value="<%= RS("ID") %>"> </form>
Viel Spaß beim Lernen!
|
12/27/2006 2:54:28 PM | |
coffee |
|
---|
Group: User Level: Gelegenheitsposter
Posts: 14 Joined: 12/9/2006 IP-Address: saved
| ja danke für die Hilfe aber es kommt folgender fehler
Fehlertyp: Microsoft JET Database Engine (0x80040E14) Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID ='. /formular2.asp, line 23
Hier nochmals der code der liste:
<HTML> <HEAD> <TITLE>Eingabeformular</TITLE> </HEAD>
<BODY> <H1><CENTER>Veränderung</CENTER></H1> <% Dim sConnectionString Dim oConn Dim sSQL Dim sreplace Dim oRS Dim sColor Dim id
set oConn = Server.CreateObject ("ADODB.Connection") sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath ("Musikvideos.mdb") oConn.Open sConnectionString
sSQL="SELECT ID,Titel FROM t_Musikvideos WHERE ID = " & Request.Form("ID") Set oRS = Server.CreateObject("ADODB.Recordset") oRS.Open sSQL, oConn, 3, 3 %>
<% if rs.Supports (adUpdate) Then rs.Fields("Titel") = Request.Form("Titel") rs.Update Else Response.Write("<h2>Es ist ein Fehler aufgetreten !</h2>") End if %>
<FORM Action="/daba12_1.asp" Method="post"> <HR> Veränderung der Daten: <TABLE> <TR> <TD>ID:</TD> <TD><INPUT TYPE="text" name="ID"></TD> </TR> <TR> <TD>Titel:</TD> <TD><INPUT TYPE="text" name="Title"></TD> </TR> </TABLE> <HR> <INPUT TYPE="submit" name="change" value="Datensatz change"> <INPUT TYPE="reset" value="Zurücksetzen"> </FORM> </BODY> </HTML>
Danke für die Hilfe
|
12/27/2006 6:14:05 PM | |
Cyberlord |
|
---|
Group: Administrator Level: heavy Spammer
Posts: 3610 Joined: 3/11/2004 IP-Address: saved
| In deinem Fall natürlich oRS statt RS.
lg
|
12/28/2006 3:58:05 AM | |
coffee |
|
---|
Group: User Level: Gelegenheitsposter
Posts: 14 Joined: 12/9/2006 IP-Address: saved
| wo genau
|
12/29/2006 5:03:09 PM | |
Cyberlord |
|
---|
Group: Administrator Level: heavy Spammer
Posts: 3610 Joined: 3/11/2004 IP-Address: saved
| Suche nach RS und ersetze es mit oRS. ;)
|
12/30/2006 1:56:17 AM | |
|
|
---|