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.

Datenbankeinträge in select Box schreiben

Empfohlene Antworten

Veröffentlicht

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

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 ;) )

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

Hi,

danke für die Blumen :D

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

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

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é

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

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

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

Morgen wäre auch OK.

Könnte ab 9 bis 16 Uhr

Wie siehts bei dir morgen aus?

Lg

Nadine

9 bis 16 Uhr? Da muss ich arbeiten.

Unter der Woche bin ich ab 19:00 erreichbar.

LG

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

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

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ß ;)

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

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

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

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

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

Ich meinte das Objekt objRS.

Gibt es die Spalte "Hersteller" denn? Es kann eigentlich nur ein kleiner Flüchtigkeitsfehler sein ;)

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

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

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

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"

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

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.