Problem mit Combobox und Fremdschlüssel

stud3

Aktives Mitglied
also
ich habe 2 Tabellen, eine mit Produktinfos (LU_Produkt) und eine mit Dienstleistungen (LU_Dienstleistung). In LU_Produkt.Dienstleistungs_ID wird die ID der jeweiligen Dienstleistung hinterlegt (Fremdschlüssel). In LU_Dienstleistung stehen die entsprechenden IDs und die dazu gehörenden Namen. Soviel zur DB.

Nun habe ich ein Form in dem alle Infos ausgegeben werden. Dort möchte ich eine Combobox haben, in der man alle Dienstleistungen auswählen kann und die aktuelle Dienstleistung soll vorselektiert sein.

Ich hab schon mit einigen Schleifen rumgegurkt aber leider noch kein vernünftiges Ergebnis erzielen können, in ASP nicht ASP.NET.

Bin für jede Hilfe dankbar
smile.gif

 
Du brauchst ein Recordset mit allen Dienstleistungen zum Füllen der Combobox, und den entsprechenden Produkt-Datensatz. Grobes Beispiel:

<%
set rsProd = conn.execute("select * from LU_Produkt where Produkt_ID=1")
set rsDL = conn.execute("select * from LU_Dienstleistung")
%>

<select id="cboDL">
<% while not rsDL.eof
if rsDL("Dienstleistungs_ID") = rsProd("Dienstleistungs_ID") then %>
<option SELECTED value="<%=rsDL("Dienstleistungs_ID")%>"><%=rsDL("Diensleistungstext")%>
<% else %>
<option value="<%=rsDL("Dienstleistungs_ID")%>"><%=rsDL("Diensleistungstext")%>
<% rsDL.movenext
wend %>
</select>

Griessli
Irene
 
danke Irene für die Antwort, ich habe das schon angewendet, bevor ich Ihren Tip gelesen habe, aber es hat nicht funktioniert, ich bekomme eine Fehlermeldung wie :

ADODB.Field Fehler "80020009'

Either BOF or EOF is True, or the current row was deleted. The request process needs a current row.

Report wird mir nicht angezeigt in dem Formular. Anmerkung: LU_Produkt Spalten: Produkt_id, Produkt, Dienstleistungs_ID, Report
 
Wenn ASP sagt "Either BOF or EOF is True", dann ist der Datensatz nicht da. Leider schreibst Du nicht, auf welcher Zeile der Fehler auftritt. Wenn es um das Produkt-Recordset geht, dann existiert möglicherweise wirklich kein Datensatz mit der gesuchten ID. Lass Dir doch mal anzeigen, ob Records vorhanden sind:

set rsProd = conn.execute("Select * from LU_Produkt WHERE Produkt_ID=1")
if rsProd.eof and rsProd.bof then
'kein entsprechendes Produkt gefunden
response.write "ID nicht vorhanden"
else
'rsProd(Feldname) muss funktionieren
'wenn hier ein Fehler auftritt, versuche mit rsProd.movefirst zuerst auf den Datensatz
'zu positionieren, und danach müsste der Zugriff auf das Feld gehen
response.write rsProd(Feldname)
end if

Griessli
Irene
 
Irene, danke, mit Ihrer Hilfe habe ich geschafft, was ich lange nicht konnte, es hatte mir nur eine Buchstabe gefehlt und dann erledigt. Es hat funktioniert, danke Irene, ich bin sehr froh, es fehlt mir nur das Datumproblem in der Applikation einer anderen Tabelle, und das war es. Und für andere, die das gleiche Problem haben, hier was ich nach Ihnen geschrieben habe:


<%

set rsDL = Conn.execute("select * from LU_Dienstleistung")
%>

<select id="Dienstleistung" name="Dienstleistung">
<% While not rsDL.eof
if rsDL("Dienstleistungs_ID") = objRS("Dienstleistungs_ID") then %>
<option SELECTED value="<%=rsDL("Dienstleistungs_ID")%>"><%=rsDL("Dienstleistung")%>
<% else %>
<option value="<%=rsDL("Dienstleistungs_ID")%>"><%=rsDL("Dienstleistung")%>
<% end if
rsDL.movenext

Wend %>
</select>

Schöne Grüße.
 
hallo Irene,
komischerweise funktioniert jetzt die Anzeige des Formulars für das Ändern von Datensätzen und kein Problem mit dem comobobox, aber warum funktioniert jetzt nicht die Anzeige des Formulars für das Hinzufügen von Datensätzen in der Tabelle LU_Produkt????, für Hilfe wäre ich dankbar, hier was ich für das Combobox Dienstleistung habe:


<select name="Dienstleistung" id="Dienstleistung" style="width:150px;" >
<%


Dim strConn, SQLquery


Set rsDL = Server.CreateObject("ADODB.Recordset")

strConn = "" 'aus Sicherheitsgründen nich hier angezeigt
Conn.Open strConn
SQLquery="Select * from LU_Dienstleistung order by Dienstleistungs_ID"
rsDL.Open SQLquery, strConn

While not rsDL.EOF
Dienstleistungs_ID = rsDL("Dienstleistungs_ID").Value
if CStr(Dienstleistungs_ID) = CStr(Dienstleistung) then
%><option value="<% Response.write rsDL("Dienstleistungs_ID") %>" selected>
<% = rsDL("Dienstleistung").Value %>
</option><%
Else
%><option value="<% Response.write rsDL("Dienstleistungs_ID") %>">
<% = rsDL("Dienstleistung").Value %>
</option><%
End if
rsDL.MoveNext
Wend
rsDL.Close
%>
</select>

sad.gif

 
Zurück
Oben