Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: compinaut am Januar 21, 2016, 09:36:57

Titel: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: compinaut am Januar 21, 2016, 09:36:57
Hallo,
ich hätte eine Frage:
Ich möchte gerne mit einer Schaltfläche den ausgewählten Wert in einem Kombinationsfeld auf den nächsten möglichen Wert verschieben. Leider finde ich dazu keine Eigenschaft, die dies zur Laufzeit erlauben würde.
Kennt jemand vielleicht eine Möglichkeit?
Gruß
compinaut
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: MzKlMu am Januar 21, 2016, 09:49:38
Hallo,
definiere den nächst möglichen Wert.
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: compinaut am Januar 21, 2016, 10:06:27
Hallo MzKlMu,

ich habe einen Kalender programmiert, mit dem man ein Datum auswählen kann. Das funktioniert auch prima. Jedoch möchte ich nun gerne mit einer Schaltfläche z.B. auf den nächsten oder vorherigen Monat in der Liste des Kombinationsfeldes wechseln, ohne das man das Steuerelement aufmachen muss (wie bei der Datumsauswahl bei Outlook-Aufgaben).

Gruß
compinaut
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: MzKlMu am Januar 21, 2016, 10:17:40
Hallo,
zeige bitte mal den SQL Code der Abfrage für das Kombi.
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: compinaut am Januar 21, 2016, 10:25:02
Hinter dem Kombinationsfeld liegt keine Abfrage sondern eine Werteliste, weil die Liste ja feststeht (die Monate). Es werden also immer alle 12 Monate in der Liste angezeigt.
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: MzKlMu am Januar 21, 2016, 10:52:05
Hallo,
werden die Monate als Text oder als Zahl dargestellt ?
Und wo kommt das Jahr her ?

Wenn Du einen Kalender programmiert hast, hast Du doch eine Tabelle mit allen Tagen, diese Tabelle kannst Du auch für das Kombi verwenden. Du musst nur ein entsprechendes Format einstellen und die Daten einschränken.

Kannst Du das ganze Vorhaben mal etwas genauer darstellen ?
Was wird denn angezeigt nach Auswahl mit dem Kombi ?
Der Monat in einem Endlosformular ?

PS:
Wertlisten aller Art halte ich für verzichtbar. Verwende immer eine Tabelle.
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: compinaut am Januar 21, 2016, 11:22:29
Die Monate sind als Text im Kombinationsfeld angegeben. Das Jahr ist in einem gesonderten Kombinationsfeld erfasst und die Jahreszahlen werden per VBA während des Öffnens des Formulars in die Datenquelle eingetragen (bei einer Tabelle als Quelle müsste ich ja zunächst auf Vorhandensein einer Tabelle prüfen und die Tabelle jedes mal neu befüllen, weil das Formular ja auch mehrere Jahre hinweg lauffähig und aktuell sein muss - das war mir ehrlich gesagt zu aufwändig). Die Tage werden per VBA in 42 ungebundene Textfelder eingetragen (also nicht aus einer Tabelle übernommen, weil sich die Aufteilung der Tage auf die Wochentage jeden Monat und für jedes Jahr ändern). Es sieht ungefähr so aus wie das Kalendersteuerelement bei den Outlook-Aufgaben. Nach Auswahl des Monats und/oder des Jahres werden die Tagesfelder neu berechnet. Ich habe auch mal probiert, den Monat über "Me![lstMonat].Selected(4) = True" einzustellen. Der Fokus wechselt zwar auf das Kombinationsfeld, aber es wird nicht der genannte Monat (hier: Mai) ausgewählt.
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: compinaut am Januar 21, 2016, 11:28:23
Ich füge als Anhang mal einen Screenshot bei.

Mit den Pfeilen oben rechts und links soll man zum nächsten Monat bzw. zum nächsten Jahr (bei Januar oder Dezember) wechseln können. Das linke Kombinationsfeld enthält den Monat und das rechte das Jahr.
Ganz rechts außen kann man noch eine Uhrzeit auswählen (um dem Kunden einen Termin incl. Uhrzeit mitteilen zu können).

Alles funktioniert einwandfrei bis auf die Schaltflächen mit den Pfeilen. Ich muss also immer die Liste aufmachen und den Monat und das Jahr auswählen. Dies würde ich gerne vereinfachen, so ungefähr wie das bei Outlook (bei den Aufgaben) auch geht.
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: MaggieMay am Januar 21, 2016, 11:42:33
Hallo,

du kannst die Liste in einer Schleife durchlaufen und bei Übereinstimmung des Listenwertes mit dem Wert des Kombinationsfeldes den Index um 1 erhöhen und den Eintrag selektieren.

Schau dir dazu die Eigenschaften eines Kombifeldes in der Access-Hilfe an und ein paar Codebeispiele, dann sollte die Lösung zu finden sein. Wenn du fertigen Code serviert haben möchtest, meldest du dich einfach noch einmal.

BTW:
Die Lösung ist unabhängig von der Art des Herkunftstyps, d.h. Werteliste, Tabelle oder Abfrage.
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: compinaut am Januar 21, 2016, 11:53:58
Herzlichen Dank schon einmal für die Hilfe.

Mit dem Selektieren eines Wertes habe ich es schon versucht. Das ging leider nicht. Bei donkarl.com bin ich schon einmal einen Schritt weiter gekommen. Mit

varAusgewählterMonat = Me("lstMonat").ListIndex
   
Me("lstMonat") = Me![lstMonat].ItemData(varAusgewählterMonat - 1)

kann ich z.B. einen vorhergehenden Monat auswählen. Der neue Monat steht jetzt im Kombinationsfeld. Soweit so gut. Aber das Ereignis "Nach Aktualisierung" wird nicht angestoßen, so dass die Tagesfelder nicht aktualisiert werden. Welches Ereignis könnte ich vielleicht sonst noch benutzen?
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: DF6GL am Januar 21, 2016, 12:03:24
Hallo,

warum soll denn eigentlich das Auswahl-Kombi eingestellt werden?

ZitatAber das Ereignis "Nach Aktualisierung" wird nicht angestoßen, so dass die Tagesfelder nicht aktualisiert werden. Welches Ereignis könnte ich vielleicht sonst noch benutzen?

Dann ruf doch diese Sub nach dem Einstellen des Kombis auf.....

Me("lstMonat") = Me![lstMonat].ItemData(varAusgewählterMonat - 1) 
call lstMonat_Afterupdate()


Redest Du hier von einem Listenfeld oder von einem Kombifeld?
Titel: Re: Wert in Kombinationsfeld zur Laufzeit einstellen
Beitrag von: compinaut am Januar 21, 2016, 12:12:51
Herzlichen Dank nochmals an alle.

Nun klappt alles. Ich rufe jetzt die Ereignisprozedur wie vorgeschlagen auf und auch die Tagesfelder werden aktualisiert.

Super.