Formular für wiederkehrende Prüfung

Schribbi

Aktiver Benutzer
Beiträge
31
Hallo Leute, ich bin ganz neu hier weil ich langsam mit meinen rudimentären Kenntnissen an meine Grenzen stoße.
Mein Access-Kurs liegt schon 20 Jahre zurück und wenn man es nicht regelmäßig macht, ist leider bald Ende. Ich hoffe ihr könnt mir helfen.

Folgender Fall: Ich habe Maschinen, an denen regelmäßig bestimmte Teile geprüft werden und deren Verschleißgrad festgestellt werden sollen. Der Tonus ist etwa zwei bis drei Jahre. Meine Idee war nun, ein Formular zu bauen, in dem ich die Daten eingebe und sie so in eine Tabelle bekomme. Ich nehme unter Anderem Maschinen-Stunden, Seriennummer der Maschine, Standort und den Zustand der zu prüfenden Teile auf.
Da die Prüfung wiederkehrend ist, müsste ich für jedes Mal eine neue Tabelle anlegen, wäre nicht das Problem, aber ich hätte gern, dass die abgelesenen Stunden von der letzten Prüfung in der neuen Tabelle erscheinen und als Berechnung für die gelaufenen Stunden bis zu aktuellen Prüfung dienen.

Also quasi:
Stunden 2020__Stunden 2022__Stunden gelaufen
100___________150__________ 50

Stunden 2022__Stunden 2024__Stunden gelaufen
150___________180__________30

Konkret die Frage, wie erstelle ich, am liebsten automatisch, eine neue Tabelle für 2024 und bekomme die Daten aus 2022 in die entsprechende Spalte?

Vielen dank für eure Hilfe
 
Werbung:
Das wäre völliger Murks und Du wirst das in Zukunft verfluchen. Lies Dich kurz ein, was Normalisierung bei einer Datenbank bedeutet:

Die Lösung ist eine Tabelle für Prüfungen wo das Jahr oder das Datum der Prüfung Bestandteil der Tabelle ist. Nur so brauchst Du Dich nicht mit Datenübertragungen quälen und spätestens wenn Du eine Auswertung machen willst wirst Du dankbar darfür sein.
 
Abgesehen davon, dass ich Walter voll zustimme, ist das eigentlich eine simple Sache, wenn man es richtig anfängt:
Der Sinn einer Datenbank besteht unter anderem darin, Daten möglichst ohne Redundanzen strukturiert abzulegen und so zu verknüpfen, dass
bereits über die Struktur das DB-System Fehler wie Doppelerfassungen oder falsche Daten oder wie alphanumerische Inhalte in numerischen Felder automatisch ausgeschlossen werden.

Du benötigst eigentlich erstmal nur 2 Tabellen
Maschinen und Prüfungen
Diese verbindest Du über die MaschienenNr mit einer 1:n-Beziehung.
In der Maschinentabelle erfasst Du die Stammdaten wie MaschNr, Bezeichnung und Werte, die die Maschine kennzeichnen, etc.
Die MaschinenNr definierst Du als Primärindex. Das gewährleistet, dass es jede Maschine nur einmal geben kann.
Die Tabelle Prüfungen kann dann, wenn sie über die MaschNr als 1:n Beziehung verbunden ist, beliebig viele Datensätze pro Maschine aufnehmen.
Sie enthält also mindestens die Felder MaschNr und Prüfdatum (nenne es nicht nur Datum, weil das eine reservierte Funktion in Access ist). Dazu deine Felder für die Prüfungsergebnisse.
Um die gelaufenen Stunden zu berechnen benutze keine berechneten Felder direkt in den Tabellen! Das fällt dir irgendwann vor die Füße. Sondern erstelle für Berechnungen, Sortierungen, Summenbildungen und andere Auswertungen jeweils Abfragen. Hierbei hilft Access mit recht leistungsfähigen Assistenten.
Auch sollten Tabellen nicht direkt als Datenherkunft für Formulare und Berichte genommen werden, auch hier bilden jeweils passende Abfragen die Datenherkunft.

Also, wie von Walter bereits angeregt: Schau Dir die Grundlagen an, so wirst Du mit Access für solche, begrenzten Aufagen Freude haben.
Empfehlenswert ist z.B. www.access-turorial.de
 
Ich bedanke mich für die ausführlichen Antworten und werde mich weiter rein arbeiten. Ein bisschen ärgert es mich ja schon, dass ich das Thema Access so vernachlässigt habe, weil eigentlich ist das Tool ja echt cool.
 
Ich hab jetzt meine Tabellen soweit fertig. Habe dazu Abfragen erstellt und daraus Formulare gebastelt. Soweit so gut, jetzt hänge ich an den nächsten Schritten.

Wie ich bereits schrieb, kommt die Prüfung regelmäßig (alle 2 bis 3 Jahre). Ich stelle mir vor, dass in meinem Formular ein "Bericht" über die letzte Prüfung angezeigt wird um zu sehen, was sich geändert hat. Ist das grundsätzlich möglich?
 
Erstelle eine Abfrage: Filtere alle Prüfungen einer Maschine, sortiere sie absteigend nach Datum, dann hast Du die Daten der letzten Prüfung immer oben stehen. Diese Abfrage kannst Du für eine (Unter)Formular oder Report als Datenquelle nehmen.
 
