Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Smoere78 am April 21, 2017, 07:45:01

Titel: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: Smoere78 am April 21, 2017, 07:45:01
Hallo liebe Access-o-mania Gemeinde,

ich hole jetzt mal etwas weiter aus um euch das Ziel und den Zweck meiner Datenbank näher zu bringen und um dann zur Frage zu kommen.

Als Endresultat hab ich vor 240 Unterkunftsräume, für die ich verantwortlich bin zu verwalten.
Das Projekt habe ich für mich um schrittweise vorgehen zu können in Teilprojekte unterteilt. Das bedeutet:
1. Erfassen der Gebäude und Räume in der Datenbank (hab ich bereits gemacht)
2. Erfassen aller möglichen Einrichtungsgegenstände in einer anderen Tebelle (hab ich bereits gemacht)
3. Mit einem Formular die Einrichtungsgegenstände und Anzahl dem jeweiligen Raum zuzuordnen. (Hab ich bereits gemacht und hoffe es ist so richtig)
4. Eine Berichtoption, die jetzt für alle Räume oder einen bestimmten Raum jeweils auf einer DIN A4 Seite mit seinem jeweiligen Einrichtungsgegenständen und deren Anzahl sozusagen als Aushang ausgibt. (Das krieg ich einfach nicht hin :-/)
5. So wie den Räumen Einrichtungsgegenstände zugeordnet werden, sollen auch Schäden zugeordnet werden können. und selektierbar sein mit erledigt und nicht erledigt (Damit habe ich schon begonnen, stecke aber fest)
6. Ein letzter großer Schritt soll es dann sein Reservierungen für die Räume vornehmen können. Also einfach Freitextnamen für einen gewissen Zeitraum. Mit der Riesen Herausforderung eine Abfrage machen zu können um mir freie Räume anzuzeigen und natürlich auch die aktuelle Belegung an einem bestimmten Tag.

Ich hab halt gemerkt, dass ich mit meiner Zettelwirtschaft hier nicht mehr weiterkomme und mich versucht in das Access einzulesen und nachzubauen. Aber ich komm da einfach nicht mehr weiter.
Mir ist wichtig, dass ihr wisst, dass es nichts kommerzielles ist. Sondern nur etwas damit ich mir selbst die Arbeit vereinfachen kann.

Ich hab das hier bei Berichte reingeschrieben weil die Nummer 4 mein aktuelles Problem ist. Wenn sich aber jemand findet, der Spass an der Sache hat und die nötige Zeit, wär es natürlich cool wenn er mir auch bei den anderen Punkten hilft.

Mir war es jetzt auch wichtig, dass ihr sehen könnt wo ich hin will mit der Datenbank, damit ihr mir auch gleich schon sagen könnt was ich jetzt schon für grundlegende Fehler gemacht habe.

Die accdb habe ich mal angehängt, so dass ihr euch das was ich bis jetzt geschafft habe auch mal ansehen könnt.

Ich arbeite auf Win 10 mit Access 2013.
ich habe versucht die Datenbank anzuhängen. Aber leider ist sie zu groß. Daher hier der Link:
https://dl.dropboxusercontent.com/u/10312026/Datenbank1.accdb
Ich hoffe das ist okay so.

Danke schon mal an jeden der sich die Mühe gemacht hat bis hier unten zu lesen und natürlich und vor allem an diejenigen die mir helfen wollen. Ihr seid super!!
Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: DF6GL am April 21, 2017, 19:33:38
Hallo,

der Aufbau der Tabelle sieht auf den ersten Blick soweit ok aus.  Lediglich die Benamsung der Tabellenfelder mit reservierten Wörtern sollte geändert werden (Wert, Anzahl), ebenso eine eindeutige Benennung für die ID-Felder gewählt werden.  (z. B. ID---> SchadID)



Was genau ist bei Punkt 4 nicht hin zu bekommen?

und wo steckst Du bei Punkt 5 fest?



Für eine Belegungsübersicht/Planung ist eine weitere Tabelle erforderlich, in der Beginn- und Endedatum pro Raum festgehalten werden.

Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: Smoere78 am April 22, 2017, 07:35:08
Guten Morgen,

