Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

DoCmd.OutputTo - 2 Optionen

Begonnen von kingwambi, Juli 29, 2013, 14:04:53

⏪ vorheriges - nächstes ⏩

bahasu

Hi,

etwas spät, aber checked  ;D

Harald

[Anhang gelöscht durch Administrator]
Servus

kingwambi

Hallo - du bist der Hammer. Genau so und nicht anders hab ich mir das vorgestellt! Danke!!!  ;D ;D

Ich hätte eine Frage zu Abfragekriterien - wenn ich

Wie "*" & [Datum eingeben] & "*" als Kriterium festlege kann ich entweder das ganz Datum oder nur mm.yyyy oder nur yyyy eingeben - dies ist echt hilfreich.
Wäre es jedoch möglich dies zu kombinieren mit Von Bis? Damit ich sägen könnte von 31.7.2013 bis 31.8.2013 oder 7.2013 bis 8.2013 oder eben nur 2013 bis 2014. Denn mit
>=[Von Datum Und <=[Bis Datum] muss ich ja immer das ganze Datum eingeben - eine Eingrenzung nach nur Montag + Jahr oder nur Jahr ist hier nicht möglich.

So in der Richtung - jedoch funktioniert dies nicht
>=(Wie "*" & [Von Datum] & "*") Und <=(Wie "*" & [Bis Datum] & "*")

LG Jürgen

bahasu

Hi,

Zitat von: kingwambi am Juli 31, 2013, 09:30:51
>=(Wie "*" & [Von Datum] & "*") Und <=(Wie "*" & [Bis Datum] & "*")

Dafür sehe ich im Moment keine einfache Lösung.
Denkbar ist, dass man die year- bzw. month-Funktion einsetzt. Das setzt dann aber voraus, dass mittels VBA der eingegebene Wert untersucht wird, um sich eine passende Bedingung zu basteln.

Harald
Servus

kingwambi

Hallo - das ist mir nicht wichtig - egal.

Eines wollte ich noch wissen. Wäre es möglich wenn ich ein Prüfdatum habe und ein nächste Prüfung Feld, dass ich dies automatisch berechnen lassen kann.
Wenn ich bei dem zu überprüfenden Gerät hinterlege in wie vielen Jahren die wiederkehrende Prüfung stattfinden soll - zb Name: Gerät1 | Prüfintervall: 3 (für in 3 Jahren)
Wenn ich das aktuelle Datum im Feld Prüfdatum eingebe er automatisch in das Feld nächste Prüfung 31.7.2016 einfügt?
Wenn ja wie funktioniert das oder wenn es sehr kompliziert wäre - könnte ich dich bitten dies im Beispiel zu übermitteln?

LG Jürgen

bahasu

Hi,

statt dem Speichern des zukünftigen Datums ist es besser, einen berechneten Wert anzuzeigen, da ansonsten bei einer Änderung des Prüfdatums und/oder Intervalls das gespeicherte (=altes Datenmodell) zukünftige Prüfddatum falsch ist bzw. neu berechnet werden muss und dann gespeichert werden muss.
Es gilt der Grundsatz: Keine berechneten Daten zu speichern.

Im Anhang ein einfaches Beispiel, bei dem in der Abfrage das zukünftige Prüfdatum anhand der Vorgaben pro Datensatz berechnet wird.
Dabei wird die DateAdd-Funktion verwendet. Die dort stehenden Angaben sind wichtig u.a. für die Intervall-Vorgabe.
Siehe access-Hilfe:
DateAdd-Funktion
     

Gibt einen Wert vom Typ Variant (Date) zurück, der ein Datum enthält, zu dem ein bestimmtes Zeitintervall addiert wurde.

Syntax

DateAdd(interval, number, date)

Die Syntax für die DateAdd-Funktion besteht aus den folgenden benannten Argumenten:

Teil Beschreibung
interval Erforderlich. Zeichenfolgenausdruck, der das zu addierende Zeitintervall ergibt.
number Erforderlich. Numerischer Ausdruck, der die Anzahl der zu addierenden Intervalle ergibt. Er kann positiv (für ein zukünftiges Datum) oder negativ (für ein vergangenes Datum) sein.
date Erforderlich. Ein Wert vom Typ Variant (Date) oder ein als Literal dargestelltes Datum, zu dem das Intervall hinzuaddiert wird.



Einstellungen

Das Argument interval hat die folgenden Einstellungen:

Einstellung Beschreibung
yyyy Jahr
q Quartal
m Monat
y Tag des Jahres
d Tag
w Wochentag
ww Woche
h Stunde
n Minute
s Sekunde

Harald

[Anhang gelöscht durch Administrator]
Servus

kingwambi

Hallo - funktioniert toll - nur habe ich ein Problem mit einer Abfrage, die sich auf das "nächste Prüfdatum" bezieht. Bis jetzt wurde das "nächste Prüfdatum" manuell eingegeben und dann konnte man mit

Wie "*" & [Monat& oder Jahr für nächste Prüfung eingeben] & "*"

eine Liste mit Geräten abrufen, die zb in 05.2015 oder eben alle Geräte im Jahr 2015 zu prüfen sind.

Nun erhalte ich jedoch immer Fehler. Es wäre jedoch komplett egal, wenn die Werte statisch sind - die werden nie wieder geändert, wenn dies hilft. Ev hast du hier eine Lösung - Danke - LG Jürgen

bahasu

#21
Hi Jürgen,

wie lautet der Fehler?
Ich will lieber ein paar Minuten bei der bislang vorgestellten Variante bleiben, bevor Routinen für das Speichern von berechneten Werten kreiert werden.

Kannst Du wieder ein paar Spieldaten zur Verfügung stellen?

Harald
Servus

kingwambi

Hallo Harald - war wohl ein Fehler von nicht eingegebenen Daten. Funktioniert wundervoll!!  :D Danke nochmals für die verständliche und äußerst kompetente Unterstützung!!!

bahasu

Hi Jürgen,

gern geschehen.

Für die Zukunft: Mit der Funktion NZ (siehe access Hilfe) können Fehler vermieden werden, wenn Felder keinen Inhalt haben (d.h. noch nichts eingegeben ist).

Harald
Servus

kingwambi

Hallo - alles klar danke - werd ich mir ansehen. Jetzt muss ich noch einmal lästig sein.

Wenn ich eine Abweichung des Prüfintervalles habe - normalerweise sind bei einem speziellen Gerät 3 Jahre Prüfintervall - jedoch möchte ein Kunde dieses immer früher Prüfen lassen. Ich habe dem Gerät den Prüfintervall zugeteilt. Kann ich dem Kunden einen Prüfdifferenz zuteilen, damit ich ein effektives Prüfintervall erhalte. Gerät1 = 3 / Differenz -1 = Effektiv 2

nächste Prüfung: DatAdd([YMD];[Intervall]+[Intervalldiff];[Prüfdatum])

so in der Richtung - kann ich das in der Abfrage regeln oder müsste ich hier ein extra Feld in einer Tabelle oder eine extra Tabelle erstellen?

LG Jürgen

bahasu

Hi Jürgen,

ein Eintrag in einer Tabelle ist leichter zu pflegen als irgendein Konstrukt in einer Abfrage oder gar in irgendwelchen vba-Zeilen.

Hierbei stellt sich die Frage nach der Datenstruktur. Wenn ich das korrekt verstanden habe:
1. einfacher Fall: am Gerät X sind z.B. 3 Jahre hinterlegt.
2. neue Tabelle mit der Kombination Gerät X + Kunde Y und dem Intervall "weniger als 3 Jahre"

Die bestehende Abfrage müßte demnach noch mit der neu zu schaffenden Tabelle verknüpft werden.
Wenn bei der Verknüpfung kein Wert gefunden wird, werden die "3 Jahre" addiert, ansonsten das aus der neuen Tabelle.


Falls zu kompliziert: Als quick & dirty wäre auch denkbar: Gerät erneut anlegen mit Hinweis auf Kunden + Zuordnung eines anderen Intervalls {hoffentlich werde ich jetzt nicht gesteinigt  ;) }

