Nur den aktuell angeklickten Wert übergeben!

Jerinca

Erfahrenes Mitglied
Hallo!

Ich arbeite mit dem Dreamweaver und erstelle ASP-Sites.

Ich habe eine HTML-Tabelle gemacht mit 2 Zeilen: Die erste enthält die Spalten-Beschriftungen (die bleibt immer gleich), die zweite enthält Werte, die über ein Recordset aus einer DB ausgegeben werdn.

Die Art, wie die Datensätze ab der zweiten Zeile ausgelesen, habe ich vom Dreamweaver-Editor für Menüs abgekupfert. Dort wird nämlich automatisch eine while-Schleife um die Einträge gelegt, die verknüft ist mit dem Recordset. Das Prinzip ist simpel: Solange noch Datensätze im Recordset vorhanden sind, fülle die Textfelder der Tabelle entsprechend.

Code:
  <table ...>
    <tr> 
      <td>Seriennummer</td>
      <td>Termin Marketing</td>
      <td>direkt gelagert?</td>
      <td>Standort</td>
      usw......
    </tr>
    <%
while (!Recordset3.EOF)
{
%>    <tr> 
      <td> 
        <input type="text" name="SN" value="<%=(Recordset3.Fields.Item("SD_Seriennummer").Value)%>" onClick="oeffnebearb()">
      </td>
      <td> 
        <input type="text" name="TM" value="<%=(Recordset3.Fields.Item("SD_Marketing").Value)%>">
      </td>
      <td> 
        <input type="checkbox" name="checkbox" value="<%=(Recordset3.Fields.Item("SD_EndeLack").Value)%>">
      </td>
      <td> 
        <input type="text" name="SO" value="<%=(Recordset3.Fields.Item("SD_Standort").Value)%>">
      </td>
      usw...... 
    </tr>
    <%
  Recordset3.MoveNext();
}
if (Recordset3.CursorType > 0) {
  if (!Recordset3.BOF) Recordset3.MoveFirst();
} else {
  Recordset3.Requery();
}
%>  </table>



<script language="javascript">
	function oeffnebearb() {
		document.form1.action='stammdaten_bearbeiten.asp'; 
		document.form1.submit(); 
		return false;
	}
</script>


Auf der nächsten Site "stammdaten_bearbeiten.asp" gibt es dann ein Recordset, das den Wert des Textfeldes "SN" über Request("SN") abfragt!


WORAUF ICH HINAUS WILL: Wenn man auf die Sereinnummer im Textfeld "SN" klickt, soll sich eine andere Seite öffnen, die genau den Datensatz zur eben ausgewählten/angeklickten Seriennummer enthält, was auch funktioniert, wenn nur ein Datensatz vorhanden ist!

GRUND: Durch die while-Schleife hat das Textfeld "SN" zwar immer andere Werte, aber trotzdem immer denselben Namen, weswegen die Verknüpfung über den Feldnamen nicht mehr funktioniert, wenn mehr als ein Datensatz angezeigt wird!

NUN MEINE FRAGE: Wie schaffe ich es, dem Programm klar zu machen, daß der Wert des aktuell angeklickten Feldes übergeben bzw. abgefragt werden soll und nicht einfach nur das Feld "SN", denn das gibt es ja mehrfach (hoffe, das ist klar geworden)!

Bin für jeden Vorschlag dankbar!

LG, Jerinca
 

nafets

Mitglied
Wieso schreibst du eigentlich nicht die ganze Tabelle mit ASP läuft viel schneller und ist eigentlich auch übersichtlicher weder wenn der Server immer wieder ASP erkennt und verarbeitet.

Zu deinem Problem. Wenn du die Zeilen schreibst muss du aud das gewünschte Feld einfach einen Link legen welcher zu der Detail-Seite führt. Diesem Link übergibst du dann die Werte.
Der Link sieht etwas folgendermassen aus,.

Response.Write("<a href='meineSeite.asp?id=" & Recordset("meineSN") & "'>" & Recordset("meineSN") & "</a>")

