Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Liste abhängig von Eingabe

Begonnen von dfone, Januar 15, 2013, 16:37:58

⏪ vorheriges - nächstes ⏩

dfone

hallo Harald,

hab ma ne Frage,

Ich finde die Ortsauswahl im Formlarkopf doppelt gemoppelt, es würde doch ausreichen, wenn ich daß obere Kombifeld (cbo_PLZ) zur Ortsauswahl nutze, dort kann ich doch schon die Orte eindeutig auswählen.

Das untere Kombifeld (cbo_Ort) könnte man doch in ein Textfeld wandeln, was dann lediglich noch den Ort zur Postleitzahl als Info anzeigt.

Ansonsten ist es schon super, daß ich im cbo_Adresse die "abhängige" Straße auswählen kann.

mfg Dirk

dfone

#16
Mahlzeit,

Hab es, glaub ich, selber hinbekommen Harald.

Ich hab ein Textfeld hinzugefügt (txtfld_Ort) und dort bei Steuerelementinhalt =[cbo_PLZ].[Column](2) eigefügt.

Danach habe ich das Ereignis von cbo_Adresse so geändert:

Private Sub cbo_Adresse_Enter()
   Dim Bedingung As String
   
   If (Me.NewRecord Or Nz(Me.cbo_Adresse, "") = "") And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then
       Bedingung = ""
           
       If Nz(Me.cbo_PLZ, "") > "" Then Bedingung = Bedingung & " and tblPLZ.Postleitzahl='" & Me.cbo_PLZ.Column(1) & "'"
       If Nz(Me.txtfld_Ort, "") > "" Then Bedingung = Bedingung & " and tblPLZ.Ort='" & Me.txtfld_Ort & "'"
       
       Bedingung = Mid(Bedingung, 6)
   End If
   
   Me.cbo_Adresse.RowSource = "SELECT tblAdressen.Adresse_ID, tblPLZ.Postleitzahl, tblPLZ.Ort, tblAdressen.Strasse, tblAdressen.ZusatzInfo FROM tblPLZ RIGHT JOIN tblAdressen ON tblPLZ.PLZ_ID = tblAdressen.PLZ_ID " & _
                              IIf(Bedingung > "", "WHERE " & Bedingung, "") & _
                              " ORDER BY tblPLZ.Postleitzahl, tblPLZ.Ort, tblAdressen.Strasse;"

End Sub

Also die Bedingungen für cbo_Adresse geändert und auf das txtfld_Ort gelenkt.

Jetzt ist nur noch folgendes Problem, wenn ich nen Arzt im Detailbereich auswähle, welcher schon eine Adresse hat, dann funktioniert es nicht mehr, dann bekomm ich alle Adressen im cbo_Adresse angezeigt.
Läßt sich das auch noch mit in die Filterung einbauen?


Freu... Mfg Dirk

bahasu

Hi Dirk,
Zitat
Ich finde die Ortsauswahl im Formlarkopf doppelt gemoppelt, es würde doch ausreichen, wenn ich daß obere Kombifeld (cbo_PLZ) zur Ortsauswahl nutze, dort kann ich doch schon die Orte eindeutig auswählen.

Es gab mindestens eine PLZ, die 3 Orte hatte.
Wenn es trotzdem vereinfacht werden soll, muß die bei Ort stehende VBA-Routine bei der PLZ aufgenommen werden und um den Bedingungsteil mit dem Ort gekürzt werden. Die kürzung betrifft dann auch den unten folgenden Teil.


Zur zweiten Meldung:
Probier mal als Schnellschuß {ist ungetestet}:
statt:     If (Me.NewRecord Or Nz(Me.cbo_Adresse, "") = "") And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then
dann:     If Nz(Me.cbo_Adresse, "") = "" And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then

Ansonsten stell die aktuelle db-Version in komprimierter + gezippter Form hier zur Verfügung, damit ich daran basteln kann.

Harald

Servus

dfone

Hi Harald,

Dein Versuch

ZitatProbier mal als Schnellschuß {ist ungetestet}:
statt:     If (Me.NewRecord Or Nz(Me.cbo_Adresse, "") = "") And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then
dann:     If Nz(Me.cbo_Adresse, "") = "" And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then

bringt leider nix.

meine Version hängt an

[Anhang gelöscht durch Administrator]

bahasu

Hi,

anbei eine Version.
Hoffentlich hatte ich Dein Anliegen korrekt verstanden.

Harald

[Anhang gelöscht durch Administrator]
Servus

dfone

so würde es schon gehen,

nach auswahl des ortes im formularkopf bringt es mir trotz schon vorhandener adresse auch die zm ort gehörenden straßen.

noch ne klitzekleine frage, wäre es auch möglich, die straßenauswahl einerseits vom cbo_PLZ und von adresse_ort abhängig zu machen, also daß ich entweder oben im cbo_PLZ den ort wähle und die entsprechenden straßen im cbo_adresse bekomm