der Aufbau der Tabelle sieht auf den ersten Blick soweit ok aus.  Lediglich die Benamsung der Tabellenfelder mit reservierten Wörtern sollte geändert werden (Wert, Anzahl), ebenso eine eindeutige Benennung für die ID-Felder gewählt werden.  (z. B. ID---> SchadID)

Okay, das klingt jetzt nicht so schwer. Hab ich jetzt mal überarbeitet und die Datenbank im Link aktualisiert




Was genau ist bei Punkt 4 nicht hin zu bekommen?

Mein Problem ist, dass am Ende ein A4 Ausdruck herauskommen soll, der einen Kopf hat bestehend aus nur genau einem Gebäude und Raum und darunter dann die Anzahl und Möbeltypen anzeigt, die drin sind. Bei mir kommen immer nur irgendwelche Listen. Idealerweise müsste man den Raum noch auswählen können um den Bericht dafür zu bekommen.


und wo steckst Du bei Punkt 5 fest?

Der Unterschied zu den Möbeln ist bei den Schäden, dass ich verschiedene Ansichten brauche. Zum beispiel erledigt/unerledigt und filtern möchte nach gebäude/raum.

Für eine Belegungsübersicht/Planung ist eine weitere Tabelle erforderlich, in der Beginn- und Enddatum pro Raum festgehalten werden.

Das werde ich gleich probieren anzulegen.
Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: DF6GL am April 22, 2017, 10:52:16
Hallo,
hier mal ein beispielhaftes "Update" mit besserer Benamsung und einem Bericht, der das Inventar zu einem Raum ausgibt.
Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: Smoere78 am April 24, 2017, 07:19:59
Hallo,

erstmal vielen Dank für die Überarbeitung. Ich habe mich jetzt gerade erstmal zurechtfinden müssen um nachzuvollziehen was alles geändert wurde und wie.

Ein paar Fragen bleiben bzw. ergeben sich da für mich:

Du hast die Tabelle mit Gebäude und Raum normalisiert und getrennt. An sich ja logisch, da jedes Gebäude mehrfach vorkommt.
Es ist aber so, dass nicht jeder Raum in jedem Gebäude vorkommt und die Raumnr in der tbl_Raeume gar nicht mehr vorkommt. Wenn das so sein muss weiss ich nicht wie ich im Formular "begrenzen" kann, dass keine Geb/Raum Kombinationen wählbar sind, die es nicht gibt.

Das Formular mit dem Berichtsbutton finde ich eine super Idee, weil man alles in einem Formular erledigen kann.
Die Tabellendarstellung ist sicherlich zielführender als mein Versuch. Aber wie kann ich den Raum wählen für welchen ich Inventar eingeben muss. Das habe ich noch nicht verstanden.

Das "Update" ist der Wahnsinn!!

Gruß Marcel
Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: DF6GL am April 24, 2017, 08:07:16
Hallo,

Es ist aber so, dass nicht jeder Raum in jedem Gebäude vorkommt und die Raumnr in der tbl_Raeume gar nicht mehr vorkommt.

Deine primäre Sichtweise sind die Räume (tbl_Raeume), die zu verwalten sind.

Es wird dann jedem existiertem Raum ein Gebäude zugewiesen. Deshalb das Kombifeld.

In tbl_Gebaeude stehen alle existierenden Gebäude.


Zitat
wie ich im Formular "begrenzen" kann, dass keine Geb/Raum Kombinationen wählbar sind, die es nicht gibt.


Was willst Du begrenzen? Es gibt nur so viele Räume (mit dem jeweiligen Gebäude), wie angelegt wurden.

Im UFO (in frm_Raum) stehen die Räume, die in einem Gebäude existieren.


Zitat
finde ich eine super Idee, weil man alles in einem Formular erledigen kann

Das ist Standard in einer DB.  Alle Abläufe (mit Ausnahmen  ;) ) werden in/mit Formularen erledigt.

Zitat
Aber wie kann ich den Raum wählen für welchen ich Inventar eingeben muss.

Die DB ist nur "beispielhaft", d. h. unvollständig und soll nur die Vorgehensweise zeigen.. Erweiterungen müssen halt noch eingebaut (von Dir) werden.


Dazu muss  in frm_Raum ein ungebundenes Auswahlkombi eingebaut werden, mit dessen Hilfe der gesuchte DS angezeigt (gefiltert) werden kann.


