Per Doppelklick im Listenfeld zum Datensatz

Hallo zusammen,

zuerst mal:
Ja, mein VBA-Kompendium ist schon bestellt, ohne wird’s sonst nix :smiley:
(wegen: Access ohne VBA ist wie fahren ohne Räder)

Da es aber wohl erst nächste Woche kommt, nun meine Frage:

Ich habe 2 Formulare, im 1.(frmKunden) werder die Daten aus meiner Tabelle(Kunden) angezeigt. Über ein Textfeld(btSuche) öffne ich von dort per Ereignis das 2.(frmSuche). Es enthält ein Listenfeld(lbSuche), ein Textfeld(dfSuche) und einem Textfeld(sSuche) und bezieht seine Daten aus einer Abfrage(abKunden).
Durch’s Forum hab ich es schon hinbekommen, dass bei Eingabe in dfSuche alle Datensätze im Listenfeld angezeigt werden, die die dort eingegebenen Zeichen enthalten an. So weit, so gut.

Was muss ich nun beim Ereignis „Beim doppelklicken“ von lbSuche eingeben, dass der angeklickte Datensatz im frmKunden angezeigt wird?

Gruss Rico

Hallo Rico,

zuerst mal:
Ja, mein VBA-Kompendium ist schon bestellt, ohne wird’s sonst
nix :smiley:
(wegen: Access ohne VBA ist wie fahren ohne Räder)

genau :wink:

Ich habe 2 Formulare, im 1.(frmKunden) werder die Daten aus
meiner Tabelle(Kunden) angezeigt.

und diese Tabelle hat ein ID-Feld mit dem Feldtyp = Autowert

Über ein Textfeld(btSuche) öffne ich von dort per Ereignis das 2.(frmSuche).

Das verstehe ich nun nicht? Warum ein Textfeld? Warum nicht per Taste( Button)

und warum überhaupt ein zweites Formular? Dazu später mehr*

Es enthält ein Listenfeld(lbSuche),

  • ok, das verstehe ich, und welche Felder werden darin angezeigt?

ein Textfeld(dfSuche) und einem

  • warum wofür noch ein Textfeld?

Textfeld(sSuche)

  • warum wofür noch ein Textfeld?

und bezieht seine Daten aus einer
Abfrage(abKunden).

  • ?? das Formular, oder das Listenfeld?

Durch’s Forum hab ich es schon hinbekommen, dass bei Eingabe
in dfSuche alle Datensätze im Listenfeld angezeigt werden, die
die dort eingegebenen Zeichen enthalten an. So weit, so gut.

Was muss ich nun beim Ereignis „Beim doppelklicken“ von
lbSuche eingeben, dass der angeklickte Datensatz im frmKunden
angezeigt wird?

DoCmd.OpenForm „meinKundenformular“,"[ID] = " & Me.lbSuche
Dabei ist zu beachten, dass das ERSTE Feld(Spalte) im Listenfeld die ID der Kundentabelle ist!!

aber …*

ich würde es so machen:

  • Kundenformular öffnen zum Bearbeiten
  • Kopf- und Fußzeile einblenden
  • Symbolleiste >Toolbox Suche eintippen
  • [Fertig stellen]

und schon hast du eine fertige Suchfunktion :smile:

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Danke Wolfgang für die schnelle Antwort…

ich will ja auch keine Suchfunktion, sonder einen Filter für’s Listenfeld, da bei 5400 Datensätzen zum Teil der Name Meier 20x vorkommt, nur jeweils unter einer anderen Adresse. Bei der Suchfunktion zeigt er mir ja im Kombi-Feld dann nur einen an.
Da ich leider noch nicht sooo firm bin, hab ich das was jetzt kommt aus KnowHow Version 3.0 von Klaus Oberdalhoff (www.freeaccess.de) übernommen und angepasst.

Deshalb auch in einem anderen Formular(frmSuche), wo im Listenfeld Name, Strasse, PLZ und Ort angezeigt werden. Das Listenfeld bezieht seine Daten aus der Abfrage. Bei Datensatzherkunft hab ich im Abfrage-Generator also die Felder: Name (mit Kriterium „“), Strasse, PLZ und Ort. Des weiteren einen Ausduck, der da heißt:
Ausdr1: [abKunden]![Name] & [abKunden]![Strasse] & [abKunden]![PLZ] & [abKunden]![Strasse]
mit Kriterium
Wie „*“ & [sSuche] & „*“

Im Textfeld dfSuche hab ich folgendes Ereignis (bei Änderung):

Private Sub dfSuche_Change()

sSuche = dfSuche.Text
DoCmd.Hourglass True
lbSuche.Requery
DoCmd.Hourglass False
Me!dfSuche.SetFocus

End Sub

Wie gesagt, ich habs übernommen und angepasst ***warte ungedulgig auf mein Kompendium*** und die Filterfunktion funzt ja auch super, nur wie komm ich jetzt ins Kundenformular und bekomm den angeklickten Datensatz dann dort angezeigt?

Ich hoffe, ich habe alles soweit mit meinen Worten einigermaßen rüberbringen können.

Gruss Rico

Hallo Rico,

Danke Wolfgang für die schnelle Antwort…

Kein Problem, der Premiumdient ist aktiviert und ich sitze gerade vor dem Pc :smile:

ich will ja auch keine Suchfunktion, sonder einen Filter für’s
Listenfeld, da bei 5400 Datensätzen zum Teil der Name Meier
20x vorkommt, nur jeweils unter einer anderen Adresse.

schon klar…

Bei der
Suchfunktion zeigt er mir ja im Kombi-Feld dann nur einen an.

Irrtum des Amtes, probiere es aus… du wirst feststellen, dass du nicht nur den Nachnamen, den Vornamen und Ort sowie Straße im Kombinationsfeld darstellen kannst. Somit ist die Auswahl idial!

Wie gesagt, ich habs übernommen und angepasst ***warte
ungedulgig auf mein Kompendium*** und die Filterfunktion funzt
ja auch super, nur wie komm ich jetzt ins Kundenformular und
bekomm den angeklickten Datensatz dann dort angezeigt?

so wie ich geschrieben habe…
Ereignis = Bei Doppelklick: [Ereignisprozedur] […] klicken und den einen Satz Docmd… eintragen.

Nicht vergessen in deiner Abfrage die ID nach ganz vorne zu stellen!

In den Eigenschaften deiner Liste:

Die Anzahl der Spalten anpassen …

Trick: dann die Spaltengröße für die erste Spalte auf 0 stellen (die dann die unsichtbare aber wichtige ID enthält) und die weiteren je Spalte mit ca. 4 cm definieren.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolfgang,

Hab es jetzt in beiden Varianten probiert und muss sagen:

DU HAST RECHT!

Deine Variante mit dem Kombinationsfeld ist definitiv besser, einfacher, schneller…
Gut, dass man nie auslernt. Ich denk wohl um zuviel Ecken.

Danke nochmal!
Gruß Rico