Normalisierung ( 3.Norm ) von Datenbanken

Hallo,

ich habe mich nun über einigen Zeit in Access eingelesen und Beispiele angesehen. Meine Aufgabe ist eine Datenbank in Access zu erstellen.

Sie ist für eine Firma, welche zum Einen Dienstleistungen anbieten ( insbesondere Beratungen, aber auch Montagearbeiten durchführt ).

Die erste Anforderung ist folgende :
Die Firma hat Eingangsrechnungen und Ausgangsrechnungen, welche sie nur unbefriedigend überblicken kann. Sie kann z.B. nicht auf einen Blick sehen, welche Rechnung sie selber an einem bestimmten Tag bezahlen muss, um bspw. Skonto in Anspruch zu nehmen, desweiteren kann sie ebenfalls nicht überblicken, welche Rechnungen die sie gestellt hat, an einen bestimmten Tag bezahlt werden muss um nicht selber aktiv werden zu müssen und Zahlungserinnerungen herausschicken muss.

So.
Es soll also durch eine Eingabe eines Zeitraumes die oben genannte Auswertung erfolgen.

Eine große Frage stellt sich mir nun bei der Tabellenerstellung.
Ist es wirklich! wichtig, jede Tabelle auf die dritte Normalform zu bringen ?
Also beispielsweise gibt es ja eine Adresstabelle. Dort taucht immer wieder ein Ort , ein Land, eine Telefon Vorwahl auf . . . .
Erstelle ich also alleine schonmal für die vier Werte STADT, LAND, TELEFON VORWAHL, LANDESKENNUNG ( also DE für Deutschland, NE für die Niederlande . . . ) eine eigene Tabelle ?
Weil wenn ich das nicht tun würde, dann würden sich doch diverse Werte sich.
Und ich habe immer gelesen, dass man darauf unbedingt achten sollte.

Ist das tatsächlich so ?
Das wird doch dann ein riesiges Tabellen Netzwerk ?

Für eine Hilfe wäre ich sehr dankbar

Grüße
Dierk

Hallo Dierk,

erstmal herzlich Willkommen bei wer-weiss-was.

ich habe mich nun über einigen Zeit in Access eingelesen und
Beispiele angesehen.

hmm, aber auch noch nicht programmiert?

Meine Aufgabe ist eine Datenbank in Access zu erstellen.

wer stellt(e) die Aufgabe? der Prof?

Sie ist für eine Firma, welche zum Einen Dienstleistungen
anbieten ( insbesondere Beratungen, aber auch Montagearbeiten
durchführt ).

DIE Aufgabe kommt mir bekannt vor :smile:

Die erste Anforderung ist folgende :
Die Firma hat Eingangsrechnungen und Ausgangsrechnungen,
welche sie nur unbefriedigend überblicken kann.

jaja immer diese kleinen EinMann-Firmen deren Buchhaltung ne Katastrophe ist :smile:

So.
Es soll also durch eine Eingabe eines Zeitraumes die oben
genannte Auswertung erfolgen.

die Rettung naht :smile:

Eine große Frage stellt sich mir nun bei der
Tabellenerstellung.
Ist es wirklich! wichtig, jede Tabelle auf die dritte
Normalform zu bringen ?

auf die 3. WAS? Also ich programmiere jetzt ca. 28 Jahre mit Datenbanken, aber so einen Quatsch habe ich noch nicht gehört. Aber auch bei fortgeschrittenem Alter lernt man ja immer noch was dazu :smile:

Also beispielsweise gibt es ja eine Adresstabelle. Dort taucht
immer wieder ein Ort , ein Land, eine Telefon Vorwahl auf . .
. .

das ist normal

Erstelle ich also alleine schonmal für die vier Werte STADT,
LAND, TELEFON VORWAHL, LANDESKENNUNG ( also DE für
Deutschland, NE für die Niederlande . . . ) eine eigene
Tabelle ?

Ja, Anfänger machen das. Aber überlegen spätestens beim zweiten Projekt, mit ca. 100 solcher Felder, ob es da nicht doch einen einfacheren Weg gibt.

