Button Ändern neben ausgewählten Datensatz

stud3

Aktives Mitglied
hallo,
meine Tabelle hat eine Ändern Schaltfläche in jeder Zeile, so dass wenn man auf der "Ändern" Schaltfäche neben dem Datensatz, den zu löschen ist, klickt, geht man zu einem Formular mit vorgefüllten Eingabefelder, die die entsprechenden Werte des mit "Andern" ausgewählten Datensatz beinhaltet, aber ich komme nicht voran, wie ich idas in ASP machen kann. Hätte jemand eine Idee?
 
Es gibt zwei Möglichkeiten, je nachdem wie die Tabelle aussieht resp. ob die Eingabefelder alle auf einer Zeile Platz haben.

- Entweder beim Klick auf "Ändern" die Seite neu laden, und dabei die Zeile mit dem gewählten Datensatz direkt als Formular mit Eingabefeldern darstellen. Zusätzlich - resp. anstelle des Buttons "Ändern" - müssen zwei Buttons "Speichern" und "Abbrechen" dargestellt werden.

- Oder beim Klick auf "Ändern" ein neues Fenster öffnen (Javascript-Popup oder als Link mit Target=Blank), das die Seite mit dem Formular enthält. Hier müssten ebenfalls die Buttons für Speichern und Abbrechen dargestellt werden.

Falls ich Deine Frage falsch verstanden hab und Du den ASP-Code zum Darstellen des Formulars möchtest, poste doch einfach den HTML-Source des Formulars.

Griessli
Irene
 
hallo Irene,
die zweite Möglichkeit ist diejenige, die ich nutze, ich habe nur noch nicht das Pop-Up in dem <td> Tag nicht inkludiert. Hier füge ich nur ein Teil des Codes, mit dem man auf die Formular-Seite geht:

QUOTE

<html>
...
...
<tr bgColor="<%= strBgColor %>">

<td width=10% ><input type="button" name="Löschen" value="Löschen"></td>
<td width=10%><input type="button" name="Ändern" value="Ändern"></td>
<td align=center width=10% ><%= objRS("Produkt_id") %></td>

<td align=center width=20% ><%= objRS("Dienstleistungs_ID") %></td>

<td align=center width=30% ><%= objRS("Produkt") %></td>
<td align=center width=10% ><%= objRS("Report") %></td>


</tr>
<%

intCurrent = intCurrent + 1
objRS.MoveNext
Wend



objRS.Close()
objConn.Close()

Set objRS = Nothing
Set objCmd = Nothing
Set objConn = Nothing


%>
</table></td></tr></table>


</div>
</td></tr>

<tr><td height=30></td></tr>

<tr><td height=30 class="textback" align=center><input type="button" value="Hinzufügen" onclick=jmsgbox() style="width:7em><input type="button" value="Aktualisieren" style="width:7em">
</td></tr>
...
...
</html>


und der Code des Formulars, wo ich nur 3 Labels habe und 3 Eingabefelder, da Produkt_id ist ein Autowert und für den Benutzer wäre nicht wichtig die Dienstleistungs_ID sondern die Dienstleistung auszuwählen.


QUOTE

...
<FORM action="Produkt_Formular.asp" method=post>

<table width="39%" border=0
style="FONT-WEIGHT: bold; FONT-SIZE: 13px;
width:51%" align=center>
<tbody>
<tr>
<td width="52%">Produkt:</td>
<td width="48%">Dienstleistung:</td>
</tr>
<tr>
<td><input type="text" name="Produkt" size="40" maxlength="50"></td>
<td><select name="Dienstleistung">
<option>Bitte auswählen</option>
<option value="0" >irgendwas </option>
<option value="1">irgendwas 1</option>
<option value="2">irgendwas 2</option>

</select></td>
</tr>
<tr ><td height=6></td></tr>
<tr >
<td colspan=2 >Report:</td>
</tr>

<tr >
<td colspan=2 ><input type="text" name="Report" size="40" maxlength="50"></td>
</tr>
<tr><td height=20></td></tr>
<tr><td colspan=2 align=center><input type="button" value="Speichern" style="width:7em">  <input type="button" value="Abbrechen" style="width:7em" ></td></tr>

</tbody>
</table>

</FORM>


[SIZE]
 
Das Formular kannst Du im Prinzip gleich füllen wie die Tabelle, welche die Datensätze darstellt. Also das RS öffnen, aber beim SQL anstatt alle Datensätze zu holen, nur denjenigen mit der entsprechenden ID. Ich nehme mal an, die Produkt_ID ist der Primary Key. Diesen muss das Javascript, welches das Fenster öffnet, übergeben.

CODE <td width=10%><input type="button" name="Ändern" value="Ändern" onClick="window.open('eingabeseite.asp?Produkt_ID='<%= objRS("Produkt_id") %>')"></td>


