Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Arndt am Juni 21, 2016, 17:29:57

Titel: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 21, 2016, 17:29:57
Hallo Leute, wieder eine Frage

Ich habe EIN Formular, basierend auf einer Tabelle. Und zwei Listenfelder. Siehe Abbildung.


Liste87 funktioniert korrekt.
Wenn man in Liste87 einen Wert anklickt, dann erscheinen in Liste217 alle Datensätze angezeigt, die diesen Wert im Feld massnahmedurchgang haben. Angezeigt wird in Liste217 der Wert des Feldes Nachname.

Feld217 funktioniert aber nicht korrekt.
Wenn man hier einen der Werte Nachname anklickt, dann soll das Formular auf diesen Datensatz springen. Erkennbar an den Feldern, auf die der rote Pfeil in der Abbildung zeigt.

Macht es aber nicht. Hier die Ereignisprozedur

Private Sub Liste217_AfterUpdate()
Me.Filter = "Nachname = '" & Me!Liste217.Column(0) & "'  and Vorname= '" & Me!Liste217.Column(1) & "'"
Me.FilterOn = True

End Sub

Private Sub Liste87_AfterUpdate()
    Me!Liste217.RowSource = "select * from [tblteilnehmer] Where maßnahmedurchgang = '" & Me!Liste87.Column(0) & "'"
   
End Sub


Was ist hier falsch?
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: MzKlMu am Juni 21, 2016, 17:40:57
Hallo,
ZitatWas ist hier falsch?
alles.  ;D
Suchen und Filtern erfolgt immer mit dem Primärschlüssel. Die Teilnehmertabelle hat ja eine ID.
Die RowSource eines Listenfeldes benötigt die richtige Reihenfolge der Felder. Daher ist der * ungeeignet, hier müssen die Felder in der gewünschten Reihenfolge einzel genannt werden.
Und wenn mit der ID gefiltert wird, ist auch nur ein Kriterium erforderlich.

Der Sinn eines Primärschlüssels ist den Datensatz eindeutig zu identifizieren. Daher erfolgt Suchen und Filtern immer mit dem PS.
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 21, 2016, 17:45:49
Kannst Du mir bitte mal einen Vorschlag machen?

Me!Liste217.RowSource = "select * from [tblteilnehmer] Where maßnahmedurchgang = '" & Me!Liste87.Column(0) & "'"

Also von mir verstanden wird: "wähle alles von [tblteilnehmer] wo maßnahmedurchgang der Anzeige der Liste87 entspricht.

Wie muss es statt dessen heißen?
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 21, 2016, 17:49:33
Ist hier vielleicht ein ' oder ein " falsch?
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: MzKlMu am Juni 21, 2016, 18:27:51
Hallo,
ich habe keine Ahnung wie das alles zusammenhängt.
Der * ist wie gesagt völlig ungeeignet, hier müssen die Felder in der richtigen Reihenfolge einzeln genannt werden.

Zeige mal die Datenherkunft von Liste87.
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 21, 2016, 18:43:59
bei 87 kommt es aus einer Tabelle

SELECT DISTINCT [tblmassnahmedurchgaenge].Maßnahmedurchgang FROM tblmassnahmedurchgaenge ORDER BY [tblmassnahmedurchgaenge].Maßnahmedurchgang DESC;

Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 21, 2016, 21:48:53
Ich habe die Datei in den Anhang gestellt.

Im Formular SAstreichholz gibt es ein Listenfeld 217, das nicht funktioniert. Das Formular springt nicht auf den ausgewählten Datensatz, wenn man in diesem Listenfeld einen Eintrag anklickt. Das kann man unter anderem daran erkennen, dass im Feld "Nachname" der Nachname nicht erscheint.

Vermutlich handelt es sich nur um einen einfachen Einstellungsfehler, ein winzig kleines Problem, das ich als Laie aber nicht aus eigener Kraft erkennen kann und das ich deshalb gern von einem Profi heraus finden lassen würde.

Gibt es jemanden, der dieses vermutlich sehr einfache – aber für mich unlösbare Problem erkennen und beheben kann?
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: DF6GL am Juni 21, 2016, 22:25:12
Hallo,


hier:
ZitatPrivate Sub Liste87_AfterUpdate()
    Me!Liste217.RowSource = "select * from [tblteilnehmer] Where maßnahmedurchgang = '" & Me!Liste87.Column(0) & "'"
   
End Sub
müssen die Feldnamen in der Select-Liste in derjenigen Reihenfolge auftreten, wie sie später weiter verwendet werden sollen:
ZitatPrivate Sub Liste87_AfterUpdate()
    Me!Liste217.RowSource = "select Nachname, Vorname  from [tblteilnehmer] Where maßnahmedurchgang = '" & Me!Liste87.Column(0) & "'"
   
End Sub
für

ZitatMe.Filter = "Nachname = '" & Me!Liste217.Column(0) & "'  and Vorname= '" & Me!Liste217.Column(1) & "'"
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: MzKlMu am Juni 21, 2016, 22:53:06
Hallo,
Zitatmüssen die Feldnamen in der Select-Liste in derjenigen Reihenfolge auftreten, wie sie später weiter verwendet werden sollen:
Das habe ich in #1 und #4 auch schon geschrieben.
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: DF6GL am Juni 22, 2016, 07:37:14
Hallo Klaus,

ja, sorry, hatte nicht alles gelesen...  :-[


Aber vielleicht hilft hier: dreifach genäht hält besser...   ;)
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: MzKlMu am Juni 22, 2016, 12:08:13
Hallo Franz,
der Hinweis galt eher Arndt als Dir.
Es sollte ihn animieren genauer zu lesen.  ;D
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: DF6GL am Juni 22, 2016, 13:03:01
Hi,