Weil wenn ich das nicht tun würde, dann würden sich doch
diverse Werte sich.

?? ja, was denn ??

Und ich habe immer gelesen, dass man darauf unbedingt achten
sollte.

?? worauf bitte ??

Ist das tatsächlich so ?

egal was du meinst = nein

Das wird doch dann ein riesiges Tabellen Netzwerk ?

wie gesagt, bei Anfängern schon :smile:
Fortgeschrittene arbeiten mit nur einer Tabelle für alles…
Experten greifen auf die Daten zurück, die sowieso schon da sind :smile:

Für eine Hilfe wäre ich sehr dankbar

Klar, wenn du kurz ausführlich beschreiben könntest, womit wir dir helfen können?

Grüße aus Essen
Wolfgang

Hey Wolfgang,

danke für den Willkommensgruß !
Nein, programmiert habe bisher immer nur kleinere Sachen, aber in diesem speziellen Fall bin ich noch in den Anfängen
. . . und die Aufgabe ist nicht von der Uni :wink:

Ich habe bisher eigentlich immer gelesen, dass man sämtliche Tabellen auf die sogenannte dritte Normalfrom bringen soll, sodass in dieser Tabelle keine transitiven Abhängigkeiten vorliegen ( wie es so schön heisst ).
Wie ich das meine richtig verstanden zu haben, bedeutet dies, dass ich in meinem Adressbeispiel eine unterste Tabelle Länderkennungen erstelle, in welcher nur eine Beziehung zwischen dem Länderkürzel ( DE, NE, FR . . . ) und bspw. einem Autowert existiert. Also eine 2,n Matrix.
Die Tabelle darüber ist dann eine 3,n Tabelle. Ein durchnummerierender Autowert, eine Spalte Länder ( Deutschland, Niederlande, Frankreich . . . ) und eine Spalte Länderkürzel, welcher ich dann Ziffern zuordne, die ich dann mit der Tabelle Länderkennungen verknüpfen kann.
So habe ich das verstanden.
Ich habe natürlich keinen Überblick was zu späteren Zeiten geschiet, wenn ich das ausser Acht lasse, habe aber immer wieder gelesen, dass sonst die Datenbank unnötig aufgebläht wird und Änderungen schwierig werden ( wenn sich bspw. eine Länderkennung ändern würde, müsste ich doch in der Tabelle Länder jeden einzelne DE in ein DEU ändern oder ? )

Und es würde dann doch irgendwann 10000 Mal das Wort Berlin stehen, als nur ein Beispiel.

Aber wie du sagst, gehst du andern vor, indem du alles ? ( meinst du alle Adressdaten ? ) in eine Tabelle verwirklichst ?
Aber aufspalten musst du doch dann trotzdem irgendwann, oder nicht ?

Und um auf mein eigentliches Problem zurückzukommen . . . die Eingangsrechnungen.
Würdest du eine Tabelle Eingangsrechnungen erstellen, die sämtliche Werte enthält ?
Also Rechnungseingang, vom wem sie eingegangen ist, wann sie mit Skonto zu bezahlen ist, in welchen Bereich diese Rechnung einzuordnen ist ( Büromaterial, Dienstleistungeinkauf . . . . ) . . .
All dieses in einer Tabelle ?
Das widerspricht denke ich total meinem Buch, welches ich durchgearbeitet habe ( extra um diese anfänglichen Fehler eben nicht zu machen und mir spätere Arbeit zu ersparen )

Wäre nett, wenn du nochmals antwortest

Grüße
Dierk

Hey Dierk,

Ich habe bisher eigentlich immer gelesen, dass man sämtliche
Tabellen auf die sogenannte dritte Normalfrom bringen soll,
sodass in dieser Tabelle keine transitiven Abhängigkeiten
vorliegen ( wie es so schön heisst ).

klar, bei abhängigen Tabellen sollte immer beachtet werden, dass eine referienzielle Integrität bestehnt, also mit Änderung- und Löschweitergabe.

