Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

VBA - verschachtelte if Funktion mit x Kriterien

Begonnen von darkhope, Juni 29, 2018, 14:02:47

⏪ vorheriges - nächstes ⏩

darkhope

Hallo,

ich habe grad eine Herausforderung in Access2010 und leider fast kein VBA-Wissen, um mein Ziel zu erreichen.

Ich habe 4 Tabellen jeweils mit mehreren Spalten. Jetzt möchte ich erreichen, dass an einem bestimmten Wochentag 2 Tabellen ausgelesen werden und die eingetragenen Werte je nach aktuellem Zeitraum gezählt werden und in ein Textfeldsteuerelement ausgegeben werden. In den Tabellen sich mehrere gleiche Wörter pro Stunde, die zusammengezählt werden sollen.

Ich formulier es mal als Formel zum besseren Verständnis - auch wenn es hier nicht um Excel geht -:
WENN Heute Freitag ist UND es ist 8:30 Uhr, DANN soll in Tabelle1
in Spalte1(8-9Uhr) die Anzahl des Wortes "Tätigkeit1" ermittelt werden.
Sollte es jedoch 9:30 sein, soll in Tabelle1 in Spalte2(9-10Uhr) die Anzahl des Wortes "Tätigkeit1"+"Tätigkeit2" ermittelt werden.

Ich stelle mir den Code in etwa wie folgt vor, hab aber keine Ahnung, ob das überhaupt geht. Vor allem weis ich nicht, wie ich einen Zeitraum (Uhrzeit) in VBA darstelle.


Private Sub NamedesSteuerelemts()

If Weekday(Date) = 2 Then

     If.... 'Time? 'If Time > 8 And Time < 9 Then?

     'Ich weis nicht, ob DCount an der Stelle richtig wäre

     Elseif ....
     If.... 'Time? 'If Time > 9 And Time < 10 Then?

     'Ich weis nicht, ob DCount an der Stelle richtig wäre

If Weekday(Date) = 3 Then ....

End If
End Sub


Wäre echt super, wenn mir jemand dafür eine funktionierende VBA-Lösung anbieten kann.

Vielen Dank schonmal für eure Hilfe. ;D

MzKlMu

Hallo,
hier gibt es die gleichen Antworten wie im andern Forum.
Leider machst Du mit dem ungeeigneten Datenmodell einfach weiter.
Dabei ist Deine Anforderung bei korrektem Aufbau ganz einfach zu lösen.
Ein Beispiel findest Du in der Abfrage des Beispiels im anderen Forum.

https://www.ms-office-forum.net/forum/showthread.php?t=352634

Baue die DB um, alles andere ist Krampf.
Gruß Klaus

darkhope

Hallo Klaus,

:o erwischt würde ich sagen.

Ich bekomme es mit den Abfragen einfach nicht hin und der Tabellenaufbau
muss ja eben so bleiben, wie er ist (feste Vorgabe). Und mit deinen Abfragen bekomme ich Anzahl Tätigkeiten pro Tag und nicht Anzahl Tätigkeiten pro Stunde(Zeitraum).

Gibts da wirklich keine VBA-Lösung? Auch wenn ich da mehr schreiben muss, wäre mir egal. Wichtig ist für mich im Moment, dass es schnellstmöglich funktioniert. So schnell bekomme ich die ganzen Funktionen von Access einfacht nicht drauf (Beziehungen zwischen Abfragen etc.) Außer einfachen Aktualisierungsabfragen habe ich das Thema bisher nicht gebraucht.

MzKlMu

Hallo,
ich habe keine VBA Lösung für Deinen Aufbau, das müsste ich erst nachstellen. Und da fehlt mir die Zeit.
Ich habe die Abfrage aus meinem Beispiel um den Zeitbereich erweitert und erhalten dann folgende Ausgabe (siehe Bild)
Tätigkeit 7 wird am Dienstag zwischen 17:00 und 17:59 2x ausgeführt
Gruß Klaus

darkhope

Ich bau dir das mal zusammen, was ich aktuell habe und lade es dann nächste  Woche hoch. Vielleicht gehts dann. ;)

darkhope


ebs17

Zitatich habe grad eine Herausforderung
Rückfrage: Wird das eine DB für eine betriebliche Nutzung, oder spielst Du etwas zum Zeitvertreib?

Im ersten Fall solltest Du Hinweise für eine ordentliche Datenmodellierung wahrnehmen und befolgen, weil ... Es war einmal eine kleine Exceltabelle ...
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Hallo,
sorry, aber da kann ich Dir nicht helfen. Das Ding ist von vorn bis hinten verkorkst und ähnelt noch nicht mal ansatzweise einer Datenbank.
Ich müsste mir erst mal die Zusammenhänge klar machen, was ohne Beziehungen gar nicht geht. Mit den Tabellen ist es auch gar nicht möglich halbwegs stimmige Beziehungen anzulegen. Selbst wenn Du das jetzige Problem gelöst bekommst, wird das mit Problemen kein Ende nehmen, weil Du ständig irgendwelche Krücken erfinden musst um zu einem Ergebnis zu kommen.
Du solltest das Ding in die Tonne treten und noch mal von vorn anfangen. Das Grundgerüst dazu habe ich Dir geliefert. Mehr kann ich im Moment nicht tun.
Und entschuldige die kritischen Worte, aber so ist es halt.
Gruß Klaus