Harald
Servus

kingwambi

Hallo - ich hätte es so gelöst (siehe Anhang - Bild)

Intervall ist in Tabelle Gerät (jedes Gerät hat einen Standartintervall)
Intervalldiff in Tabelle Prüfprotokoll (Standardwert 0)
es kommt nun ein Feld Intervalldiff in das Eingabeformular. Weicht der Intervall vom Standardintervall ab, so gibt der Prüfer den Wert hier ein - ansonsten lässt er ihn leer.
Das nächste Prüfdatum errechnet sich dann wieder automatisch. So kann für jede Prüfung auf einen individuellen Prüfwunsch eingegangen werden. Funktionieren tuts - oder siehst du Probleme?

LG Jürgen

[Anhang gelöscht durch Administrator]

kingwambi

Ein Problem hab ich gefunden - wenn ich das Kriterium bei nächste Prüfung eingebe: Wie "*" & [Monat & oder Jahr nächste Prüfung] & "*" (oder ein anderes)
fragt er immer nach dem zu berechnenden Wert effIntervall

Kann man nicht zwei Berechnungen in einer Abfrage durchführen und dann Filtern? Gibt es doch eine Lösung? LG Jürgen

bahasu

Hi Jürgen

Zitat von: kingwambi am August 02, 2013, 09:52:34
Ein Problem hab ich gefunden
Kannst Du wie zuvor die db zur Verfügung stellen?

Zitat
Kann man nicht zwei Berechnungen in einer Abfrage durchführen und dann Filtern?
Sollte möglich sein.

Harald
Servus

kingwambi

Hallo - anbei die DB. Ich musste jedoch zuerst eine rar erstellen und diese zippen, da ich mit zip alleine auf einmal nicht unter 200kb komme. LG

[Anhang gelöscht durch Administrator]