Wie ich das meine richtig verstanden zu haben, bedeutet dies,
dass ich in meinem Adressbeispiel eine unterste Tabelle
Länderkennungen erstelle, in welcher nur eine Beziehung
zwischen dem Länderkürzel ( DE, NE, FR . . . ) und bspw. einem
Autowert existiert. Also eine 2,n Matrix.

so eine Tabelle kann man sich sparen. Ob nun in der Haupttabelle zwei Buchstaben oder zwei Zahlen (Verknüpfungs-ID) gespeichert werden macht den Kohl nicht fett (äh die DB nicht größer).

Die Tabelle darüber ist dann eine 3,n Tabelle. Ein
durchnummerierender Autowert, eine Spalte Länder (
Deutschland, Niederlande, Frankreich . . . ) und eine Spalte
Länderkürzel, welcher ich dann Ziffern zuordne, die ich dann
mit der Tabelle Länderkennungen verknüpfen kann.

viel zu aufwändig: wenn du schon eine Länder/(L)änder(k)enn(z)eichen -Tabelle erstellen willst, dann nur eine, wo beide Werte drin stehen, da nur ein LKZ zu einem Land passen kann, d.h. du hast ja dann keine 1:n Verknüpfung, die dir ggf. ein paar Bit an Datenbankgröße sparen würde.

btw. seit Umstellung der DIN für Postadressen ist das LKZ im Adressfeld nicht mehr zulässig, d.h. das kannst du dir sowieso sparen!!

(wenn sich bspw. eine Länderkennung ändern würde, müsste ich doch in
der Tabelle Länder jeden einzelne DE in ein DEU ändern oder ? )

klar, das macht man mit einer Änderungsabfrage, die in einer Minute programmiert ist und grade mal 10 Sekunden für die Änderung bei 100.000 Datensätzen braucht.

Und es würde dann doch irgendwann 10000 Mal das Wort Berlin
stehen, als nur ein Beispiel.

ob dort nun 1000 mal Berlin steht, oder 1000 mal ein Verweis in eine zusäztliche Tabelle, ist datentechnisch weniger relevant, aber programmiertechnisch hinterher ein Riesen Aufwand, um dann alle Verweistabellen einzubinden, wenn ich mal eine Telefonliste haben will.

Sinnvoll ist sowas in meinen Augen nur, wenn über 1 Mio. Adressen vorliegen. Da kann man dann ein paar KB an Datenbankgröße sparen.

Aber wie du sagst, gehst du andern vor, indem du alles ? (
meinst du alle Adressdaten ? ) in eine Tabelle verwirklichst ?
Aber aufspalten musst du doch dann trotzdem irgendwann, oder
nicht ?

Alle Adressdaten in eine Tabelle. Das „Aufspalten“ erfolgt später über Filter bzw. Abfragen.

Und um auf mein eigentliches Problem zurückzukommen . . . die
Eingangsrechnungen.
Würdest du eine Tabelle Eingangsrechnungen erstellen, die
sämtliche Werte enthält ?

klar, auf jeden Fall, nur eine Tabelle Rechnungseingang.

Also Rechnungseingang, vom wem sie eingegangen ist, wann sie
mit Skonto zu bezahlen ist, in welchen Bereich diese Rechnung
einzuordnen ist ( Büromaterial, Dienstleistungeinkauf . . . .
) . . .
All dieses in einer Tabelle ?

jein, bis auf die Adresse mit Zusatzinformationen von den Lieferanten, die würde ich in eine Lieferanten-Tabelle speichern, da diese auch noch für andere Zwecke genutzt werden können und nur den Verweis dann ins Rechnungseingangsbuch einbinden.
D.h. du mußt differenzieren, ist es ein „kleiner“ Wert in einem Feld, oder sind es viele Felder mit unterschiedlichen Werten wie z.B. Adress, Telefon, Fax - Informationen einer Firma. Dabei ist es natürlich sinnvoll diese an einer Stelle zentral zu speichern, nicht sinnvoll ist es für Länderbezeichnungen und LKZs etc.

Das widerspricht denke ich total meinem Buch, welches ich
durchgearbeitet habe ( extra um diese anfänglichen Fehler eben
nicht zu machen und mir spätere Arbeit zu ersparen )