CODE ...
' rs öffnen
set objRS = objConn.execute("SELECT * FROM Tabelle WHERE Produkt_ID=" & request("Produkt_ID"))
<FORM action="Produkt_Formular.asp" method=post>
<table width="39%" border=0 style="FONT-WEIGHT: bold; FONT-SIZE: 13px;
width:51%" align=center>
<tbody>
<tr>
<td width="52%">Produkt:</td>
<td width="48%">Dienstleistung:</td>
</tr>
<tr>
<td><input type="text" name="Produkt" size="40" maxlength="50" value="<%= objRS("Produkt") %>"></td>
<td><select name="Dienstleistung">
<% if isnull(objRS("Dienstleistungs_ID")) then %>
<option SELECTED>Bitte auswählen</option>
<% else %>
<option SELECTED>Bitte auswählen</option>
<% end if %>

<% if objRS("Dienstleistungs_ID")=0 then %>
<option value="0" SELECTED>irgendwas </option>
<% else %>
<option value="0" >irgendwas </option>
<% end if %>

<% if objRS("Dienstleistungs_ID")=0 then %>
<option value="1" SELECTED>irgendwas 1</option>
<% else %>
<option value="1">irgendwas 1</option>
<% end if %>

<% if objRS("Dienstleistungs_ID")=0 then %>
<option value="2" SELECTED>irgendwas 2</option>
<% else %>
<option value="2">irgendwas 2</option>
<% end if %>

</select>
</td>
</tr>
<tr ><td height=6></td></tr>
<tr >
<td colspan=2 >Report:</td>
</tr>

<tr >
<td colspan=2 ><input type="text" name="Report" size="40" maxlength="50" value="<%= objRS("Report") %>"></td>
</tr>
<tr><td height=20></td></tr>
<tr><td colspan=2 align=center><input type="button" value="Speichern" style="width:7em">  <input type="button" value="Abbrechen" style="width:7em" ></td></tr>
...

Theoretisch müssten die Werte für das Select "Dienstleistung" auch in der Datenbank hinterlegt sein. Jedenfalls würde es Sinn machen, weil ja eigentlich auch bei der Darstellungsseite für den Benutzer mehr die Bezeichnung als die ID der Dienstleistung interessant ist. Und sobald man solche Werte in mehr als einer Seite braucht, sollten sie in der DB sein, damit man bei Änderungen nicht x Seiten ändern muss.

Griessli
Irene
 
hallo Irene,
Danke für Ihre Mühe, tut mir leid, aber es funktioniert nicht, ich habe schon versucht, ich habe dem <input > Tag des Ändern Buttons das onclick=window.open.. hinzugefügt, aber beim Klicken auf den Button passiert nichts.
Ausserdem Ihren Eintrag habe ich so verstanden, dass beim Klicken auf "Ändern" wird die Seite "eingabeseite.asp" aufgerufen, und der Code dieser Seite füllt die Eingabefelder in dem Formular Produkt_Formular.asp mit entsprechenden Werten des ausgewählten Datensatzes .
Wenn ich mich irre, bitte korrigieren Sie mich. Leider funktioniert noch nicht und ich bin immer noch dabei beim Ändern und Löschen von Zeilen in dem Code, es klappt noch nicht...
sad.gif
 
...
ich habe das mit dem Popup schon korrigiert, und es wird das Popup angezeigt, nur komme ich nicht voran längst mit dem Formular, diese sind die Änderungen, die ich gemacht habe, aber ich bekomme einen Komplierfehler an der Stelle des "SQLquery="....


CODE
<%

On Error Goto 0

Dim objConn
Dim objCmd
Dim objRS
Dim strConn
Dim SQLquery
Dim strDB

strDB = "Data Source=" &_
Server.MapPath("../datenbank/db1.mdb")
'Set objRS = server.CreateObject("ADODB.Recordset")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB

SQLquery="'SELECT * FROM LU_Produkt WHERE Produkt_ID=' & request("Produkt_ID")"
set objRS = objConn.execute(SQLquery)
objRS.Open SQLquery, objConn

Set objConn = CreateObject("ADODB.Connection")
objConn.ConnectionString = strConn
objConn.Open()

Set objCmd = CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = objConn
'objCmd.CommandText = SQLquery


%>

 
Der SQL-String ist so nicht ganz richtig. Er müsste so aussehen (sofern die Produkt_ID eine Zahl ist):

SQLquery="SELECT * FROM LU_Produkt WHERE Produkt_ID=" & request("Produkt_ID")

Das rot markierte darf nicht in den Anführungszeichen stehen, da es vom ASP verarbeitet werden muss. Der Apostroph am Anfang des SQL ist überflüssig, da der gesamte SQL-String sonst von der DB als reiner Literaltext erkannt wird und somit nicht verarbeitet werden kann.

Falls das Feld Produkt_ID keine Zahl, sondern Text enthält, müsste es so lauten:

SQLquery="SELECT * FROM LU_Produkt WHERE Produkt_ID='" & request("Produkt_ID") & "'"

Griessli
Irene
 
Zurück
Oben