So groß kann die Datenbank ja nicht sein. Lad sie doch mal mit anonymisierten Beispieldaten hoch. Denn, wenn das Datenmodell schon Defizite hat, wird es hinten raus immer schwieriger.
 
Ok. Einige Dinge für den Anfang ganz gut umgesetzt. Einige Sachen sind ausbaufähig, klar.
Ich nehme das mal als Grundlage und lade dann eine Version mit Beschreibung der Änderungen wieder hoch.
 
Hier mal eine Version für den Anfang und noch ohne VBA.

Tabellen normalisiert, ggf. Primärschlüssel korr.

Beziehungen erstellt um referentielle Integrität zu gewährleisten

Befundungsdatum in BefTabeller ein. Wenn das Jahr immer dem Jahr des Befdatums entspricht, kann das BefJahr raus, bzw. immer dynamisch ermittelt werden.

Schreibweise in Tabellen/Feldnamen ohne Umlaute, Leerstellen, Sonderzeichen angepasst.

Nachschlagefelder und Listenfelder mit Wertelisten in Tabellen entfernt. Gibt nur Probleme.
Lieber Kombifelder mit Tabellen/Abfragen als Datenquelle in Formularen verwenden.
(Eigentlich soll der Anwender die IDs nicht sehen. Ich habe sie hier aber der besseren Nachvollziehbarkeit halber drin gelassen)

Formular fmFahrzeug neu erstellt, mit Ufm der Befundungen.
Auch dort Kombinationsfelder eingerichtet.

Grau unterlegte Felder werden nun errechnet und nicht eingegeben.

Startformular in den Optionen eingestellt

Erweiterungsvorschläge:
Feld "Wartungsintervall Monate". Damit ließe sich ein Wartungsplan bauen.
Suchfelder zum leichteren Auffinden bestimmter Datensätze: FahrzNr oder KfzKennzeichen

ggf. Erfassungsmasken für die Untertabellen

Weitere Pläusibilitätsprüfungen, z.B. eine Warnung, wenn es schon eine neuere Befundung gibt. Oder, dass eine Befundung nicht älter als das Baujahr eine Farzeugs oder einer Kette sein darf.......

und dem Praktiker fallen dann sicher noch einige Möglichkeiten ein.

Sicher enthält diese Version auch noch Fehler oder Verbesserungsmöglichkeiten.
Immer her damit.. :-)
 

Anhänge

Danke Andy, ich hab noch nicht rein geschaut, aber das liest sich schon nach mehr, als ich erwartet habe. Irgendwie dachte ich, so schlimm sei mein Anfang gar nicht😳
 
Ist ja nicht schlimm, sagte ich ja schon. Versuche die Dinge mal nachzuvollziehen. Vor allem die Tabellenbeziehungen und in den Abfragen die berechneten Felder (sogenannte Domänenaggregate sind ein mächtiges Werkzeug), die dann einfach in die Formulare eingebunden werden können.
Bei Fragen melden.
 
Hallo Andy, ich fülle grade meine Daten in die Datenbank und dabei bin ich auf eine Frage gestoßen. Kann ich das Feld "Fzg_Kennz" so umbauen, dass es sowohl ein Eingabe- als auch ein Suchfeld bzw Listenfeld ist? Ich möchte ja nicht jedes mal das Kennzeichen eingeben um dann Festzustellen, dass es das schon gibt.
 
Werbung:
Wenn Du das Feld im Entwurfsmodus mit der rechten Maustaste anklickst, kannst Du es mit "ändern zu" in ein Kombinationsfeld umwandeln. Allerdings musst Du dann die Eigenschaften des Feldes selbst einstellen.
- Vor Aktualisierung VBA-Code Docmd.findfirst usw. , wenn nicht gefunden zum neuen Datensatzspringen, usw.
Das kann kniffelig werden, weil das Feld ja gleichzeitig das Datenfeld des aktuellen Satzes ist. Du änderst also unter umständen versehentlich das Kennzeichen des aktuellen Satzes.

Wenn es im Moment das einzige Feld ist, wonach du suchen möchtest, würde ich es erstmal mit einem neuen Suchfeld im Kopf der Maske versuchen. Dann ist es mit dem Assistenten am einfachsten: (Bei mehreren Suchfeldern empfielt sich später vielleicht ein eigener Suchdialog, da dann verschieden Kombinationen der Feldinhalte abgefragt werden müssen.)

Zwischenablage01.webp
Zwischenablage02.webp
Zwischenablage03.webp
Zwischenablage04.webp
Zwischenablage05.webp


Wenn er dann nichts findet, macht er halt nichts weiter, und du weißt, dass es das Kennzeichen nicht gibt. In das generierte Makro kannst Du in dem Fall ja noch die Aktion "Gehe zu neuem Datensatz" einbauen.

Da generierter Makro-Code später oft etwas verwirrend sein kann, würde ich dann den Makrocode in VBA Code umwandeln. Dazu gibts Hilfe in diversen Foren. Macht aber nur Sinn, wenn Du dich auch weiter mit VBA aueinandersetzen möchtest.
 
Zurück
Oben