Das Register ist deshalb benutzt, weil es für tbl_Raeume mehrere 1-n Tabellen gibt (z. Z. tbl_RaumInventar, tbl_Reservierungen).

Zudem sind noch Fragen zum Inhalt zumindest von tbl_Reservierungen offen.... (...Einheit..,  ...Name...  ?) 
Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: Smoere78 am April 26, 2017, 08:03:09
Hallo,

ich hab das jetzt mal versucht das Formular weiterzubauen und die Datenbank im Link aktualisiert

Dabei sind mir erstmal 2 Dinge aufgefallen, die ich nicht gefixed bekomme.
1. Am Anfang hatte ich es so, dass ich oben im Hauptformular einen Raum ausgewählt habe und im Unterformular entsprechend die Daten kamen. Das klappt gerade nicht mehr und ich habe keinen Plan warum.
2. Das Reservierungsunterformular lässt sich nie in der Formularansicht darstellen.

Mit dem Datumsangaben hatte ich noch Probleme, aber das klappt mittlerweile.

Du hast vor den Bericht eine Abfrage geschaltet. Sobald ich das Formular jetzt funktionstüchtig habe, werde ich mich da mal ransetzen.

Folgendes hab ich dann vor:
Im Unterformular Schäden:
- Bericht mit den offenen Schäden pro Raum
- Bericht mit abgeschlossenen Schäden pro Raum
- und das gleiche nochmal für alle Räume zusammen

Im Unterformular Reservierungen wird das wahrscheinlich um einiges schwieriger bzw. ich weiss gar nicht ob das mit Access umsetzbar ist.
1. Anzeige über dem Unterformular den für den Raum und aktuellen Tag Reservierungsdatensatz.
2. Bericht für den Raum mit allen Reservierungen für das Kalenderjahr für den jeweiligen Raum
3. Bericht über freie Räume für einen bestimmten Zeitraum
4. Bericht über die Belegung an einem bestimmten Tag

Im Unterformular Inventar kommt dann noch ein Bericht mit den Summenwerten zu dem gebuchten Inventar

Dank deiner Hilfe bin ich aber schon 10 Schritte weiter. Danke dafür!


Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: DF6GL am April 26, 2017, 09:40:23
Hallo,


der Grund für das "nicht klappen" liegt darin, dass in den  Datenherkünften der Forms  verknüpfte (inner join)  Abfragen stehen.

Solche verknüpfte Abfragen sind an dieser Stelle nicht brauchbar, weil sie die gelieferten Daten einschränken und evtl. sogar nicht aktualisierbar sind, d. h., es können keine Daten editiert werden. 

Allenfalls sind (unverknüpfte) Abfragen nutzbar, wenn eine gewisse Sortierung von vornherein gewünscht ist.


Stelle die Datenherkünfte der Forms nur auf die entspr. Tabelle (Tabellenname)  ein .   Die Verknüpfungen mit den UFOs werden über die UFO-St.El.-Eigenschaften "Verknüpfen von/nach" geregelt.



Was bedeutet "Liegenschaftsgerät" bei einem Register-Reiter?

Was bedeutet txtEINHEITreservierung?  Welche Daten sollen  damit erfasst werden?  (Hatte dieses Feld wegen dieser Unklarheit noch nicht umbenannt)

Desgleichen txtNAMEreservierung. Auch hier muss gefragt werden, welche weitere Verwendung dieses Feld in der DB haben soll.  Evtl. sind hier weitere Tabellen ("tbl_Gaeste", etc.  mit ihren Daten  erforderlich)

Zum "Schaden" :
Muss der Schaden eines Raumes(!) nicht näher bestimmt werden? Z. B. Art des Schadens, Schadens-Objekt (--> ein Inventar-Gegenstand),    Reparatur-Maßnahmen, etc. . 

Wenn das der Fall ist, müssen die Beziehungen geändert werden und   "tbl_Raumschaeden" (umbenannt in "tbl_InventarSchaeden")  muss an "tbl_RaumInventar" angebunden werden.

In "tbl_Inventar"  sind dann auch z. B. das Waschbecken, die Wasserarmaturen, die Wände , Fenster und Fußbodenbelag usw.  aufzunehmen,eben alles, was einen Schaden erleiden könnte.

