Sunflower84 Geschrieben 21. September 2006 Teilen Geschrieben 21. September 2006 Hi Ich habe eine MS Access Datenbank aus der ich gerne die Daten in ein select Menü rein schreiben will. Momentan gibt er mir Daten ganz normal auf der Website aus. Aber wi bekomme ich es hin das sie in einem select Menü angezeigt werden? Momentan sieht es so aus: <% strDB = "Data Source=" & Server.MapPath("store.mdb") strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB SET objCon = Server.CreateObject("ADODB.Connection") objCon.Open strCon SET objCon = Server.CreateObject("ADODB.Connection") objCon.Open strCon strSQL = "SELECT * FROM Auto ORDER BY Hersteller" strSQL = "SELECT * FROM Auto ORDER BY Modell" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strSQL, objCon %> <table width="275"> <tr> <td><b>Automarke</b></td> <td><b>Modell</b></td> </tr> <tr> <% While Not EOF and Err=0%> <td><% =objrs("Hersteller")%></td> <td><% =objrs("Modell")%></td> </tr> <% ObjRS.MoveNext EOF = objRS.EOF Wend %> </table> <% objCon.close SET objCon = Nothing %> </td> </tr> </table> Hat da jemand eine Idee? Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 21. September 2006 Teilen Geschrieben 21. September 2006 Hi, <% While Not EOF and Err=0%> <td><% =objrs("Hersteller")%></td> <td><% =objrs("Modell")%></td> </tr> <% ObjRS.MoveNext EOF = objRS.EOF Wend %> ^^ Da ich mich mit ASP nicht auskenne, vermute ich mal, dass as die Schleife ist, die dir die Ergebnisse der DB-Abfragen liefert. Von daher sieht mein Lösungsvoschlag so aus: <!-- Selectbox für Hersteller --> <select name='hersteller'> <% While Not EOF and Err=0%> <option value='<% =objrs("Hersteller")%>'><% =objrs("Hersteller")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend %> </select> <!-- Selectbox für Modelle --> <select name='modell'> <% While Not EOF and Err=0%> <option value='<% =objrs("Modell")%>'><% =objrs("Modell")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend %> </select> ... Die Select-Boxen evtl. noch in eine Tabelle packen - wegen der Darstellung. Ich hoffe, dass ist das was du willst (und das was ich denke ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 21. September 2006 Autor Teilen Geschrieben 21. September 2006 Hallo Also erstmal Danke für deine schnelle Antwort. Also die Hersteller schreibt er mir rein aber die Modelle nicht. Aber ich glaube ich meinte ListBox. Großes Sorry !!! Da man die Einträge alle sehen soll und wenn man z.B auf den Hersteller Audi klickt sollen in der nächsten Box nebendran die Modelle von Audi angezeigt werden. Hast du da auch so eine geniale Idee? Sorry nochmal das ich mich falsch ausgedrückt habe. Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 21. September 2006 Teilen Geschrieben 21. September 2006 Hi, danke für die Blumen Also Selektbox und Listbox ist das gleiche. Du musst nur die Anzahl der Einträge festlegen, die gleichzeitig angezeigt werden sollen (Standart für <select> ist nunmal 1): <select name='Hersteller' size='5'> ... ^^ so hast du jetzt 5 Zeilen in der Listbox, bei mehr kommt ein Scrollbalken. Das die Modelle nicht klappen liegt entweder daran, dass ich an der Stelle im Code ein Fehler gemacht habe, oder (wohl) an der Datenbankabfrage deinerseits (keine Ergebnisse?) Du musst um jede Listbox ein Formular (mit namen)bauen, das die gleiche Seite nochmal aufruft. und bei den selectboxen machst du dann folgendes: <select .... onChange="document.FORMULARNAME.submit()" ..> Am besten du schaust dir da den Quelltext der Seite an, die du in deinem vorherigen Thread verlinkt hattest (Wo das fertige Beispiel schon zu sehen war). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 21. September 2006 Autor Teilen Geschrieben 21. September 2006 Ich habe mir den Quelltext ja schon angeschaut aber irgendwie kann ich es nicht so richtig umsetzen was die machen. Aber ich schau mal ob ich es irgendwie hin bekomme. Du kennst nicht zufällig ein Tutorial wo so etwas beschrieben wird? Großes Dankeschön nochmal. Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 21. September 2006 Teilen Geschrieben 21. September 2006 Nee leider nicht. Was hälst du von einer ICQ-Session? Und dann machen wir das Stück für Stück. Musst nur sagen, wann du kannst. Also in das value-Feld der SelectBox-Elemente (<option>) schreibst du am besten den wert des Primärschlüssels des jeweiligen Herstellers bzw. Modells. Beim absenden kannst du dann den Schlüssel für die nächste DB-Abfrage verwenden à la: SELECT modell_id, modell_name from modelltabelle where hersteller_id = 'ID aus abgeschicktem Formular' (oder so ) Mit dem Ergebniss füllst du dann die SelectBox (oder auch Listbox) für die Modelle ... In php und JAVA wäre das nicht so das Problem, aber ASP ist für mich ne Wissenslücke ... LG René Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 21. September 2006 Autor Teilen Geschrieben 21. September 2006 Das würdest du wirklich machen :beagolisc Das ist nämlich für die Firma und ich habe leider keinen der mir helfen kann Wann hast du denn am Wochenende Zeit? Also bei mir geht es eigentlich den ganzen Samstag. Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 21. September 2006 Autor Teilen Geschrieben 21. September 2006 Es könnte natürlich auch mit PHP und JAVA gemacht werden aber leider habe ich von PHP und JAVA nicht sehr viel Ahnung, aber programmiert habe ich mit beiden Sprachen schon. Aber nicht sehr viel. Die Sprache ist also eigentlich egal. Hauptsache es läuft im HG eine Access Datenbank. Lg Nadine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 21. September 2006 Teilen Geschrieben 21. September 2006 Ja würde ich machen. Mit einer Access-DB im HG bleiben wir wohl bei ASP. Abe schauen wir mal. Das Wochenende ist bei mir blöd, weil ich besuch bekomme, aber vllt habe ich (Vor)-Mittags Zeit, da mein Besuch selber streben muss. Ich schreib dich dann per ICQ an, wenn ich kann. Ansonsten müssen wir "Abendschule" machen nächset Woche ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 21. September 2006 Autor Teilen Geschrieben 21. September 2006 Morgen wäre auch OK. Könnte ab 9 bis 16 Uhr Wie siehts bei dir morgen aus? Lg Nadine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 21. September 2006 Teilen Geschrieben 21. September 2006 9 bis 16 Uhr? Da muss ich arbeiten. Unter der Woche bin ich ab 19:00 erreichbar. LG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 21. September 2006 Teilen Geschrieben 21. September 2006 Also die Hersteller schreibt er mir rein aber die Modelle nicht. Das Liegt daran, dass in Eytibis Code das Recordset zweimal durchlaufen werden soll, die Abbruchbedingung (EOF) aber ja schon gesetzt ist. Besser aber Quick'n'Dirty: <!-- Selectbox für Hersteller --> <select name='hersteller'> <% While Not EOF and Err=0%> <option value='<% =objrs("Hersteller")%>'><% =objrs("Hersteller")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend EOF = false ObjRS.MoveFirst %> </select> <!-- Selectbox für Modelle --> <select name='modell'> <% While Not EOF and Err=0%> <option value='<% =objrs("Modell")%>'><% =objrs("Modell")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend %> </select> HTH, ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 22. September 2006 Autor Teilen Geschrieben 22. September 2006 Super, dass klappt jetzt das er mir beide slelect Boxen füllt. Weisst du vielleicht auch wie ich es mach, dass ich z.B auf Renault in der ersten Box klick und er mir dann in der zweiten Box die Spalte Modelle_Renault anzeigt? Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 22. September 2006 Teilen Geschrieben 22. September 2006 Das hängt ein wenig von deiner Datenstrucktur ab. Hast du für Hersteller und Modelle je eine Tabelle? Solltest du zumindest. Wenn ja: Also in das value-Feld der SelectBox-Elemente (<option>) schreibst du am besten den wert des Primärschlüssels der jeweiligen DB-Tabelle. <option value='<% =objrs("Modell_ID")%>'><% =objrs("Modell")%></option> Beim absenden kannst du dann den Schlüssel für die nächste DB-Abfrage verwenden à la: SELECT modell_id, modell_name from modelltabelle where hersteller_id = 'ID aus abgeschicktem Formular' (oder so ) Mit dem Ergebniss füllst du dann die SelectBox (oder auch Listbox) für die Modelle ... Du musst beim Selektieren eines Eintrags das Formular abschicken (<select [...] onChange='this.submit()'> siehe Beispiel) und dann die abgeschickte ID (aus dem value-Feld der <option>'s) wieder fangen und für die nächste DB-Abfrage verwenden Viel Spaß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 22. September 2006 Autor Teilen Geschrieben 22. September 2006 Habe gerade erfahren das es als Hersteller nur Renault geben soll. Wenn ich auf Renault klick sollen die Modelle erscheinen. Danach soll zu den Modellen die ich dann wieder anklicken kann die passenden PS Zahlen in der nächsten Box erscheinen. Muss ich dann eine Tabelle mit Hersteller, eine mit Modelle und eine mit PS machen? Soll ich bei jeder Tabelle eine Spalte ID (AutoWert) einfügen mit einem Primärschlüssel? Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 22. September 2006 Teilen Geschrieben 22. September 2006 Ja wegen der Erweiterbarkeit für mehrere Hersteller und der Normalisierung schlage ich auch 3 Tabellen vor, die als Primärschlüssel eine ID (Autowert) haben (ist am einfachsten): Tabelle Hersteller: Hersteller_ID, Hersteller_Name, ... Tabelle Modell: Modell_ID, Modell_Name, Hersteller_ID, ... Tabelle PSZahlen: PS_ID, Modell_ID, PSZahl, ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 22. September 2006 Autor Teilen Geschrieben 22. September 2006 Hab jetzt 2 Tabellen gemacht. Eine mit dem Namen HerstellerT und jeweils 2 Spalten und eine HerstellerT mit auch jeweils 2 Spalten. Jetzt bringt er mir folgende Fehlermeldung: ADODB.Recordset (0x800A0CC1) Ein Objekt, das dem angeforderten Namen oder dem Ordinalverweis entspricht, kann nicht gefunden werden. /auswahl/index3.asp, line 21 Hab folgendes gemacht: <% strDB = "Data Source=" & Server.MapPath("store.mdb") strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB SET objCon = Server.CreateObject("ADODB.Connection") objCon.Open strCon SET objCon = Server.CreateObject("ADODB.Connection") objCon.Open strCon strSQL = "SELECT * FROM HerstellerT ORDER BY Hersteller" strSQL = "SELECT * FROM ModelleT ORDER BY Modelle" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strSQL, objCon %> <!-- Selectbox für Hersteller --> <select name='Hersteller' size='10'> <% While Not EOF and Err=0%> [COLOR="red"]<option value='<% =objrs("Hersteller")%>'><% =objrs("Hersteller")%[/COLOR]></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend EOF = false ObjRS.MoveFirst %> </select> <!-- Selectbox für Modelle --> <select name='Modelle' size='10'> <% While Not EOF and Err=0%> <option value='<% =objrs("Modelle")%>'><% =objrs("Modelle")%></option> <% ObjRS.MoveNext EOF = objRS.EOF Wend %> </select> Warum macht er denn diesen Fehler? Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 22. September 2006 Teilen Geschrieben 22. September 2006 ich kenn mich, wie gesagt, mit ASP nicht aus, aber ich tippe mal darauf, dass du die Groß- und Kleinschreibung durcheinander gebracht hast: Du verwendest objrs("Hersteller") hast aber objRS deklariert Vielleicht ist das ja das Problem. Jedenfalls kennt er objrs("Hersteller") nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 22. September 2006 Autor Teilen Geschrieben 22. September 2006 Hab beides ausprobiert.Klappt beides nicht. Habe Hersteller in der Datenbank aber auch groß geschrieben. Trotzdem Danke. Vielleicht komm ich ja selbst noch drauf. Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 22. September 2006 Teilen Geschrieben 22. September 2006 Ich meinte das Objekt objRS. Gibt es die Spalte "Hersteller" denn? Es kann eigentlich nur ein kleiner Flüchtigkeitsfehler sein Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 22. September 2006 Autor Teilen Geschrieben 22. September 2006 Ja, klar gibt es die, in der Tabelle HerstellerT gibt es eine Spalte ID_Hersteller und eine Spalte Hersteller. Deswegen versteh ich das ja nicht Lg Sunflower Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 22. September 2006 Teilen Geschrieben 22. September 2006 Ich tippe mal darauf, dass du vorher (als die Hersteller in die Liste geschrieben wurden) nur eine Spalte (abgefragt) hattest und jetzt der Rückgabetyp des objRS ein anderer ist. Hier ist so ne Art Tutorial für Abfragen aus ner Access-DB Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 22. September 2006 Autor Teilen Geschrieben 22. September 2006 Der einzige Unterschied ist, dass ich jetzt statt eine Tabelle 2 Tabellen habe. Habe mir das Tutorial zum Thema Datenbankverbindung mal durchgelsesen. Also ich fnde, dass ich das alles so gemacht habe. Lg Sunflower84 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eytibi Geschrieben 22. September 2006 Teilen Geschrieben 22. September 2006 Ich glaub ich habs: strSQL = "SELECT * FROM HerstellerT ORDER BY Hersteller" strSQL = "SELECT * FROM ModelleT ORDER BY Modelle" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.open strSQL, objCon Du überschreibts die Variable strSQL, somit werden die Hersteller gar nicht abgefragt. Entweder du fragst erst die Hersteller ab und gibst sie aus und dann die Modelle, oder du machst eine abfrage und lässt den rest so wie er ist strSQL = "SELECT HerstellerT.Hersteller, TModelle.Modelle FROM HerstellerT, MODELLET ORDER BY Hersteller" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sunflower84 Geschrieben 22. September 2006 Autor Teilen Geschrieben 22. September 2006 Du bist echt spitze. Habe den Code eingefügt und es klappt fast. Er gibt mir in der Spalte den Hersteller 3 mal aus obwohl er nur einmal in der Tabelle steht. In der Tabelle Modelle stehen 3 Einträge. Die gibt er mir richtig aus. Wäre lieb wenn du mir den Code mal kurz erklären könntest. Außerdem hast du mir einen Tip gegeben wie ich die Access Tabelle gestalten könnte. Dazu hätte ich auch eine Frage: Wie erstelle ich denn Fremdschlüssel in Access? Wenn ich deine Erklärung von vorhin richtig verstanden habe müssen da Fremdschlüssel rein, oder? Da in die Tabelle von PS ja die Modell_ID mit rein soll. Lg Sunflower84 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.