stud3 Geschrieben 2. März 2005 Teilen Geschrieben 2. März 2005 hallo, falls mein Eintrag, der schon in dem Forum vorhanden ist, vielleicht vergessen wurde, hier habe ich folgendes Problem: Ich habe 2 Tabellen mit denen ich in diesem Code arbeiten möchte. Die Tabelle LU_Produkt mit den Spalten Produkt_id, Dienstleistungs_ID, Produkt und Report. Die Tabelle LU_Dienstleistung mit den Spalten Dienstleistungs_ID, Dienstleistung. Beim Ändern von Datensätzen sollte ein vorgefülltes Formular erscheinen, wobei ich nur die Felder Produkt, Dienstleistungs_ID als Listenfeld und Report habe. Meine Absicht ist es, das Listenfeld mit Werten der Spalte Dienstleistung der Tabelle LU_Dienstleistung zu füllen und noch was, ein Beispiel zur Verdeutlichung: Nachdem ich einen Datensatz in der Tabelle LU_Produkt ausgewählt habe und auf Ändern klicke, sollten schon die Felder mit den entsprechenden Werte des ausgewählten Datensatzes angezeigt werden. Mit dem Listenfeld Dienstleistung habe ich Schwierigkeiten, ich habe nur geschafft, es mit dem Werten der Tabelle LU_Dienstleistung auszufüllen, aber wie macht man, damit das entsprechende Wert der Dienstleistung des ausgewählten Datensatzes angezeigt werden kann , außerdem bekomme ich die Fehlermeldung:"ADODB.Recordset Fehler "800a0cc1' Ein Objekt, das dem angeforderten Namen oder dem Ordinalverweis entspricht, kann nicht gefunden werden" Könnte mir jemand dabei helfen?. Hoffentlich ist mein Beitrag deutlich. Code: <table border=0 width=100% align=center height=200> <tr><td class="text"><b>Produkt:</b></td></tr> <tr><td class="text"><input type="text" name="Produkt" size="40" maxlength="50" value="<%Response.write objRS("Produkt") %>"></td></tr> <tr><td class="text" ><b>Dienstleistung:</b></td></tr> <tr><td class="text"> <select name="Dienstleistung" width="150px" style="width:150px;" > <option>Bitte auswählen</option> <% Dim objRS, strConn, SQLquery 'Dienstleistung = Response.write objRS("Dienstleistung") Set objRS = Server.CreateObject("ADODB.Recordset") strConn = ".." SQLquery="Select * from LU_Dienstleistung order by Dienstleistungs_ID" objRS.Open SQLquery, strConn Do while not objRS.EOF Dienstleistungs_ID = objRS("Dienstleistungs_ID").Value if CStr(Dienstleistungs_ID) = CStr(Dienstleistung) then %><option value="<% Response.write objRS("Dienstleistungs_ID") %>" selected> <% = objRS("Dienstleistung").Value %> </option><% Else %><option value="<% Response.write objRS("Dienstleistungs_ID") %>"> <% = objRS("Dienstleistung").Value %> </option><% End if objRS.MoveNext loop objRS.Close %> </select> </td></tr> <tr><td class="text" colspan=2 ><b>Report:</b></td></tr> <tr><td colspan=2><input type="text" name="Report" value="<%Response.write objRS("Report") %>" size="40" maxlength="50"></td></tr> </table> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 2. März 2005 Teilen Geschrieben 2. März 2005 hallo, falls mein Eintrag, der schon in dem Forum vorhanden ist, vielleicht vergessen wurde, hier habe ich folgendes Problem: Falls du den hier meinst: http://forum.fachinformatiker.de/showthread.php?t=74129 Wieso vergessen? Da keine weitere Rückmeldung von dir kam, ging wohl jeder davon aus, das du es hinbekommen hast. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stud3 Geschrieben 2. März 2005 Autor Teilen Geschrieben 2. März 2005 hallo, ja das meine ich, nein, hinbekommen habe ich das nicht, schon längst versuche die Lösung zu finden, nicht einmal im Internet finde ich ähnliche Probleme, und sowas kann ich nicht fassen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stud3 Geschrieben 3. März 2005 Autor Teilen Geschrieben 3. März 2005 ich melde mich, aber ich sehe, niemand mehr meldet sich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 ich melde mich, aber ich sehe, niemand mehr meldet sich. Sorry, kein Plan von ASP... Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 Sorry, kein Plan von ASP... @Stud3: Das ist eben das Problem. Hier sind eben recht wenige die sich mit ASP beschäftigen. Die meisten (zumindest hier im Forum) gehen in die PHP-Richtung. Mir ist aber noch was aufgefallen... Beim Auswählen im 1. Option-Feld passiert ja nichts, also kann sich das 2. ja eigentlich auf nichts beziehen. Wenn in Dienstleistung NULL drinsteht könnte es evt. auch zu der Fehlermeldung kommen (bin mir da aber nicht ganz sicher) Du müßtest also auch wieder ein Form um das erste Optionfeld machen. Beim Absenden die Seite neu Laden und damit müßtest du dann den Wert haben. Ist nur ein Ansatz, aber vielleicht hilft der dir etwas weiter..... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stud3 Geschrieben 4. März 2005 Autor Teilen Geschrieben 4. März 2005 schwer, ich habe schon vieles versucht, dies ist ein komischer Fall, wobei ich bisher (1 Monat) in keine anderen Foren eine Lösung gefunden habe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 HTML läuft im Browser ab. Wenn du also in dem Optionfeld was auswählst bekommt der Server (ASP wird ja auf dem Server ausgeführt) nichts davon mit. Du mußt also den ausgewählten Wert erstmal an den Server schicken, bevor du den mit ASP weiterverarbeiten kannst. Du brauchst also ein Form um das 1. Select-Feld und einen Submit-Button. Erst wenn der Submit-Button geklickt wird, wird der Inhalt des Forms (in dem Fall der value des 1. Select-Feldes) an den Server geschickt, wo du den weiter per ASP auswerten kannst (per Request("Dienstleistung")) Angenommen deine Seite heißt Seite1.asp kannst du im action des Forms auch wieder Seite1.asp eintragen (<form action="Seite1.asp">). Dadurch wird die selbe Seite wieder aufgerufen. Dein ASP-Script müßte nun folgendes machen: Wenn Request("Dienstleistung") NULL, bzw leer ist mache gar nicht (Da wurde das Form noch nicht abgeschickt) Wenn Request("Dienstleistung") einen Wert hat: Öffne einen Recordset mit der SQL-Anweisung "Select * from LU_Dienstleistung WHERE Dienstleistungs_ID=" & Request("Dienstleistung") & ";" (Das liest dir genau die Werte aus der DB die du brauchst, du brauchst also nicht mehr per IF Abfragen ob die Datensätze mit dem 1. Select-Feld zusammen passen) Anfang Schleife Schreibe den Wert aus dem Recordset in das 2. Select-Feld Wiederhole so lange bis das Recordset EOF ist (Schleife Ende) Schliesse das Recordset Wichtig ist das du abfragst ob Request("Dienstleistung") gesetzt ist, also per Submit gesendet wurde, ansonsten bekommst du keine Datensätze und dein Recordset bringt einen Fehler. Ich hoffe das war jetzt etwas verständlicher als vorhin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stud3 Geschrieben 4. März 2005 Autor Teilen Geschrieben 4. März 2005 hallo Wolle, ich hoffe auch, dich gut verstanden zu haben, die Änderungen werden hier farbig gezeigt, ich habe dann folgendes gemacht: <% private function ShowChangeForm() %> <% 'Der Benutzer wählt einen Datensatz in der Tabelle aus, die Eingabefelder werden mit Daten des ausgewählten Datensatz vorgefüllt 'die Abfrage sucht in der Tabelle nach der "Produkt_id" 'durch das Recordset-Objekt werden die Daten entsprechend der "Produkt_id" des ausgewählten Datensatzes aus der Tabelle ausgelesen SQLquery="SELECT * FROM LU_Produkt WHERE Produkt_id=" & Request("Produkt_id") Set objRS=Conn.execute(SQLquery) %> <head> <title>TABELLE LU_PRODUKT</title> <link rel="stylesheet" type="text/css" href="../_rootverzeichnis/format.css"> </head> <body bgcolor="#ffffea"> <form action="/_rootverzeichnis/change.asp" method="post"> <input type="hidden" id="form_action" name="form_action" value="chg_save"> <input type="hidden" id="Produkt_id" name="Produkt_id" value="<%Response.write(Request("Produkt_id")) %>"> <input type="hidden" id="Dienstleistungs_ID" name="Dienstleistungs_ID" value="<%Response.write(Request("Dienstleistungs_ID")) %>"> 'an dieser Stelle habe ich ein input hinzugefügt <div> <table align=center cellspacing=1 cellpadding=0 width="100%" border=0> <tr><td height=25 class="headback"><font size=2><b>LU_PRODUKT - ÄNDERUNGEN SPEICHERN</b></font></td></tr> <%'Schritt 20: LU_PRODUKT ersetzen %> <tr><td height=15 class="textback" valign=middle style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:13px">Hier können Sie die Daten ändern:</td> </tr> </table> </div> <br><br> <div> <table border=0 width=100% align="center" height="200"> <tr><td class="text"><b>Produkt:</b></td></tr> <tr><td class="text"><input type="text" name="Produkt" size="40" maxlength="50" value="<%Response.write objRS("Produkt") %>"></td></tr> <tr><td class="text" ><b>Dienstleistung:</b></td></tr> <tr><td class="text"> <select name="Dienstleistung" id="Dienstleistung"> 'Das hier geändert <% SQLquery="Select * from LU_Dienstleistung WHERE Dienstleistungs_ID=" & Request("Dienstleistung") & ";" Set objRS = Conn.Execute(SQLquery) Do while not objRS.EOF %> <option value="<% Response.write objRS("Dienstleistungs_ID") %>"> <% = objRS("Dienstleistung").Value %> </option> <% objRS.MoveNext loop objRS.Close %> </select> </td></tr> <tr><td class="text" colspan=2 ><b>Report:</b></td></tr> <tr><td colspan=2><input type="text" name="Report" value="<% Response.write objRS("Report") %>" size="40" maxlength="50"></td></tr> </table></div> <br><br> <table width=100% align=center> <tr> <td width=100% height=40 class="textback"><center><input type="submit" value="Änderung speichern" > <input type="button" value="Abbrechen" style="width:7em" onClick="self.close()"></center></td></tr> </table></form> <%end function %> Ist das was du meintest? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 warum verwendest du keine CODE Tags, damit wäre der Code viel einfach zu lesen... ? Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stud3 Geschrieben 4. März 2005 Autor Teilen Geschrieben 4. März 2005 hallo Markus, hier nochmal: <% private function ShowChangeForm() %> <% 'Der Benutzer wählt einen Datensatz in der Tabelle aus, die Eingabefelder werden mit Daten des ausgewählten Datensatz vorgefüllt 'die Abfrage sucht in der Tabelle nach der "Produkt_id" 'durch das Recordset-Objekt werden die Daten entsprechend der "Produkt_id" des ausgewählten Datensatzes aus der Tabelle ausgelesen SQLquery="SELECT * FROM LU_Produkt WHERE Produkt_id=" & Request("Produkt_id") Set objRS=Conn.execute(SQLquery) %> <head> <title>TABELLE LU_PRODUKT</title> <link rel="stylesheet" type="text/css" href="../_rootverzeichnis/format.css"> </head> <body bgcolor="#ffffea"> <form action="/_rootverzeichnis/change.asp" method="post"> <input type="hidden" id="form_action" name="form_action" value="chg_save"> <input type="hidden" id="Produkt_id" name="Produkt_id" value="<%Response.write(Request("Produkt_id")) %>"> <input type="hidden" id="Dienstleistungs_ID" name="Dienstleistungs_ID" value="<%Response.write(Request("Dienstleistungs_ID")) %>"> 'an dieser Stelle habe ich ein input hinzugefügt <div> <table align=center cellspacing=1 cellpadding=0 width="100%" border=0> <tr><td height=25 class="headback"><font size=2><b>LU_PRODUKT - ÄNDERUNGEN SPEICHERN</b></font></td></tr> <%'Schritt 20: LU_PRODUKT ersetzen %> <tr><td height=15 class="textback" valign=middle style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:13px">Hier können Sie die Daten ändern:</td></tr> </table> </div> <br><br> <div> <table border=0 width=100% align="center" height="200"> <tr><td class="text"><b>Produkt:</b></td></tr> <tr><td class="text"><input type="text" name="Produkt" size="40" maxlength="50" value="<%Response.write objRS("Produkt") %>"></td></tr> <tr><td class="text" ><b>Dienstleistung:</b></td></tr> <tr><td class="text"> <select name="Dienstleistung" id="Dienstleistung"> 'Das hier geändert <% SQLquery="Select * from LU_Dienstleistung WHERE Dienstleistungs_ID=" & Request("Dienstleistung") & ";" Set objRS = Conn.Execute(SQLquery) Do while not objRS.EOF %> <option value="<% Response.write objRS("Dienstleistungs_ID") %>"> <% = objRS("Dienstleistung").Value %> </option> <% objRS.MoveNext loop objRS.Close %> </select> </td></tr> <tr><td class="text" colspan=2 ><b>Report:</b></td></tr> <tr><td colspan=2><input type="text" name="Report" value="<% Response.write objRS("Report") %>" size="40" maxlength="50"></td></tr> </table></div> <br><br> <table width=100% align=center> <tr> <td width=100% height=40 class="textback"><center><input type="submit" value="Änderung speichern" > <input type="button" value="Abbrechen" style="width:7em" onClick="self.close()"></center></td></tr> </table></form> <%end function %> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stud3 Geschrieben 4. März 2005 Autor Teilen Geschrieben 4. März 2005 ich muß etwas vielleicht korrigieren, in Internet habe ich herausgefunden, dass Listbox und Combobox verschiedene Sachen sind, ich wollte eine Korrektur in meinem Beitrag machen, und zwar es ist nicht dann eine Listbox, wovon ich geschrieben habe, sondern eine Combobox. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.