frm_Reservierungen steht auf "Datenblatt", sollte aber auf "Einzelnes Formular" stehen.
Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: Smoere78 am April 26, 2017, 10:15:01
Zitat von: DF6GL am April 26, 2017, 09:40:23

der Grund für das "nicht klappen" liegt darin, dass in den  Datenherkünften der Forms  verknüpfte (inner join)  Abfragen stehen.

Solche verknüpfte Abfragen sind an dieser Stelle nicht brauchbar, weil sie die gelieferten Daten einschränken und evtl. sogar nicht aktualisierbar sind, d. h., es können keine Daten editiert werden. 

Allenfalls sind (unverknüpfte) Abfragen nutzbar, wenn eine gewisse Sortierung von vornherein gewünscht ist.


Stelle die Datenherkünfte der Forms nur auf die entspr. Tabelle (Tabellenname)  ein .   Die Verknüpfungen mit den UFOs werden über die UFO-St.El.-Eigenschaften "Verknüpfen von/nach" geregelt.

Was sind denn UFOs und was sind denn InnerJoin Abfragen? Bzw. wie und wo hab ich diese fabriziert?
Das habe ich leider noch nicht verstanden.


Was bedeutet "Liegenschaftsgerät" bei einem Register-Reiter?

Liegenschaftsgerät bedeutet Inventar

Was bedeutet txtEINHEITreservierung?  Welche Daten sollen  damit erfasst werden?  (Hatte dieses Feld wegen dieser Unklarheit noch nicht umbenannt)

Das ist eine Gruppenbezeichnung für die Nutzer

Desgleichen txtNAMEreservierung. Auch hier muss gefragt werden, welche weitere Verwendung dieses Feld in der DB haben soll.  Evtl. sind hier weitere Tabellen ("tbl_Gaeste", etc.  mit ihren Daten  erforderlich)

Name und Gruppe hab ich deswegen nicht weiter normalisiert in einer Adresstabelle oder ähnlichem, weil die Besuche meist einmaliger Natur sind und kein Bedürfnis besteht die Daten in der Form zu speichern. Es reicht als Freitext vollkommen aus. Die Daten werden lediglich in den Berichten wiedergegeben.

Zum "Schaden" :
Muss der Schaden eines Raumes(!) nicht näher bestimmt werden? Z. B. Art des Schadens, Schadens-Objekt (--> ein Inventar-Gegenstand),    Reparatur-Maßnahmen, etc. . 

Wenn das der Fall ist, müssen die Beziehungen geändert werden und   "tbl_Raumschaeden" (umbenannt in "tbl_InventarSchaeden")  muss an "tbl_RaumInventar" angebunden werden.

In "tbl_Inventar"  sind dann auch z. B. das Waschbecken, die Wasserarmaturen, die Wände , Fenster und Fußbodenbelag usw.  aufzunehmen,eben alles, was einen Schaden erleiden könnte.

Nein, Ziel der Schäden ist nur zu protokollieren wann ein Schaden gemeldet wurde und ob er schon abgeschlossen wurde. Eine so detaillierte Normalisierung wäre da nicht zielführend. Da reicht der Freitext, weil der Schaden an den Hausmeister auch nur in Freitext gemeldet wird.

frm_Reservierungen steht auf "Datenblatt", sollte aber auf "Einzelnes Formular" stehen.

Danke für den Hinweis, damit konnte ich es beheben.
Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: DF6GL am April 26, 2017, 12:29:07
Hallo,

ZitatWas sind denn UFOs und was sind denn InnerJoin Abfragen? Bzw. wie und wo hab ich diese fabriziert?
Das habe ich leider noch nicht verstanden.

UFO  = Unterformular.  Ein Formular wird zum UFO, wenn es mit einem UFO-Steuerelement in einem anderen (Haupt)Form  (HFO)  angezeigt wird.

Die Abfragen sind vermutlich mit dem Datenherkunft-(Abfrage-) Assistenten  generiert worden. D. h. Ein Klick auf die 3 Pünktchen in der Eigenschaft "Datenherkunft" im Eigenschaftenfenster (des Forms)öffnet den Abfrageentwurf, dem  bei mehrere Tabellen hinzugefügt werden können und die automatisch entspr. den definierten Beziehungen verknüpft werden.



