Zum Inhalt springen

Problem mit Listbox gefüllt mit einer zweiten Tabelle, Hilfe!!!


Empfohlene Beiträge

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.....

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 %>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...