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?
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.
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?
Ist hier vielleicht ein ' oder ein " falsch?
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.
bei 87 kommt es aus einer Tabelle
SELECT DISTINCT [tblmassnahmedurchgaenge].Maßnahmedurchgang FROM tblmassnahmedurchgaenge ORDER BY [tblmassnahmedurchgaenge].Maßnahmedurchgang DESC;
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?
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) & "'"
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.
Hallo Klaus,
ja, sorry, hatte nicht alles gelesen... :-[
Aber vielleicht hilft hier: dreifach genäht hält besser... ;)
Hallo Franz,
der Hinweis galt eher Arndt als Dir.
Es sollte ihn animieren genauer zu lesen. ;D
Hi,
ja, klar, deshalb auch die rote/blaue Farbe 8)
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.
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
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.
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!!
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 ?
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 & '*"
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?
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
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
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.
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.