Auf der Detail Seite kannst du diese mit dem Befehl Request.QueryString entgegennehmen: myID = Request.QueryString("id")
. Jetzt kannst du deine SQL Anweisung schreiben und anhand der ID sortieren bzw. selektionieren lassen.

Hoffe habe dein Problem richtig erkannt. Ach ja lass die Finger von zuviel JS. Reiner ASP ist schneller und überschaubarer. Wenn du ein Popup mit den Details machen willst gibt es bessere und schnellere Methoden.... bla bla bla ich könnte noch lange erzählen

Gruss
 

Jerinca

Erfahrenes Mitglied
Hallo nochmal und schonmal vielen Dank für Deinen Vorschlag!

Du hast sicher schon bemerkt, daß ich noch ein Newbie auf diesem Gebiet bin :offtopic:

Ich kenne HTML, Javascript und JScript. HTML ist statisch, Javascript und JScript sind ähnliche Scriptsprachen.

Und ich dachte, ASP-Sites wären HTML-Seiten mit Javascript und/oder JScript drin :suspekt:

Ach ja lass die Finger von zuviel JS. Reiner ASP ist schneller und überschaubarer.
Was meinst Du denn mit "reinem ASP" :confused:

Deinen anderen Vorschlag werde ich mir jetzt mal noch zu Gemüte führen... Hoffe, dass es klappt...

CU, Jerinca
 

Jerinca

Erfahrenes Mitglied
Hallo nafets, ich nochmal!

Ich hab mal versucht, Deinen Vorschlag analog anzuwenden, aber es klappt noch nicht ganz :confused:

Code:
<td> 
<a href='stammdaten_bearbeiten.asp?SN=<%= Recordset3.Fields.Item"SD_Seriennummer").Value)%>'><%=(Recordset3.Fields.Item("SD_Seriennummer").Value)%></a>
</td>
und dann in der nachfolgenden Site:
Code:
<%
var Seriennummer = Request.QueryString("SN")
%>
Das auf der ersten Site stimmt sicher, denn wenn man mit dem Cursor draufgeht, erscheint unten in der Statuszeile: http://localhost/stammdaten_bearbeiten.asp?SN=0CTSH071443 (was in diesem Fall die richtige Seriennummer ist!) und wenn man draufklickt, erscheint dieser String auch als URL oben. Das stimmt also denke ich ;-)

Aber ich habe keine Ahnung, wie ich dann weitermachen soll... Die Recordsets - das muß ich zu meinem Beschämen zugeben - mache ich mit einem Editor, wo man nur die SQL-Anweisung, die Variable und dann Request("Name des Feldes aus der vorigen Site, dessen Wert als Variable eingesetzt werden soll") reinschreiben muß...

Wäre echt toll, wenn mir da jemand nochmal einen kleinen Schubs in die richtige Richtung geben könnte :p

Vielen, vielen Dank schonmal!

Grüße, Jerinca
 

nafets

Mitglied
Verstehe ich das richtig? Du hast Probleme den Detail Eintrag auf der zweiten Seite auszulesen?

Code:
DIM mySN
mySN = Request.QueryString("SN")

sql = "SELECT * FROM meineTabelle Where meinFeld=" & mySN & ""
Set objRS = objConn.Execute(sql)

Response.Write("Artikel: " & objRS("tArtikel") & "<br>")
Response.Write("Beschreibung: " & objRS("tBeschreibung") & "<br>")

usw.

Wichtig am schluss das Recordset wieder schliessen

objRS.Close
Set objRS = Nothing

Sonst bleiben diese auf dem Server bestehen und irgendwann staut sich der zu.

Gruss

Noch was, du machst deine Seite mit Dreamweaver? Dann mach dir das Layout mit dem Ding etc. aber schreib doch den benötigten ASP Code alleine. Führt am Anfang sicherlich zu Fehlern aber so lernst du sehr schnell. Ich mache ASP auch erst seit ein paar Monaten. Wenn noch was nicht klar ist. Schreib einfach wieder. Ich versuche mich dann dem Problem anzunehmen :)

bye
 
Zuletzt bearbeitet:

Neue Beiträge