keine Ahnung welches Buch du da gelesen hast, diese Vorgehensweise ist sinnvoll bei großen / sehr großen Datenbanken um Platz zu sparen.

Du mußt differenzieren:
Einzelwerte würde ich nicht in einer seperaten Tabelle speichern.
Kunden- , Lieferantendaten mit ggf. einer anhängenden Tabelle für Ansprechpartner und deren Daten würde ich wieder separieren.

Grüße aus Essen
Wolfgang

Hi Dierk,

Referenztabellen sind immer dann sinnvoll, wenn zu dem Begriff noch abhängige Daten existieren. Solange sichergestellt ist, dass zB das Länderkürzel nur als Kürzel benötigt wird, reicht eine Prüfung des Wertevorrates bei der Eingabe aus. Sobald aber verlangt wird, dass zum Kürzel auch der korrekte Text ausgegeben werden muss, kommst Du um eine Referenztabelle kaum noch herum. Das erleichtert dem, der die Daten eingibt, die Arbeit, und stellt sicher, dass nicht einmal Deutschland und daneben Doischland auf dem Adresszettel steht.

Gruß Ralf

Hallo Ralf,

Danke für deine Antwort, jedoch ist diese etwas schwierig für mich zu verstehen :smile:

Referenztabellen sind also Tabellen, die ein Detail genauer beschreiben oder ?

Du hattest geschrieben:
’ Solange sichergestellt ist,
dass zB das Länderkürzel nur als Kürzel benötigt wird, reicht
eine Prüfung des Wertevorrates bei der Eingabe aus. Sobald
aber verlangt wird, dass zum Kürzel auch der korrekte Text
ausgegeben werden muss, kommst Du um eine Referenztabelle kaum
noch herum ’

Insbesondere das verstehe ich nicht, könntest du dies noch einmal versuchen zu erklären ?

Danke und Grüße
Dierk

Hallo Wolfgang,

ersteinmal dankeschön für die Erläuterung, anfänglich scheinen Datenbanken oder speziell Access doch schon deutlich schwieriger zu sein als bspw. Excel.

Der Tip mit der Änderungsabfrage habe ich komplett ausser Acht gelassen. Ich habe zwar gelesen was es für Abfragen gibt, aber die Bedeutung noch nicht einordnen können :smile:

Eine Frage habe ich dann doch noch zum Verständnis.
Mein erstes Ziel, die diversen Rechnungen durch Angabe eines Zeitaumes anzeigen zu lassen ( in welcher Hinsicht auch immer, sei es, welche in einer spez. Woche bezahlt werden müssen . . ).
Da gehe ich doch so vor, dass ich erstmal eine Abfrage für dieses Kriterium erstelle ( das habe ich schon hinbekommen ) und das ganze dann in ein Formular einbinde ?
Denn ich habe es zur Zeit nur so, dass ich in dieser Abfrage die beiden Zeitpunkte eingebe, zwischen welchen es relevant ist, allerdings muss das ganze ja variabel geschehen und vom FORMULAR ausgehend.
D.h. ich möchte ja die Werte in das Formular eingeben die dann variabel an die Abfrage gegeben werden und mir somit aus der Rechnungstabelle entsprechendes ausgegeben wird . . .

Ist das soweit korrekt ?
Und wie mache ich das, dass die Werte aus dem Formular in die Abfrage übernommen werden ?

Grüße und danke allen für bisher
Dierk

Hallo Dierk,

anfänglich scheinen Datenbanken oder speziell Access doch schon
deutlich schwieriger zu sein als bspw. Excel.

alles was man nicht kennt ist schwierig, wenn du dich mit Access vertraut gemacht hast, wirst du kein Excel mehr benötigen :smile:

Da gehe ich doch so vor, dass ich erstmal eine Abfrage für
dieses Kriterium erstelle ( das habe ich schon hinbekommen )
und das ganze dann in ein Formular einbinde ?

ja, das ist ok

Denn ich habe es zur Zeit nur so, dass ich in dieser Abfrage
die beiden Zeitpunkte eingebe, zwischen welchen es relevant
ist, allerdings muss das ganze ja variabel geschehen und vom
FORMULAR ausgehend.

