![]() |
|
![]() |
#1 |
(Email-Bestätigung fehlt!)
|
![]() Hallo zusammen...
ich habe ein problem mit dropdownlisten! wenn ich z.b die Dropdownliste (DDL) "CPU" aufrufe, möchte ich, dass in einer 2ten DDL nur (!) die CPUs stehen und in einer dritten, ein Preis fuer den ausgewählten CPU in Liste 2. Wie kann man das bewerkstelligen? ich habe es bereits mit der Access Hilfe probiert, aber kein erfolg ![]() best wishes stefanovic |
![]() |
![]() ![]() |
![]() |
#2 |
![]() Hallo Stefan,
zum einen und rein begrifflicher Natur handelt es sich um Kombinationsfeldsteuerelemente oder einfach Kombinationsfelder. DROPDOWN ist eine Methode eines Kombinationsfeldes zum öffnen der Liste. Um nun Deine Problem zu lösen: Im Kombinationsfeld cboKategorie hinterlegst als Datenherkunft Du eine SQL-Anweisung wie: SELECT DISTINCT Kategorie FROM tblArtikel; Das Kombinationsfeld cboProduct enthält die SQL: SELECT Productname, Preis FROM tblArtikel WHERE Kategorie = Forms!frmDeinFormular!cboKategorie; die zweite Spalte (mit dem Preis) setzt Du auf Spaltenbreite 0 (= nicht sichtbar) Als drittes Feld ist ein einfaches Textfeld vorzuziehen, da ja eigentlich nur ein Preis für das entsprechende Produkt gültig ist. Dieser kann dem zweiten Kombinationsfeld nach Auswahl entnommen werden. Im Ereignis "Nach Aktualisierung" des Kombinationsfeldes cboKategorie hinterlegst Du eine Ereignisprozedur mit dem Code Me.cboProduct.Requery Hierdurch wird das zweite Kombinationsfeld automatisch auf die Produktkategorie eingeschränkt. Im gleichen Ereignis des Kombinationsfeldes cboProduct hinterlegst Du eine Ereignisprozedur mit Me.txtPreis.Value = Me.cboProduct.Column(1) Dadurch wird der in der zweiten (!!) Spalte stehende Preis des gewählten Produkts in das Textfeld txtPreis übertragen. In der zweiten Spalte, weil der Spaltenindex von Kombinationsfelder (und Listenfeldern) bei 0 beginnt. Gruß Arno |
|
![]() ![]() |
![]() |
#3 |
Threadstarter
![]() (Email-Bestätigung fehlt!)
|
![]() Wow, das ging ja fix
![]() Danke (ob ichs hinbekomme is die andere frage ![]() |
![]() |
![]() ![]() |
![]() |
#4 |
Threadstarter
![]() (Email-Bestätigung fehlt!)
|
![]() hm, irgendwie bekomme ich das nicht hin!
![]() wenn ich z.B. me.cboprodukt.requery angebe, sagt mir Access, dass es das makro "me" nicht finden kann usw... (ich verwende access 2000 sr-1) weiterführend kann ich zwar alle kategorien anwählen aber kann trotzdem nur auf die produktgruppe zugreifen (z.B. CPU) die ich als erstes angewählt habe - auch wenn ich z.B. Monitore auswähle, habe ich im cboProdukte nur CPUs... ![]() Gibt es irgendwo eine .mdb, wo ich mir das anschauen kann? ![]() vielleicht könntest du mir ein kleines Beispiel geben, wäre nett! sonst steh ich morgen ohne ein projekt in der schule ![]() |
![]() |
![]() ![]() |
![]() |
#5 |
![]() Kann es sein, das Du versucht hast, das von mir angegebene in einem Makro unterzubringen und nicht wie angegeben in einer Ereignisprozdur?
Gruß Arno |
|
![]() ![]() |
![]() |
#6 |
Threadstarter
![]() (Email-Bestätigung fehlt!)
|
![]() das habe ich gemacht:
1. Tabell tblartikel angelegt mit spalten Kategorie, Artikel und Preis 2. Formular angelegt mit Dropdownliste cboKategorie -> datensatzherkunft: select distinct Kategorie from tblartikel 3. Nochmal DDL cboProdukte mit datensatzherkunft: select produkt, preis from tblartikel where kategorie=forms!formular1!cbokategorie; 4. unter ereignis in cboprodukte bei "nachaktualisierung" me.cboprodukte.requery 5. dann wollte ich mal testen und dann kommt diese Meldung mit von wegen Makro "me" nicht gefunden... ich verzweifel noch ![]() |
![]() |
![]() ![]() |
![]() |
#7 |
![]() Hallo Stefan,
danke für die ausführliche Beschreibung dessen was Du gemacht hast ![]() Der Fehler liegt in Schritt 4: Hier ist die Ereigniseigenschaft auf "[Ereignisprozedur]" einzustellen. Führe dazu einfach einen Doppelklick auf das Eingabefeld auf. Anschließende folgst Du dem am Ende des Eingabefeldes stehenden "3-Punkte-Button" und fügst in der dann erscheinenden Ereignisprozedur das von mir benannte Coding ein. Gruß Arno |
|
![]() ![]() |
![]() |
#8 |
Threadstarter
![]() (Email-Bestätigung fehlt!)
|
![]() ![]() ![]() ![]() juhuu, es funktioniert!!!!!!!!!!!! Zitat: die zweite Spalte (mit dem Preis) setzt Du auf Spaltenbreite 0 (= nicht sichtbar) ![]() ![]() |
![]() |
![]() ![]() |
![]() |
#9 |
![]() Die von mir angegebene SQL
SELECT Product, Preis FROM tblArtikel WHERE Kategorie = Forms!frmDeinFormular!cboKategorie; liefert an das Kombinationsfeld 2 Spalten bzw. Felder zurück: Product und Preis. Die Eigenschaft "Spaltenanzahl" des Kombinationsfeldes cboProduct muß auf 2 stehen, die Eigenschaft "Gebundene Spalte" auf 1 (eben den Produktnamen). Dann gibt es noch die Eigenschaft "Spaltenbreite", welche Angaben über alle im Kombinationsfeld enthaltenen Spalten enthalten sollte. Damit im Kombinationsfeld nur die Produktnamen - aber nicht die Preise - angezeigt werden, stellst Du diese Eigenschaft auf z.B. 2,5 cm; 0 Cm ein, wodurch dann nur die Produktnamen aber eben nicht die Preise (da deren Spalte 0 cm breit sind) angezeigt werden. Gruß Arno |
|
![]() ![]() |
![]() |
#10 |
Threadstarter
![]() (Email-Bestätigung fehlt!)
|
![]() ![]() ![]() da gibts nur noch eine ungereimtheit: ich habe momentan 2 Kategorien: CPU und Monitore jetzt wähle ich CPUs aus und wähle bei Produkte z.B. P4 jetzt sieht es so aus: |CPUs| |P4| |200| Kategorie Produkt Preis wähle ich jetzt statt CPUs Monitore aus passiert folgendes ich bekomme als Kategorie wie gewünscht "monitore" unter Produkte kann ich aber nur (!) den P4 auswählen anstatt belinea und Preis bekomme ich gar keinen... ungefähr so siehts aus |Monitore| |P4| | | Kategorie Produkt Preis und jetzt, wenn ich wieder CPUs anwähle, bekomme ich als Produkte den Belinea Monitor aufgelistet (wieder kein Preis) wähle ich wieder Monitore aus, bekomme ich den P4 aufgelistet! An tblartikel liegt es nicht, dort stimmt alles... ![]() ![]() ![]() |
![]() |
![]() ![]() |
![]() |
#11 |
![]() Hast Du auch das Ereignis "Nach Aktualisierung" des Kombinationsfeldes für die Kategorie genommen und nicht "Vor Aktualisierung"?
Gruß Arno |
|
![]() ![]() |
![]() |
#12 |
Threadstarter
![]() (Email-Bestätigung fehlt!)
|
![]() jo,
![]() cboprodukt - nach aktualisierung: im codeeditor steht nun folgendes: private sub cboprodukt_afterupdate () me.cboprodukt.requery me.txtpreis.value = me.cboprodukt.column(1) (gehört da nicht 2 hin ![]() end sub |
![]() |
![]() ![]() |
![]() |
#13 |
![]() Hallo Stefan
Zitat: Original geschrieben von A.S. Gruß Arno |
|
![]() ![]() |
![]() |
#14 |
Threadstarter
![]() (Email-Bestätigung fehlt!)
|
![]() ![]() ok, hab ich übersehen... aber leider besteht das Problem immer noch |
![]() |
![]() ![]() |
![]() |
#15 |
![]() Das
me.cboprodukt.requery gehört nicht in das Nachaktualisierungsereignis von cboprodukt sondern in das entsprechende Ereignis von cbokategorie. Gruß Arno |
|
![]() ![]() |