ZitatEine so detaillierte Normalisierung wäre da nicht zielführend. Da reicht der Freitext

Das muss ich dann wohl so hinnehmen  ;)  .  Einige Überlegungen wäre es aber trotzdem wert, auch in Hinblick auf evtl. Erweiterungen.
Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: Smoere78 am Mai 07, 2017, 21:05:43
Hallo Franz,

also ich hab jetzt ein paar Tage daran getüftelt und mich vor allem mit dem InnerJoin Problem beschäftigt.

Ich habe den Fehler gefunden denke ich. ich hatte aus der Tabelle tbl_RaumSchaeden das Feld "bewohnbar" im Formular mit anzeigen wollen. Ich denke ich werde das Feld in die Tabelle tbl_Raeume überführen und es dann nochmal versuchen.

Im Moment bastle ich an den Berichten und an dem Reservierungstab nach deinem Beispiel.

Die Bezeichnungsfelder sind gerade für mich gedankliche Platzhalter wie ich das Formular weiter aufbauen möchte.

Ich möchte gerne über dem Reservierungstab wie dort veranschaulicht die Reservierung anzeigen, die an dem Tag in dem jeweiligen Raum zutrifft mit Anreise, Abreise und Namen. Ich hab schon ein wenig gegoogelt, habe aber den Verdacht, dass ich hier ohne VBA nicht zum Ziel komme und das kann ich nicht. Hast du eventuell eine Idee wie ich das machen könnte?

Das zweite Problem mit dem ich konfrontiert bin ist eine Abfrage, die ich brauche. Sie soll mir die alle verfügbaren Räume in einem bestimmten Zeitraum in einem Bericht anzeigen. Beim öffnen des Berichts muss der Nutzer nach Start und Enddatum gefragt werden.
Geht das überhaupt mit Access?

Gruß Marcel

Titel: Re: Gruppierung und Druck aller Datensätze zu einem "Raum"
Beitrag von: DF6GL am Mai 08, 2017, 09:54:30
Hallo,


wie letzthin schon angedeutet,  solltest Du Dir noch Gedanken machen über den inhaltlichen Sinn einiger Tabellenfelder.


Was z. B. bedeutet das Feld   "Raum_2030" ?   "Daten"  (--> 2030)  sollten nicht als Namen "missbraucht" werden.


"Res_Weiblich" :  dito. (---> "Res_Gender"   mit false für männlich und true für weiblich  ). Besser wäre hier entweder eine zusätzliche Tabelle, falls es mehr als "m" oder "w" geben sollte, z. B. "Firma" 

Bei "Rschad_Bewohnbar" dürfte es sich um ein Statusfeld handeln, das den Zustand eines Zimmers darstellt, der mehr als den Wert "bewohnbar" annehmen kann (und nicht um eine Angabe, ob ein Schaden zur Bewohnbarkeit führt).


Wenn so, dann ist es sinnvoll, um eine Tabelle "tbl_Zimmerstatus"  zu erweitern und die mit tbl_Raeume in Beziehung zu setzen.

Denkbar wäre es auch, den Status überhaupt nur zu berechnen aus anderen vorhandenen Grunddaten (die allerdings jetzt im Tabellenaufbau noch fehlen).


Formulare aufzubauen, ist erst dann sinnvoll, wenn alle Tabellen und -felder  logisch korrekt Deine reale Situation (Datenzustand und Arbeitsabläufe) "simulieren".


Einen Bericht mit entspr. Abfrage aufzubauen ist eher eine "normale" Aufgabe.  Natürlich kann das Ergebnis sich nur auf vorhandene (erfasste) Daten beziehen.  Dabei sollte aber beachtet werden, dass Kriterien-Angaben  (hier die Datumsangaben) am Besten über ein zusätzliches (ungebundenes) Formular mit entspr. Textfeldern erledigt werden sollten.  Die Übergabe an den Bericht geschieht mit dem Where-Condition-Parameter bei der Openreport-Methode.

Dafür ist VBA nur marginal nötig. (Ereignisprozedur beim Klick auf einen Button z. B.)