das ist kein Problem

D.h. ich möchte ja die Werte in das Formular eingeben die dann
variabel an die Abfrage gegeben werden und mir somit aus der
Rechnungstabelle entsprechendes ausgegeben wird . . .
Ist das soweit korrekt ?

ja, das ist soweit richtig

Und wie mache ich das, dass die Werte aus dem Formular in die
Abfrage übernommen werden ?

  • öffne das Formaular
  • klicke auf Ansicht
  • wähle Formularkopf/-fuß
  • blende nun die Symbolleiste „Toolbox“ ein
  • dort findest du ein Symbol für ein Eingabefeld |ab
  • klicke einmal auf das Symbol und dann in den Kopf des Formulars
  • ein Eingabefeld wird erzeugt
  • mit einem Rechsklick auf das Eingabefeld (nicht auf die Bezeichnung)
    kommst du zu den Eigenschaften
  • wähle dort den Reiter ALLES
  • bezeichne das Feld als: DATUM_von
  • das Format definierst du mit: Datum,Kurz
  • klicke nun wieder einfach auf das Formular
  • die Eigenschaftenanzeige solle nen nicht mehr zu sehen sein
  • erzeuge nun ein zweites Eingabefeld
  • benenne es mit: DATUM_bis

so, jetzt hast du schon mal deine zwei Eingabefelder die die benötigten Kriterien enthalten.
Da diese im Kopf plaziert sind, behindern sie auch nicht den restlichen Formularbereich.

Die Formulareigenschaften kannst du natürlich per Rechtsklick etc. aufrufen. Schneller geht es, wenn du dort, wo die Lineale links oben zusammen kommen, auf das schwarze Kästchen doppelklickst.

Kommen wir also zu den Eigenschaften des Formulars:
Auch hier wieder den Reiter ALLES wählen.

Datenherkunft: deine Tabelle mit den Daten
Standardansicht: Endlosformular

die restlichen Einstellungen lassen wir jetzt mal außeracht.

Kommen wir zur Abfrage:
wenn du dir die Zeile „Datenherkunft“ mal genauer ansiehst, findest du am Ende eine Taste mit drei Punkten.

Wenn du da draufklickst, öffnet sich der Abfragegenerator mit deiner Tabelle.

ziehe nun das Datumfeld, das du ausweten willst aus der Feldliste der Tabelle. Du kannst es auch einfach in der Spalte auswählen.

in der Zeile Sortierung, kannst du diese entsprechend einstellen.

Bei Access muß man einen „Trick“ kennen. Das Kürzel: ME. verweißt auf das aktuelle Formular!

D.h. für Kriterien geben wir nun die zwei Felder unseres Formulars ein, und zwar gleich mit der Bedingung:

zwischen ME.DATUM_von und ME.Datum_bis

Das wars schon :smile:

Grüße aus Essen
Wolfgang

Hey Wolfgang,

ich danke dir dafür recht herzlich !
Es funktioniert und vom Prinzip her denke ich, bekomme ich ähnliches nun auch hin, denn es sollen die Eingangsrechnungen ja nicht nur nach bspw. RechnungsEingang ausgewertet werden, sondern ja auch, wann sie zu bezahlen ist.

Da muss ich doch nun einfach nur für jede Möglichkeit das tun, was du beschrieben hast ?
Dann habe ich ja hinterher für jede Tabellenauswertung eine eigene Abfrage ?

Gut.
Wie bekomme ich es denn hin, dass ich nicht sofort bei Formular Öffnung die Kriterien angeben muss, sondern über eine Schaltfläche in einem geöffneten Formular.

Wenn ich jetzt das Formular Eingangsrechnungen öffne, kommen PopUp Fenster, welche mich zu einer Eingabe ( also Datum_von und Datum_bis ) auffordern. Wie kann ich das also sperren und die Abfrage erst laufen lassen, wenn ich die Schaltfläche anklicke ( oder Enter drücke )

Grüße und dankeschön
Dierk

Hey Dierk,