oder eben falls arzt schon adresse hat, den ort anstatt vom cbo_plz aus dem feld adresse_ort nutze. so daß dann nur cbo_adresse auswählen muß.

also, wenn ich nur die straße ändern möchte, dh. der ort bleibt gleich, kann ich direkt im cbo_adresse entsprechende straße wählen.
wenn ich jedoch den ort mitändern muß, dann halt der weg über cbo_plz und dann cbo_adresse. so wie es jetz ja geht.

mfg dirk


bahasu

Hi,

ein paar "kleine" Änderungen anbei.
Wenn im Detailbereich plz eingetragen ist, kann der Ort noch geändert werden.
Wenn der Ort eingetragen ist kann in "Strasse" der Inhalt geändert werden.

"Strasse" ist von Ort + PLZ + der PLZ aus dem Formularkopf abhängig
Ort ist von PLZ (Detailbereich) + PLZ (Kopf) abhängig
PLZ (Detailbereich) ist von PLZ (Kopf) abhängig.

Jetzt stellt sich mir die Frage, ob Du überhaupt noch die Vorauswahl im Formularkopf benötigst.

Harald

[Anhang gelöscht durch Administrator]
Servus

dfone


dfone

ich denke, so komm ich nun zurecht.

gilles_de_rais

Hallo,
ich habe ebenfalls nach Vorbild des Beispiels auf Donkarls Seite eine Abhängigkeit gebastelt. Allerdings sind die beiden Kombifelder nicht in einem Formular, sondern das eine im Formular, das andere im Ufo.

Ich habe mehrere Varianten ausprobiert, jedoch bleibt in jedem Fall die abhängige Liste leer. Ebenso habe ich probiert, eine Kombiliste im gleichen Formular an die abhängige Kombiliste zu binden. Das Ergebnis bleibt ebenfalls das gleiche.

Folgendes habe ich unter Datensatzherkunft eingegeben:

Me!cboWartung_Auswahl.RowSource = "SELECT [tblWochenwartung].[woch_ID], [tblWochenwartung].[woch_einheit], [tblWochenwartung].[woch_art], [tblWartungAuswahl].[aus_wahl_ID] FROM [tblWochenwartung], [tblWartungAuswahl] WHERE [tblWochenwartung].[woch_art] = " &Me![tblWartungAuswahl].[aus_wahl_ID] ORDER BY [woch_ID];

Im Anhang ein Screenshot, der zumindest die Beziehungen sowie das fragliche Formular abbildet. Wenn es hilft, lade ich aber auch gerne die Datenbank hoch. Vielleicht kann ja aber so bereits jemand sehen, was ich offensichtlich falsch gemacht habe.


Lachtaube

Mit dem überlangen Einzeiler (ist der Editor auch in Wartung?), der keinen gültigen VBA-Code darstellt, lässt sich wenig bis nichts anfangen. Das gleiche gilt für den Bild-Upload.

Mit einer abgespeckten Beispiel-DB mit einigen Spieldaten kann Dir vermutlich am ehesten geholfen werden.
Grüße von der (⌒▽⌒)

gilles_de_rais

#26
Ja, dass der Code so nicht richtig formatiert ist, war mir irgendwie ja klar. Ist nur die letzte Fassung dessen, was ich alles schon ausprobiert habe.

Anbei mal eine abgespeckte Variante meiner DB.

Gruß,
Dennis

Beaker s.a.

Hallo,
ZitatAllerdings sind die beiden Kombifelder nicht in einem Formular, sondern das eine im Formular, das andere im Ufo.
Me!NameUFoControl.Form!cboWartung_Auswahl.RowSource = ...
(siehe auch http://www.donkarl.com?FAQ4.2)
Ob überhaupt Datensätzen zurück geliefert werden musst du selber rausfinden.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

gilles_de_rais

Vielen Dank für die Antwort. Gut möglich, dass mir das schon weiter hilft. Mir ist aber gerade ein Phänomen aufgefallen, das mich daran zweifeln lässt.

Und zwar führt selbst die Eingabe von

SELECT woch_einheit FROM tblWochenwartung

unter Datensatzherkunft zu einem Kombi ohne Inhalt.

Selbst wenn ich den Abfragegenerator einsetze, der genau diesen Code abbildet, bleibt das Kombi leer. Wähle ich unter Datensatzherkunft tblWochenwartung aus, wird mir jedoch alles so angezeigt, wie gewünscht. Gebe ich selbst tblWochenwartung ein, bleibt das Kombi wiederum leer.

Ich fürchte, ich mache etwas Grundlegendes falsch, da ich jetzt mal nicht davon ausgehe, dass Access 2016 nicht richtig läuft... Ich wäre für jeden Hinweis dankbar.

Gruß,
Dennis

MzKlMu

Hallo,
wie sind denn die Spaltenbreite(n) des Kombifeldes eingestellt ?
Gruß Klaus