Hallo Leute
Ich habe in meiner DB drei Tabellenrstellungsabfragen und eine Anfügeabfrage für einen Report.
Für alle vier Abfragen öffnet sich ein Parameterfenster wo man Monat (Zahl) eingegeben muss.
Ich würde das gerne alles über eine Parameterfenster steuern,
geht das denn überhaupt. Und wen ja wie müßte ich da ran gehen.
Gruß Uwe01
Keinen Parameter verwenden sondern in einem Modul das Kriterium "Monat" in eine Variable ladenund im Kriterium der Abfrage die Funktion aufrufen.
Hallo 69bruno
Danke für deine Antwort, muß mich jetzt erst mal weiter Belesen wie du das meinst. Das Modul erstellen ok, aber Variablen laden und im Kriterium der Abfrage die Funktion aufrufen ???
Vieleicht kannst du es mir ja genauer Erklähren, solange werde ich mal meine Bücher befragen.
Gruß Uwe01
Hallo Uwe
Die Eingabe des Monat im Parameter Fenster, betrifft das immer den aktuellen Monat oder ist der Monat (Zahl) von dir frei wählbar?
Hallo Stapsi
Die Zahl führ den Monat kann ich frei wählen. Ich gebe eine eins
für Januar ein, es ist auch möglich verschiedene Zahlen für
den Monat ein geben. Es würde auch nicht so schlecht sein wenn
man einmal eine Zahl für den Mont eingibt und die Zahl für
alle Abfragen zutrifft.
Gruß Uwe01
Hallo Uwe
Ein Ansatz wäre:
Lege auf dein Formular ein ungebundenes Textfeld oder Kombifeld in dem nach einer Änderung in dem Feld deine Abfragen der Reihe nach Ausführst. Zu Beachten ist das du die Abfragen dann auch anpssen must.
In den Abfragen wird nun als Kriterium ein Bezug auf dein Formularfeld gegeben z.b Forms!Dein_Formular.Steuerelement
Hallo,
es stellt sich hier die grundlegende Frage, warum überhaupt
"drei Tabellenerstellungsabfragen und eine Anfügeabfrage für einen Report."
verwendet werden (müssen/sollen) ??
Hallo df6gl
Die drei Erstellungs Abfragen und die eine Anfüge Abfrage
brauche ich. Weil Ich da nach TÜV und Sicherheits Prüfung sowie
Wartungen in Zeitraum von 6 Monate Abfrage.
Gruß Uwe01
Hallo,
das sind aber keine Argumente für solche Abfragen...
Hallo,
Was sind den Argumente für so eine Abfrage....
Gruß Uwe01
Hallo Uwe
Startetst du manuell eine Abfrage die dir anzeigt welche Prüftermine in den nächsten 6 Monaten fällig sind?
Hallo Stefan,
Ich starte die Abfragen jeden Monats Ende. Das heißt Ende
Januar Starte ich die Abfrage für Februar. Dann bekomme Ich
Ein Bericht welche Fahrzeuge im Februar drann sind. Und
Das mache ich jeden Monat.
Gruß Uwe
Hallo Uwe
Dann lege doch in deinen Abfragen den aktuellen Monat +1 als Kriterium fest.
Für den nächsten Monat würde das so Aussehen: Dein_Steuerelement = Month(Now())+1
Hallo Stefan,
Ich weiß jetzt nicht wie es mir weiter helfen kann. Den wenn
Ich +1 Monat mache, bekomme Ich da nicht falsche Daten?
Ich meine wenn das Fahrzeug im Januar mit TÜV dran ist muß
es 6Monte später eine Sicherheits Prüfung Unterzogen werde.
Also Schätze Ich das mit den +1Monat nicht hinbekomme.
Gruß Uwe
Hallo Uwe
ZitatIch meine wenn das Fahrzeug im Januar mit TÜV dran ist muß
es 6Monte später eine Sicherheits Prüfung Unterzogen werde
Hast du dafür so Entnehme ich deinem Schreiben eine Eigene Abfrage, richtig?
Dan gehört in die Abfrage: Dein_Steuerelement = Month(Now())+6
Was ich aber jetzt garnicht nachvollziehen kann, ist deine erste Aussage:
ZitatIch habe in meiner DB drei Tabellenrstellungsabfragen und eine Anfügeabfrage für einen Report.
Für alle vier Abfragen öffnet sich ein Parameterfenster wo man Monat (Zahl) eingegeben muss.
Ich würde das gerne alles über eine Parameterfenster steuern
Dann müstest du jetzt in den Parameterfenster auch Unterschiedliche Monate eintragen, oder? Das geht aber aus deinem Startbeitrag so nicht hervor, sorry das ich das anders Verstanden habe.
Hallo Stefan,
Kann auch sein das Ich mich da Falsch ausgedrückt habe.
Meine Abfragen laufen, das ist ja nicht das Problem.Ich wollte
es ja einfach nur ein wenig einfacher machen, da jetzt halt noch
zwei Abfragen zugekommen sind. Deswegen wollte Ich da nur
einmal den Monat eingeben statt vier mal. Aber vielleicht hat
ja da noch einer eine Idee.
Gruß Uww
Hallo Uwe
ZitatDeswegen wollte Ich da nur
einmal den Monat eingeben statt vier mal
So habe ich das auch Verstanden.
Aber Uwe was liefert die Abfrage 1 als Bespiel den Tüv Termin, alle die im Monat 02.2013 fällig sind, Richtig?
was liefert dir Abfrage 2, usw...
In deinen heutigen vier Parameterfenster gibst du in allen den Monat 2 ein, ja oder nein?
Bei Ja:
Month(Now())+1 gehört das in allen Abfragen als Kriterium
Bei Nein:
sag mir was du in die Parameterfenster deiner Abfragen eintragen must.
Hallo Stefan,
Das ist Richtig Abfrage 1 Liefert mir alle Fahrzeuge mit Tüv im Januar dran sind, der Code in der Abfrage lautet [tblMonate].[Monatzahl] Und [HU Monat eingeben]Monat(DatAdd("m";+6;[EZ Modeljahr]))
Die Zweite Abfrage liefert mir die Fahrzeuge die im Januar auch mit der Sicherheitsrüfung drann sind. Aber Tüv erst 6 Monate später.
Monat(DatAdd("m";+6;[EZ Modeljahr]))
Das ist ja auch OK, beim Starten wurden 2 Parameterfragen abgefragt. Die Abfragen Starte aus ein Formular mit ein Batten.
Nur jetzt habe Ich noch etwas mit aufgenommen, die ab Kaufdatum alle 1/2 Jahre Warten muß.
Darauf hin habe Ich die gleichen Abfragen genommen wie für Tüv und Sicherheitsp. und anders benannt.
Wobei Ich jetzt aber die vierte Abfrage nicht als Tabellenerstellungs Abfrage erstellt habe sonder als Anfüge Abfrage erstellt habe.
Das heißt jetzt, Ich muß nun 4x die Zahl 5 für Mai eingeben. Und das will Ich ändern.
Schön währe es wenn mann auf den Batten im Formular Klickt und eine Parameter Frage oder etwas anderes wo Ich nur einmal die Zahl 5 für Mai eingebe und die anderen Abfragen sollen dann die Zahl übernehmen.
Gruß Uwe
Eine händische Übergabe eines Parameters an eine Abfrage wird in einer ordentlichen Anwendung nicht vorkommen, schon weil man einen Benutzer unterstützt: Bedienoberfläche statt "überraschendes PopUp", Abwehr von falschen Eingaben, Bereitstellung von sinnvollen + gültigen Werten zur Auswahl.
Wie macht man es?
Parameterabfrage per VBA öffnen (http://www.donkarl.com?FAQ6.16)
In Access kann man auch Formularbezüge direkt in Abfragen einbauen.
In beiden Fällen kann man einmal einen gewünschten Parameterwert ermitteln und dann beliebig verteilen.
Zur Frage "wann braucht man Tabellenerstellungsabfragen":
Zusätzliche Tabellen halten redundante Daten vor und erzeugen damit innerhalb einer DB die Gefahr von Datenanomalien. Daher wird man im Normalfall darauf verzichten.
Tabellen zur Speicherung von Zwischenergebnissen statt "richtiger" Auswahlabfragen ist dann der Weg der Unfähigkeit, passende Abfragen erstellen zu können. In Ausnahme dazu kann es sinnvoll sein, wenn die Tabelle mit dem gespeicherten Ergebnis zu Performanceverbesserung beiträgt. In solchen Abläufen wird man sich aber nicht mit puren TE-Abfragen begnügen, sondern da z.B. DDL-Anweisungen mitlaufen lassen.
Ansonsten haben TE-Abfragen ihren Sinn darin, Daten für eine externe Nutzung zu verdoppeln: Exportdaten zum Versand, Archivierung u.ä.
MfGA
ebs
Hallo,
Hänge euch mal mein Problem ran, ist vieleicht verständlicher was Ich meine. Den mit dem Fomulieren des Textes ist das ja immer so eine Sache.
Gruß Uwe
[Anhang gelöscht durch Administrator]
Hallo Uwe
An bei die geänderte Datei.
Es gibt eine neue Abfrage1 die die nur Verdeutlichen soll wie das Kriterium =Month(Now))+1 eingebaut ist.
ZitatSELECT [Fahrzeuge Wechselbrückenverwaltung].[Fahrzeuge/WechselbrückenID], [Fahrzeuge Wechselbrückenverwaltung].[Int Nr], [Fahrzeuge Wechselbrückenverwaltung].Kennzeichen, [Fahrzeuge Wechselbrückenverwaltung].Typ, [Fahrzeuge Wechselbrückenverwaltung].[EZ Modeljahr], [Fahrzeuge Wechselbrückenverwaltung].Passiv, tblMonate.MonatName
FROM tblMonate, [Fahrzeuge Wechselbrückenverwaltung]
WHERE ((([Fahrzeuge Wechselbrückenverwaltung].Passiv)=False) And ((Month(DateAdd("m",+6,[EZ Modeljahr])))=tblMonate.Monatzahl And (Month(DateAdd("m",+6,[EZ Modeljahr])))=Month(Now())+1))
ORDER BY [Fahrzeuge Wechselbrückenverwaltung].[Int Nr];
[Anhang gelöscht durch Administrator]
Hallo Stefan,
Das ist mir schon klar, das mit dem +1 nach den Monat das da dann ein Monat weiter gezählt wird. Aber Ich weiß jetzt nicht wie es mir bei mein Problem helfen soll.
Gruß Uwe
Hallo Uwe
Deine Vorgabe war ein Button zu Betätigen und nicht Anschließend
>> Nicht 4x in einem Parameterfenster als Beispiel die 3 für den nächsten Monat März einzugeben <<<<
Und genau das habe ich die in der "Abfrage1" gezeigt. Klicke die Abfrage1 an kommt da ein Parameter Fenster??
Hallo Stefan,
Hast ja Recht es kommt kein Parameter Fenster.
Aber das bei mir 4x ein Parameter Fenster aufgeht, Glaube sagte ich von Anfang an. Ich will einfach diese 4x in 1x ändern. Habe in meiner DB ein Formular wo Ich ein Batten habe der da heißt "HU und SP Termine", wenn Ich da ein Klick rauf mache bekomme ich 4x Parameterwert Frage. Nun möchte ich auf mei HU / Sp Batten Klicken und es soll nur 1 Parameter Frage für alle 4 erscheinen.
Gruß Uwe
Hallo Uwe
Im sechsen Beitrag von diesem Thema hab ich dir das auch schon Vorgeschlagen
ZitatLege auf dein Formular ein ungebundenes Textfeld oder Kombifeld in dem nach einer Änderung in dem Feld deine Abfragen der Reihe nach Ausführst. Zu Beachten ist das du die Abfragen dann auch anpssen must.
In den Abfragen wird nun als Kriterium ein Bezug auf dein Formularfeld gegeben z.b Forms!Dein_Formular.Steuerelement
Hallo Stefan,
Jetzt wo du das Schreibst fällt mir das auch auf. Werde
es mal Morgen Versuchen zu Realisieren. Obwohl Ich
da noch keine so die richtige Idee hab wie man das machen muß.
Gruß Uwe
Hallo Uwe
Auch diese Antwort hab ich dir schon gegeben:
ZitatForms!Dein_Formularname.dein_Steuerelementname
Kommt in die Abfrage:
ZitatSELECT [Fahrzeuge Wechselbrückenverwaltung].[Fahrzeuge/WechselbrückenID], [Fahrzeuge Wechselbrückenverwaltung].[Int Nr], [Fahrzeuge Wechselbrückenverwaltung].Kennzeichen, [Fahrzeuge Wechselbrückenverwaltung].Typ, [Fahrzeuge Wechselbrückenverwaltung].[EZ Modeljahr], [Fahrzeuge Wechselbrückenverwaltung].Passiv, tblMonate.MonatName
FROM tblMonate, [Fahrzeuge Wechselbrückenverwaltung]
WHERE ((([Fahrzeuge Wechselbrückenverwaltung].Passiv)=False) And ((Month(DateAdd("m",+6,[EZ Modeljahr])))=tblMonate.Monatzahl And (Month(DateAdd("m",+6,[EZ Modeljahr])))=Month(Now())+1))
ORDER BY [Fahrzeuge Wechselbrückenverwaltung].[Int Nr];
Anstatt >>> Month(Now())+1 <<<