Da muss ich doch nun einfach nur für jede Möglichkeit das tun,
was du beschrieben hast ?
Dann habe ich ja hinterher für jede Tabellenauswertung eine
eigene Abfrage ?

ja, genau

Wie bekomme ich es denn hin, dass ich nicht sofort bei
Formular Öffnung die Kriterien angeben muss, sondern über eine
Schaltfläche in einem geöffneten Formular.

das wäre zu bewerkstelligen mit einer Taste, die wieder ein Formular aufruft, in dem du dann die Datumsfelder hast.
Hat aber den nachteil, wenn du dann dieses Formular schließt, fehlen der Abfrage wieder die Datenfelder und du bekommst wieder Fehlermeldungen.

Wenn ich jetzt das Formular Eingangsrechnungen öffne, kommen
PopUp Fenster, welche mich zu einer Eingabe ( also Datum_von
und Datum_bis ) auffordern. Wie kann ich das also sperren und
die Abfrage erst laufen lassen, wenn ich die Schaltfläche
anklicke ( oder Enter drücke )

es geht viel einfacher: gebe den Datumsfeldern einen Standardwert mit:
=datum()
das entspricht dem heutigen (im Pc eingestellten) Datum.

Grüße und dankeschön
Dierk

Hey Wolfgang,

es geht viel einfacher: gebe den Datumsfeldern einen
Standardwert mit:
=datum()
das entspricht dem heutigen (im Pc eingestellten) Datum.

ich habe nun den beiden Feldern den Standardwert des aktuellen Datums gegeben. Nun steht zwar bei Formularöffnung in den beiden Feldern das aktuelle Systemdatum, allerdings ist die Abfrage der beiden Werte vorher immer noch da.
ich trage dort halt nichts ein, aber Sinn der Sache ist das doch so wie ich das gemacht habe nicht oder ?

Grüße
Dierk

Hey Dierk,

ich habe nun den beiden Feldern den Standardwert des aktuellen
Datums gegeben.

gut, jetzt dienen diese DUMMY-Werte als „Platzhalter“ für die Abfrage.

Nun steht zwar bei Formularöffnung in den
beiden Feldern das aktuelle Systemdatum, allerdings ist die
Abfrage der beiden Werte vorher immer noch da.

d.h. die Ansicht des formulars wird nicht aktualisiert.
Das kannst du erreichen in dem du beim Ereignis: beim Anzeigen = [Ereignisprozedur], folgenden VBA-code eingibst (wieder die drei Punkte am Ende)

me.requery

das solltest du bei jedem Datumsfeld auch noch nachholen, allerdings beim Ereignis: Bei Fokusverlust. damit das Formular bei jedem Verlassen der Felder aktualisiert wird. Leider macht das Access-Formular diese Aktualisierung nicht von alleine.

ich trage dort halt nichts ein,

ähm wo trägst du nichts ein?

aber Sinn der Sache ist das doch so wie ich das gemacht habe nicht
oder ?

Wenn ich dich richtig verstanden habe war die Aufgabenstellung folgende:

Du hast Daten, die du nach Datum auswerten willst und die in einem Formular dargestellt werden sollen.

Die Auswahl der Datumswerte willst du dynamisch gestalten, so dass man im selben Formular abhängig von den Datum von-bis Werten unterschiedliche Auswertungen anzeigen lassen kann.

Wenn du nun noch die Erweiterungen einpflegst, hast du genau das, was ich oben beschrieben habe.

Grüße aus Essen
Wolfgang

Hi Wolfgang,

Wenn ich dich richtig verstanden habe war die Aufgabenstellung
folgende:

Du hast Daten, die du nach Datum auswerten willst und die in
einem Formular dargestellt werden sollen.

Die Auswahl der Datumswerte willst du dynamisch gestalten, so
dass man im selben Formular abhängig von den Datum von-bis
Werten unterschiedliche Auswertungen anzeigen lassen kann.

Wenn du nun noch die Erweiterungen einpflegst, hast du genau
das, was ich oben beschrieben habe.

