none
Mehrfachauswahl in einem Kombinationsfeld per VBA abwählen?

    Frage

  • Hallo.

    Ich habe in einem Formular (Access 2010) ein Kombinationsfeld bei dem eine Mehrfachauswahl möglich ist.

    Dieses Kombinationsfeld bezieht seine Werte aus einer Tabelle.

    Da viele Einträge im Formular sich wiederholen, habe ich mir erlaubt, diese Datensätze per VBA zu kopieren

    und die nicht benötigten Werte zu löschen um einfach eine menge Schreibarbeit zu sparen.

    Die Werte in dem Kombinationsfeld hätte ich auch gerne "automatisch" gelöscht.

    Doch irgendwie bekomme ich das nicht hin. Nachdem selbst Google nichts mehr für mich hat, was ich ausprobieren könnte,

    hoffe ich, hier jemanden zu finden, der mich in die richtige Richtung stoßen kann.

    Danke im Voraus für eure Hilfe.

    Gruß, Klaus.

    Montag, 12. Januar 2015 15:19

Antworten

  • Hallo, Klaus!

    Ich habe mir deine Datei angesehen und nehme an, dass es um das Feld bzw. Steuerelement "Ort" geht. Um die Einträge aus einem Mehrwertigen Feld zu löschen, muss man die Werte aus der dahinter steckenden Tabelle entfernen. Das geht per DAO-Recordset. Code von innerhalb des Formulares für den aktuellen Datensatz:

    Dim rsMVF As DAO.Recordset

    ' Recordset auf die Tabelle hinter dem Multi Valued Field
    Set rsMVF = Me.Recordset!Ort.Value

    ' rs durchlaufen und Werte loeschen
    Do Until rsMVF.EOF
        rsMVF.Delete
        rsMVF.MoveNext
    Loop

    ' Anzeige im Kombi aktualisieren
    Me!Ort.Requery


    cu
    Karl
    ******
    Access FAQ (de/it): http://www.donkarl.com
    Access Lobby: http://www.AccessDevelopers.org

    Donnerstag, 15. Januar 2015 11:57

