Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

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>

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.

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

ich melde mich, aber ich sehe, niemand mehr meldet sich.

ich melde mich, aber ich sehe, niemand mehr meldet sich.

Sorry, kein Plan von ASP...

Gruß,

Markus

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

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

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:

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?

warum verwendest du keine CODE Tags, damit wäre der Code viel einfach zu lesen... ?

Gruß,

Markus

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

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.