genau, dabei hast du mir ja schon super geholfen.
Das 'Problem ist nun nur folgendes :
Ich öffne das Formular und es erscheint für jedes Eingabefeld in den Formular PopUp Fenster, in denen ich die Kriterien ( Datum von - bis ) eingeben soll. Trage ich in die PopUp Fenster nichts ein sondern klicke nur auf Ok, öffnet sich das Formular und in den Eingabefeldern erscheint das aktuelle Systemdatum.
Nur ist das Aufpoppen der Eingabe das, was stört. Wenn ich nun ein Formular habe, mit mehrern DatenEingabe Feldern, kommt für jedes ein PopUp Fenster zu Beginn.
Am liebsten hätte ich es, wenn man das Formular öffnet, in die entsprechenden Felder Daten einträgt und dann auf die dazugehörige Schaltfläche klickt um die Auswertung zu starten.

d.h. die Ansicht des formulars wird nicht aktualisiert.
Das kannst du erreichen in dem du beim Ereignis: beim Anzeigen
= [Ereignisprozedur], folgenden VBA-code eingibst (wieder die
drei Punkte am Ende)

me.requery

das solltest du bei jedem Datumsfeld auch noch nachholen,
allerdings beim Ereignis: Bei Fokusverlust. damit das Formular
bei jedem Verlassen der Felder aktualisiert wird. Leider macht
das Access-Formular diese Aktualisierung nicht von alleine.

Meintest du das damit ? Wie man VBA Code eingibt weiss ich, allerdings finde ich ‚beim Anzeigen nicht‘. Ich denke es soll in den Eigenschaften des DatumsEingabe Feldes sein, doch dort finde ich es leider nicht.
Was bewirkt der Code me.requery ?

Danke und Grüße
Dierk

Hi Dierk,

Ich öffne das Formular und es erscheint für jedes Eingabefeld in den Formular PopUp Fenster, in denen ich die Kriterien ( Datum von - bis ) eingeben soll.

dann sind die Bedingung im Kriteriumfeld der Abfrage falsch!!
Sorry, der Verweis Me. in einer Abfrage funktioniert nicht, da muß man die vollständige Formularbezeichnung angeben:

Es sollte dort stehen:
Zwischen Formulare![Rechnungseingang]![DATUM_VON] Und Formulare![Rechnungseingang]![DATUM_BIS]

Wobei ich jetzt den Formularnamen mal als „Rechnungseingang“ definiert habe. D.h. du mußt ggf. den FormularNamen entsprechend ändern.

Am liebsten hätte ich es, wenn man das Formular öffnet, in die
entsprechenden Felder Daten einträgt und dann auf die
dazugehörige Schaltfläche klickt um die Auswertung zu starten.

ok, mach das erstelle ein Dateneingabeformular und ein Datenausgabeformular. Wobei man ggf. überlegen sollte, für die Datenausgabe einen Report zu verwenden.

Wie man VBA Code eingibt weiss ich, allerdings finde ich
‚beim Anzeigen nicht‘.

mein Text war:

d.h. die Ansicht des Formulars wird nicht aktualisiert.
Das kannst du erreichen in dem du beim Ereignis: beim Anzeigen

Es geht hier um das Ereignis des Formulars!!
kannst du dir aber sparen, da das Problem ja durch die Popups gelöst sein dürfte.

Ich denke es soll in den Eigenschaften des DatumsEingabe Feldes sein,
doch dort finde ich es leider nicht.

dort sollst du auch den Code einfügen. Allerdings dort unter Fokusverlust und nur beim zweiten Feld Datum_BIS, das reicht aus.

Was bewirkt der Code me.requery ?

me. = das aktuelle Formular

(RE)QUERY = (neu) abfragen = Abfrage neu ausführen = Anzeige aktualisieren

Grüße aus Essen
Wolfgang

Hi Dierk,

ich habe dir mal das Ganze per Mail zugeschickt.

Grüße aus Essen
Wolfgang

1 Like

Hey Wolfgang,

einen Riesendank für die Arbeit die du dir gemacht hast !
Das hat mir sehr geholfen.
Und das Layout des Formulares gefällt mir, da brauche ich wohl noch etwas Erfahrung.

Ich werde mich jetzt mal weiter daran versuchen.

Grüße aus Aachen
Dierk