Alle Antworten

  • Am 12.01.2015 schrieb Klaus Schleicherdt:

    Dieses Kombinationsfeld bezieht seine Werte aus einer Tabelle.

    Da viele Einträge im Formular sich wiederholen, habe ich mir erlaubt, diese Datensätze per VBA zu kopieren

    und die nicht benötigten Werte zu löschen um einfach eine menge Schreibarbeit zu sparen.

    Die Werte in dem Kombinationsfeld hätte ich auch gerne "automatisch" gelöscht.

    D.h. Du hast in einem Kombinationsfeld mehrere identische Einträge?
    Z.B. der Müller ist zweimal drin, der Huber dreimal? Richtig?


    Servus
    Winfried

    Gruppenrichtlinien
    HowTos zum WSUS Package Publisher
    WSUS Package Publisher
    HowTos zum Local Update Publisher
    NNTP-Bridge für MS-Foren

    Montag, 12. Januar 2015 17:19
  • Hallo Winfried.

    Danke, dass du dich für mein Problem interessierst.

    Das Kombinationsfeld zeigt eindeutige Einträge aus einer Tabelle an. Keine doppelten Werte. Es geht in der Datenbank um Fahrzeuge, Fahrer und Touren.

    Fahrzeuge und Fahrer bleiben meistens gleich und deswegen kopiere ich den Datensatz.

    Doch die Touren sind immer gleich und es kann vorkommen, dass ein Fahrer mehr als ein Ziel ansteuern muss.

    Da ich z.B. die Stadt Stuttgart in mindestens 10 verschiedenen Schreibweisen vorfinden konnte, habe ich mich halt

    für ein Kombinationsfeld mit Mehrfachauswahl entschieden. Nur die Mehrfachauswahl nach dem Kopieren eines Datensatzes wieder los zu werden, übersteigt meine Fähigkeiten und die Lösungsansätze im Netz führten nicht zum Erfolg. Natürlich kann der Anwender die Markierungen im Kombinationsfeld selber löschen. Doch die Gefahr, dass er das vergisst ist da und sollte vermieden werden.

    Dankender Gruß, Klaus.

    Dienstag, 13. Januar 2015 04:11
  • Am 13.01.2015 schrieb Klaus Schleicherdt:

    Das Kombinationsfeld zeigt eindeutige Einträge aus einer Tabelle an. Keine doppelten Werte. Es geht in der Datenbank um Fahrzeuge, Fahrer und Touren.

    Fahrzeuge und Fahrer bleiben meistens gleich und deswegen kopiere ich den Datensatz.

    Doch die Touren sind immer gleich und es kann vorkommen, dass ein Fahrer mehr als ein Ziel ansteuern muss.

    Da ich z.B. die Stadt Stuttgart in mindestens 10 verschiedenen Schreibweisen vorfinden konnte, habe ich mich halt

    Und bei den Touren hast Du dann Stuttgart als Wort drin stehen? Wenn
    ja, das darf natürlich nicht sein. Erstell eine Tabelle in der
    Stuttgart nur einmal vorkommen kann. Mit Hilfe von sog. Primary Keys
    kannst Du das umsetzen. Den Key trägst Du dann bei den Touren anstatt
    dem Namen ein. Relationale Datenbank ist der Suchbegriff für dich.
    Hier kannst Du anfangen: http://dbwiki.net/wiki/Access_Grundlagen

    IMHO ist das nicht einfach so schnell zu korrigieren. Dazu bräuchte
    man die komplette Datenbankstruktur.


    Servus
    Winfried

    Gruppenrichtlinien
    HowTos zum WSUS Package Publisher
    WSUS Package Publisher
    HowTos zum Local Update Publisher
    NNTP-Bridge für MS-Foren

    Dienstag, 13. Januar 2015 05:52
  • Hallo Winfried.

    Leider kann ich noch keine Bilder hier hoch laden.

    Es ist schwer, mein Problem zu beschreiben.

    Die Tabelle "Touren" mit den Namen der Städte ist mit einem Primärschlüssel versehen.

    Die Namen der Städte kommen in der Tabelle nur einmal vor.

    Im Formular, welches eine andere Tabelle "Datenerfassung"  mit Datum, Uhrzeit, Fahrer, Fahrzeug, Tour usw. befüllt, ist ein Kombinationsfeld untergebracht, was von der Tabelle "Touren" sich die Werte hohlt.

    Da ein Fahrer mehrere Städte z.B. Berlin und Hamburg anfahren kann, bietet das Kombinationsfeld eine Mehrfachauswahl an. Eine Liste mit Checkboxen und den Stadtnamen daneben.

    Die Auswahl der Checkboxen wieder aufzuheben ist mein Problem. Das Steuerelement Tour auf False zu setzen geht nicht, weil Access logischerweise nicht weiß, welche Checkbox von den vielen er genau auf False setzen muss.

    Mit einer Schleife, die jede Checkbox abfragen sollte,  bin ich auch nicht weiter gekommen.

    Dankender Gruß, Klaus Schleicherdt.

    Dienstag, 13. Januar 2015 06:23
  • Am 13.01.2015 schrieb Klaus Schleicherdt:

    Leider kann ich noch keine Bilder hier hoch laden.

    Lass deinen Account in diesem Thread verifizieren:
    https://social.technet.microsoft.com/Forums/en-US/f8cc58a0-27ac-4e6b-b014-29c6286c049d/verify-your-account-24?forum=reportabug Anschließend solltest Du Bilder posten können. Alternativ kannst Du
    das Bild über einen Filehoster uploaden und den Link hier ohne http://
    vorn dran posten.

    Es ist schwer, mein Problem zu beschreiben.

    Jepp, andersrum ist es genauso. ;)

    Mit einer Schleife, die jede Checkbox abfragen sollte,  bin ich auch nicht weiter gekommen.

    Kannst Du eine abgespeckte Datenbank uploaden und den Link hier
    posten? Du kannst das über deinen OneDrive Account machen. Wie das
    geht, steht in diesem Artikel:
    http://answers.microsoft.com/de-de/windows/forum/windows_7-networking/wie-nutze-ich-skydrive/af6c55f1-0e82-460e-babb-794ff26e5698


    Servus
    Winfried

    Gruppenrichtlinien
    HowTos zum WSUS Package Publisher
    WSUS Package Publisher
    HowTos zum Local Update Publisher
    NNTP-Bridge für MS-Foren

    Dienstag, 13. Januar 2015 17:28
  • Hallo Wilfried.

    Danke für deine Ausdauer.

    Wenn ich morgen im Büro bin, erstelle ich die Beispieldatei.

    Dankender Gruß, Klaus.


    Dienstag, 13. Januar 2015 18:58
  • Hallo Wilfried.

    Hier ein Link zu einer Muster-Datei.

    Wie gesagt, ich suche nach einer VBA-Lösung, wie ich im Formular "Datenerfassung" die (Häckchen) vom Steuerelement "Tour" löschen kann.

    https://onedrive.live.com/redir?resid=979DAA5B1B27F946!929&authkey=!AAsPLu8C-C6TL6E&ithint=file%2caccdb

    Dankender Gruß, Klaus.

    Mittwoch, 14. Januar 2015 04:02
  • Mittwoch, 14. Januar 2015 04:06
  • Hallo, Klaus!

    Ich habe mir deine Datei angesehen und nehme an, dass es um das Feld bzw. Steuerelement "Ort" geht. Um die Einträge aus einem Mehrwertigen Feld zu löschen, muss man die Werte aus der dahinter steckenden Tabelle entfernen. Das geht per DAO-Recordset. Code von innerhalb des Formulares für den aktuellen Datensatz:

    Dim rsMVF As DAO.Recordset

    ' Recordset auf die Tabelle hinter dem Multi Valued Field
    Set rsMVF = Me.Recordset!Ort.Value

    ' rs durchlaufen und Werte loeschen
    Do Until rsMVF.EOF
        rsMVF.Delete
        rsMVF.MoveNext
    Loop

    ' Anzeige im Kombi aktualisieren
    Me!Ort.Requery


    cu
    Karl
    ******
    Access FAQ (de/it): http://www.donkarl.com
    Access Lobby: http://www.AccessDevelopers.org

    Donnerstag, 15. Januar 2015 11:57
  • Hallo Karl.

    Erst einmal ein ganz ganz dickes Dankeschön!!!

    Funktioniert wunderbar!

    Um zu verstehen, warum das so gut funktioniert, werde ich wohl noch eine Weile brauchen.

    Ich habe versucht wie bei normalen Check-Boxen den Wert auf False zu setzen.

    Recordset + Delete.....wow!

    Dankender Gruß, Klaus :-)

    Donnerstag, 15. Januar 2015 14:10