Eytibi Geschrieben 22. September 2006 Teilen Geschrieben 22. September 2006 Ahhh ich Dösbaddel! Es ist richtig, dass die Hersteller 3mal ausgegeben werden. Für jedes gefundene Modell wird der zugehörige Hersteller mit ausgegeben. 3 Modelle - 3 Hersetller - mein Fehler. Also am besten ist wohl, du machst 2 Schritte Schritt 1: Ausgabe der Hersteller: strObj = "Selcet Hersteller_ID, Hersteller from THersteller"; dann sie Ausgabe in einer Listbox (Schleife) <% while blabla <option value='<% objRS("Hersteller_ID") %>'> <% objRS("Hersteller") %> </option> <% wend %> Schritt 2: Ausgabe der Modelle (neue listbox): strObj = "Selcet Modell_ID, Modell from TModelle"; dann sie Ausgabe in einer Listbox (Schleife) <% while blabla <option value='<% objRS("Modell_ID") %>'> <% objRS("Modell") %> </option> <% wend %> ^^ Das müsste richtiger sein. Das mit den Fremdschlüsseln hast du richtig verstanden. Man kann in Access irgendwie die Fremdschlüssel angeben, ist aber eher unwichtig für die Abfragen (und ich weiß nicht wie). Du brauchst nur eine Spalte deren Inhalt der Primärschlüssel der zugehörigen Tabelle entspricht, z.B. Tabelle: Hersteller Primärschlüssel: Hersteller_ID Tabelle: Modelle Primärschlüssel: Modell_ID Fremdschlüssel: DeinName In DeinName steht dann immer die Hersteller_ID des Herstellers des jeweiligen Modells Mit SELECT Modell FROM TModelle WHERE DeinName = '5' bekommst du dann alle Modelle, die zum Hersteller mit der ID 5 gehören. So wie es aus sieht, haben wir es bald Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 25. September 2006 Autor Teilen Geschrieben 25. September 2006 Hallo Ich habe jetzt folgendes gemacht: Eine Tabelle HerstellerT mit folgenden Spalten: ID_Hersteller Hersteller 1 Renault 2 VW Eine Tabelle ModelleT mit folgenden Spalten: ID_Modelle Modelle ID_Hersteller 1 Clio 1 1 Golf 2 2 Megane 1 3 Laguna 1 Eine Tabelle PST die aber momentan nicht das Problem ist. Wenn ich auf Renault klick zeigt er mir alle Modelle an. Er soll mir aber alle außer den Golf anzeigen. Bei VW zeigt er nichts an. Kann sich jemand mal den Quelltext anschauen und mir sagen was ich falsch mache? <form name="open" action="index5.asp"> <% strDB = "Data Source=" & Server.MapPath("store.mdb") strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB SET objCon = Server.CreateObject("ADODB.Connection") objCon.Open strCon strSQL = "SELECT * FROM HerstellerT ORDER BY Hersteller" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strSQL, objCon %> <!-- Selectbox für Hersteller --> <select style="width:100px" onChange="document.open.submit()" name='Hersteller' size='10'> <% While Not EOF and Err=0%> <option value='<% =objrs("ID_Hersteller")%>'><% =objrs("Hersteller")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend EOF = false 'ObjRS.MoveFirst %> </select> <% strSQL = "SELECT * FROM ModelleT ORDER BY Modelle" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strSQL, objCon %> <!-- Selectbox für Modelle--> <select style="width:100px" onChange="document.open.submit()" name='Modelle' size='10'> <% [COLOR="Red"]While Not EOF if Request.Querystring("Hersteller") = 1 then While Not EOF and Err=0%> <option value='<% =objrs("ID_Modelle")%>' & '<% =objrs("ID_Hersteller")%>'><% =objrs("Modelle")%></option>[/COLOR] <% ObjRS.MoveNext EOF = objRS.EOF Wend else ObjRS.MoveNext EOF = objRS.EOF end if wend EOF = false %> </select> <% strSQL = "SELECT * FROM PST ORDER BY ID_PS" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strSQL, objCon %> <!-- Selectbox für Modelle--> <select style="width:100px" onChange="document.open.submit()" name='PS' size='10'> <% While Not EOF and Err=0%> <option value='<% =objrs("PS")%>'><% =objrs("PS")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend EOF = false ObjRS.MoveFirst %> </select> Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 25. September 2006 Teilen Geschrieben 25. September 2006 <% strSQL = "SELECT * FROM ModelleT ORDER BY Modelle" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strSQL, objCon %> <!-- Selectbox für Modelle--> <select style="width:100px" onChange="document.open.submit()" name='Modelle' size='10'> <% While Not EOF if Request.Querystring("Hersteller") = 1 then While Not EOF and Err=0%> <option value='<% =objrs("ID_Modelle")%>' & '<% =objrs("ID_Hersteller")%>'><% =objrs("Modelle")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend else ObjRS.MoveNext EOF = objRS.EOF end if wend EOF = false %> </select> Dein SQL-Statement ist fehlerhaft. Du selektierst alle Modelle, deswegen werden auch alle angezeigt. Wie wär's mit: strHerstellerID = Request.Querystring("Hersteller") strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller = " + strHersteller + "ORDER BY Modelle" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 25. September 2006 Teilen Geschrieben 25. September 2006 Anmerkung: meine letzten versuche mit Access und ASP hatten den schönen effekt, das Access die datenbank für mehrere Minuten sperrt, wenn zwei user gleichzeitig (innerhalb weniger Sekunden / der gleichen Sekunde, weis nicht mehr genau) zugreifen. hast du das mal ausprobiert ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 25. September 2006 Autor Teilen Geschrieben 25. September 2006 Habe es jetzt verbessert. Bekomme aber folgende Fehlermeldung: Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID_Hersteller ='. /auswahl/index7.asp, line 38 <% 'strSQL = "SELECT * FROM ModelleT ORDER BY Modelle" strHerstellerID = Request.Querystring("Hersteller") strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller = " + strHerstellerID + "ORDER BY Modelle" Set objRS = Server.CreateObject("ADODB.Recordset") [COLOR="red"]objRS.open strSQL, objCon[/COLOR] %> <!-- Selectbox für Modelle--> <select style="width:100px" onChange="document.open.submit()" name='Modelle' size='10'> <% While Not EOF if Request.Querystring("Hersteller") = 1 then While Not EOF and Err=0%> <option value='<% =objrs("ID_Modelle")%>' & '<% =objrs("ID_Hersteller")%>'><% =objrs("Modelle")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend else ObjRS.MoveNext EOF = objRS.EOF end if wend EOF = false %> </select> Hab folgendes geändert. Denke das war ein Fehler von dir. Habe strHersteller in strHerstellerID geändert. Denke das war ein Tippfehler, oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 25. September 2006 Autor Teilen Geschrieben 25. September 2006 Danke für die Anmerkung Aiun. Aber daran liegt es leider nicht. Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 25. September 2006 Teilen Geschrieben 25. September 2006 Habe es jetzt verbessert. Bekomme aber folgende Fehlermeldung: Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID_Hersteller ='. /auswahl/index7.asp, line 38 <% 'strSQL = "SELECT * FROM ModelleT ORDER BY Modelle" strHerstellerID = Request.Querystring("Hersteller") strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller = " + strHerstellerID + "ORDER BY Modelle" Set objRS = Server.CreateObject("ADODB.Recordset") [COLOR="red"]objRS.open strSQL, objCon[/COLOR] %> Hab folgendes geändert. Denke das war ein Fehler von dir. Habe strHersteller in strHerstellerID geändert. Denke das war ein Tippfehler, oder? Ja das war einer. Probier mal diese Version des Statements: strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller = " + strHerstellerID + " ORDER BY Modelle" Bei der vorherigen Version fehlte ein Leerzeichen vor ORDER BY. Eventuell musst du noch einzelne Hochkommas (') in das Statement einbauen. (nach dem = und vor dem Leerzeichen von ORDER BY) Ansonsten überprüf mal, was aus dem Request kommt. LG René Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 25. September 2006 Autor Teilen Geschrieben 25. September 2006 Also das mit den Hochkommas klappt leider auch nicht. Habe aber ein interessantes Phänomen entdeckt. Wenn ich dieses = entferne macht er mir keinen Fehler, erst wenn ich auf VW oder Renault klick kommt eine Fehlermeldung. Wenn ich danach das = wieder rein mache, funktioniert es. Dann kommt wenn ich Renault anklick alle Modelle außer der Golf, so wie es sein soll. Wenn ich auf anderen Webseiten surf und die Seite danach wieder aufruf funktioniert es auch noch. Aber wenn ich den Browser schließe und erneut öffne funktioniert es nicht mehr. strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller =" + strHerstellerID + " ORDER BY Modelle" Erst wenn ich den gleichen Vorgang (erst "=" löschen,speichern dann "=" einfügen,speichern...) wiederhole funktioniert es wieder. Also langsam werde ich verrückt. Kann mir das vielleicht jemand erklären? Das ist doch total unlogisch. Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 25. September 2006 Teilen Geschrieben 25. September 2006 Das liegt wahrscheinlich daran, dass beim ersten Aufruf der Request noch leer ist (du hast ja dann noch kein Formular abgeschickt). Bau mal eine Abrage ein, die strHerstellerID auf einen Wert setzt wenn er null oder leer ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 25. September 2006 Autor Teilen Geschrieben 25. September 2006 Hab das jetzt so gemacht. Weiss aber nicht ob es das ist was du gemeint hast da der Fehler immer noch erscheint. strHerstellerID = Request.Querystring("Hersteller") strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller =" + strHerstellerID + " ORDER BY Modelle" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strSQL, objCon %> <!-- Selectbox für Modelle--> <select style="width:100px" onChange="document.open.submit()" name='Modelle' size='10'> <% While Not EOF if Request.Querystring("Hersteller") = 1 then While Not EOF and Err=0%> <option value='<% =objrs("ID_Modelle")%>' & '<% =objrs("ID_Hersteller")%>'><% =objrs("Modelle")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend else ObjRS.MoveNext EOF = objRS.EOF end if wend [COLOR="Red"]if strHerstellerID= 0 then strHerstellerID=2 end if[/COLOR]EOF = false %> </select> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 25. September 2006 Teilen Geschrieben 25. September 2006 Es ist schon das richtige, aber an der falschen Stelle und ein wenig falsch, wenn ich mich richtig an meine alten VB6-Zeiten erinnere... strHerstellerID = Request.Querystring("Hersteller") if strHerstellerID = "" OR strHerstellerID = null OR strHerstellerID = "0" Then strHerstellerID = "2" END IF strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller =" + strHerstellerID + " ORDER BY Modelle" Die IF-Abfrage muss vor der DB-Abfrage kommen, da tritt ja schließlich der Fehler auf. Und du musst bedenken das strHerstellerID ein String ist und kein Integer oder sonst was. Das müsste eigentlich gleich klappen ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 25. September 2006 Autor Teilen Geschrieben 25. September 2006 Super. Das klappt jetzt. Jetzt muss ich das ganze nur noch mit den PS machen. Ich denke den Rest bekomme ich jetzt alleine hin. Wenn nicht werde ich mich nochmal melden. Vielen Dank Eytibi das du so viel Geduld mit mir gehabt hast. Werde mich auf jeden Fall per ICQ mal bei dir melden. Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 25. September 2006 Teilen Geschrieben 25. September 2006 Schön, dass es klappt Bis denne ... 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.