ja, klar, deshalb auch die rote/blaue Farbe    8)
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 22, 2016, 17:42:27
Zitat von: DF6GL am Juni 22, 2016, 13:03:01
Hi,

ja, klar, deshalb auch die rote/blaue Farbe    8)

Das Ding ist nicht, dass ich es nicht genau lese. Ich verstehe es nur nicht, weil ich die Begriffe nicht kenne. Aber es wird ja schrittweise besser. Zum Beispiel hat mir Franzens Beispiel besser klar gemacht was Du gemeint hast.
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 22, 2016, 18:15:39
Zitat von: DF6GL am Juni 21, 2016, 22:25:12
Hallo,
ZitatMe.Filter = "Nachname = '" & Me!Liste217.Column(0) & "'  and Vorname= '" & Me!Liste217.Column(1) & "'"

Danke für die Korrektur, ich kann jetzt erkennen was gemeint ist und selbständig für andere Zwecke einsetzen.

Weißt Du auch, wie ich das hier ans Laufen bekomme?

Private Sub txtNachname_Change()
Me.Filter = "Nachname Like '" & Me!txtNachname & "*'"
Me.FilterOn = True
End Sub

Arndt
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: DF6GL am Juni 22, 2016, 18:42:51
Hallo,

Was geht denn nicht? Und wie genau willst Du filtern?

Der Code als solches scheint i. O. zu sein....Soll heißen:  jedes Mal, wenn im Feld "txtNachname" ein Zeichen eingegeben wird, werden alle DS angezeigt, bei denen der Nachname  mit dem/den eingegebenen Zeichen am Anfang übereinstimmt.
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 22, 2016, 20:23:17
Zitat von: DF6GL am Juni 22, 2016, 18:42:51
Hallo,

Was geht denn nicht? Und wie genau willst Du filtern?

Ich möchte, dass entweder
* das Formular auf den ersten DS springt, für den die bereits eingegebene Ziffernfolge zutrifft, also zum Beispiel bei eingegeben "Müll" zu Müller.
* oder dass im Listenfeld217 alle Namen stehen, für die die eingegebene Ziffernfolge zutrifft, z.B. bei "Müll" Müller, Müllichen, Müllermann usw.

Danke für Deine Hilfe!!
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: MzKlMu am Juni 22, 2016, 20:30:30
Hallo,
bei Daten(banken) muss man oft auch kleinlich sein, was die Nomenklatur betrifft.
Ich sehe bei Deinen Eingaben keine Ziffern, sondern nur Buchstaben.  ;D

Der gezeigte Code scheint richtig zu sein. Was funktioniert denn nicht ?
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: DF6GL am Juni 22, 2016, 20:39:05
Hallo,

zu *)
  das sollte (fast) genauso funktionieren...  Voraussetzung ist ein an die Tabelle gebundenes Formular.
Es wird zwar nicht auf den ersten (Formular-Recordset-)DS gesprungen, sondern das Formular zeigt lediglich alle passenden DS an. Durch die Filterung wird als Nebeneffekt der Cursor auf den ersten angezeigten DS gesetzt.


zu *) 

Me!Listenfeld217.Rowsource = "select Nachname, Vorname  from [tblteilnehmer] Where Nachname like '" & Me!txtNachname & '*"
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 22, 2016, 20:48:51
Ich habe noch eine andere Frage:

Ich habe von dem Formular und dem UFO eine Kopie angefertigt und in dem Formular sowie in der Ereignisprozedur neue Bezeichnungen für die Liste angelegt, indem ich überall eine "1" angehängt habe. Das Listenfeld funktioniert jetzt aber nicht mehr. Woran könnte der Fehler liegen? Was habe ich nicht beachtet?

Wie kopiert man in der Arbeit mit Access Steuerelemente am effektivsten, damit die Funktionen in einem anderen Formular verfügbar sind?
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 22, 2016, 20:52:26
Zitat von: MzKlMu am Juni 22, 2016, 20:30:30
Der gezeigte Code scheint richtig zu sein. Was funktioniert denn nicht ?

Ich habe in #6 die DB hochgeladen
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Beaker s.a. am Juni 22, 2016, 21:55:40
Hallo,

ZitatEs wird zwar nicht auf den ersten (Formular-Recordset-)DS gesprungen
Das lässt sich über die Bookmark-Eigenschaft aber auch realisieren.

gruss ekkehard
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: MaggieMay am Juni 22, 2016, 22:34:35
Hallo,

ZitatIch habe von dem Formular und dem UFO eine Kopie angefertigt

zu welchem Zweck?! Was kannst du mit der Kopie besser lösen als mit dem Original?

Anstatt Kopien von Formularen oder Berichten zu erstellen, um minimal abweichende
Varianten umsetzen zu können, sollte man evtl. mal über die Steuerung der Varianten
innerhalb der Objekte nachdenken.
Titel: Re: Navigation mit zwei Listenfeldern
Beitrag von: Arndt am Juni 22, 2016, 22:54:30
Zitat von: MaggieMay am Juni 22, 2016, 22:34:35
Anstatt Kopien von Formularen oder Berichten zu erstellen, um minimal abweichende
Varianten umsetzen zu können, sollte man evtl. mal über die Steuerung der Varianten
innerhalb der Objekte nachdenken.

Das ist für mich zu kompliziert, ich kann nicht einmal alle Antworten verstehen, die hier gegeben werden und muss mich durch jede durchbeißen.

Und mir wäre schon besser bei dem Gedanken, dass ich ein Steuerelement, das ich so aufwendig ans laufen bekommen habe, auch irgendwo nachbauen kann.

Besser wäre es natürlich, Du nähmst einen Auftrag von mir an und baust mir das zusammen, dann kann mich endlich der inhaltlichen Arbeit widmen, um die es mir eigentlich geht.