PDA

Vollständige Version anzeigen : über Listenfeldauswahl zum DS gehen?


PC74
13.05.2001, 18:42
Habe eine Kundendatenbank u.a.mit einem Textfeld Namens "Matchode".Daneben habe ich ein Button eingefügt welches mir beim Klick ein Form öffnet was ein Listenfeld "Kundenliste" enthält.
Die Datenherkunft der Liste ist Tabelle/Abfrage Kundendaten.Dazu habe ich im Form mit dem Listenfeld noch ein Textfeld Namens "Suchfeld" was mir bei Eingabe die bestimmten DS in der Liste suchen soll.
Jetzt die eigentlichen Probs:
1.Beim öffnen des Forms mit d.Liste werden mir nicht alle DS angezeigt.
2.Ich möchte im Suchfeld bei Eingabe vom ersten Buchstabe an die Liste aktualisiert sehen.
3.Bei gefundenen DS in d.Liste durch Enter zum Kundenform gehen der diesen DS anzeigt.

Meine Einstellungen bis jetzt:
-in der Abfrage für Liste im Feld "Matchode"
Kriterien:[Formulare]![Kundenliste]![Suchfeld]
-im ungebunden Textfled "Suchfeld" nach Aktualisierung:
Forms!Kundenliste.Liste0.Requery
Wie komme ich jetzt weiter ?
Wäre nett und toll für Hilfe. Danke

Alexander Jan Peters
13.05.2001, 18:57
<font color="#000000" size="2" face="Tahoma">Hallo,

das sind ja gleich drei Dinge auf einmal, Spannung, Spiel und Schokolade. ;)

Zu 1) Dafür müßte ich mal wissen wie die Datengrundlage des Listenfeldes aussieht und wie das mit dem Öffnen genau läuft.

Zu 2) Schau Dir mal die KnowHow-DB von Klaus Oberdalhoff an (-> http://www.access-paradies.de unter Softwaresammlung 2),
das Suchformular dort arbeitet genau nach dem Prinzip.

Zu 3) Im Ereignis BeiTaste des Listenfeldes den Code:</font>


<font color="#000000" size="2" face="Courier New">
Dim lngAuswahl As Long

'Entertaste hat den Code 13
If KeyAscii = 13 Then
'Deine Aktion
On Error Resume Next
lngAuswahl = Me.lstAuswahl
If Not err.Number = 94 Then
DoCmd.OpenForm "Kunden", OpenArgs:= lngAuswahl
End If
End Ify</font>


<font color="#000000" size="2" face="Tahoma">
Das Ereignis BeiDoppelclick würde ich auch so verwenden, das lieben die Benutzer.

Gruß

A.J. Peters

Empfehlenswerte Links:
<a href="http://www.donkarl.com">Access FAQ von Karl Donaubauer</a>
<a href="http://www.access-paradies.de/Links.htm">Access-Paradies Links</a></font>

PC74
13.05.2001, 22:10
Hi Alexander Jan Peters:
Alex ich weiß das ist viel auf einmal.
Aber Pkt.1&2 hat sich erledigt dank deinem Hinweis KnowHow-DB.
Aber Pkt.3 nach Auswahl im Listenfeld und "Enter" funzt garnichts.
Ich habe den Code eingefügt und ... nichts.
Jetzt habe ich einen Blackout.
Vielleicht mache ich was falsch bei dem Code
Was kommt den bei "'Deine Aktion" rein?
Ausgangspunkt ist folgendermaßen:
Ich öffne das KundenForm,da ist der Button mit dem ich die Liste öffne.Jetzt Suche ich mir den Kunden aus(in der Liste)und möchte nur über Enter 1.die Liste(sprich Form) schließen und 2.zum DS des Kunden im KundenForm gehen.
Das KundenForm ist dabei immer sichtbar(aktiv) und das Form mit der Liste ist ein PopUp.
Vielleicht hast Du oder einer der Champs noch ein Nerv für das Probl.
Danke!

Alexander Jan Peters
14.05.2001, 06:17
<font color="#000000" size="2" face="Tahoma">Hallo,

also, wenn ich das richtig verstehe reden wir hier von zwei Formulare (nicht drei, wie ich zuerst dachte).
Ein Formular, nennen wir es mal "frmKunden", mit dem Matchcode-Textfeld usw.
Ein zweites Formular "frmSuche" mit dem Listenfeld ("lstAuswahl"), das bei Tastendruck aktualisiert wird.
Wenn dem so ist, ist mein Code trotzdem zu verwenden, denn Du willst ja in dem "frmKunden" den Zeiger auf den DS setzen, der im "frmSuche" ausgewählt wurde, richtig?
Also ändere den Code nur leicht ab und es geht:</font>


<font color="#000000" size="2" face="Courier New">
Private Sub lstSuche_KeyPress(KeyAscii As Integer)

Dim lngAuswahl As Long
'Entertaste hat den Code 13
If KeyAscii = 13 Then
On Error Resume Next
lngAuswahl = Me.lstAuswahl
If Not err.Number = 94 Then
DoCmd.OpenForm "frmKunden", WhereCondition:= "KundenNR=" & lngAuswahl
End If
End If
End Sub</font>


<font color="#000000" size="2" face="Tahoma">
Eine kleine Erklärung des Ganzen: Wir versuchen der Long-Integer Variablen lngAuswahl den Wert zuzuweisen, der im Listenfeld lstAuswahl markiert wurde. Falls dort keine Auswahl getroffen wurde tritt der Fehler 94 auf (Ungültige Verwendung von Null), diesen Fehler nutzen wir. Wir arbeiten nämlich nur weiter, wenn dieser Fehler nicht auftritt (...Not err.Number = 94 Then), da können wir dann sicher sein, daß eine Auswahl getroffen wurde.
Was dann kommt ist eigentlich ganz einfach, mit der DoCmd-Methode öffnen wir das Formular "frmKunden" neu, diesmal aber mit einer Bedingung (WhereCondition). Es soll nämlich der Datensatz angezeigt werden, dessen KundenNR, der Auswahl in unserer Liste (lngAuswahl) entspricht.
Die mit Office ausgelieferte Beispieldatenbank Nordwind.mdb enthält ein Beispiel für ein derartiges Synchronisieren zweier Formulare (Lieferanten-Formular im Zusammenspiel mit Artikelliste).

Gruß

A.J. Peters</font>

PC74
14.05.2001, 21:53
Betreff war: DS über Listenfeld Suchen?
Mit viel Mühe und "Geduld & Spucke" habe ich mein Problem Dank "Alex" gelöst.
Das finde ich im Forum wo Leuts mit Problemen
kommen einfach o.K.
Alex mach weiter,denn diese Art der Konversation bringt allen etwas.
Danke nochmal an Deine Person.
Ich hoffe wenn irgendwie noch Fragen zu Access auftauchen sollte kann mann sich ohne Vorbehalt an Dich wenden.
Danke!!!!!!

Alexander Jan Peters
14.05.2001, 23:07
<font color="#000000" size="2" face="Tahoma">Hallo,

bin ja total gerührt ;) , daß Du Dich so überschwenglich bedankst... aber mußte es unbedingt ein neues Posting sein?

*wird rot*

A.J. Peters</font>